커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 대기중
4-6차 최적의 단기, 장기 이동평균선 계산 NaN 오류
undefined주차
북마크
백*정
댓글
0
추천
0
조회수
3
조회수
3
답변 대기중

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.


최적의 단기 이평선, 장기 이평선을 구할 때 장기에 90 수치값을 넣으면 수익률이 NaN 오류가 나는데 이럴 땐 어떻게 해야 하나요?

장기에 60을 넣으면 정상적으로 나옵니다.

장기가 60까지만 한정되어 있는건가요?

보통 대표적인 장기 이평선은 90일이어서 90일로 백테스팅 해보려고 했는데 계산이 안 되서 난감하네요.. 도움 부탁드립니다!




단기 이평선 90일 오류 화면

스파르타 즉문즉답




장기 이평선 60일 정상 화면


스파르타 즉문즉답





작성한 코드 및 에러 메세지

오류 발생 시, 작성한 코드 전체와 에러 메시지를 첨부해 주세요.

Tip 1) </> 아이콘을 눌러 코드박스를 만들어 보세요.

Tip 2) Ctrl+A(맥의 경우 Command+A) 단축키로 코드를 한 번에 선택할 수 있어요!

def get_return_sl(code, short, long):




  df = fdr.DataReader(code,'2018')




  df = df[['Close']].copy()




  df['ma1'] = df['Close'].rolling(short).mean().shift(1)

  df['ma2'] = df['Close'].rolling(long).mean().shift(1)

  df['action'] = np.where(df['ma1']>df['ma2'],'buy', 'sell')




  cond1 = (df['action'] =='buy') & (df['action'].shift(1) =='sell')

  cond2 = (df['action'] =='sell') & (df['action'].shift(1) =='buy')




  df.iloc[-1,-1] = 'sell'




  df_buy = df[cond1].reset_index()

  df_buy.columns =['날짜','종가(buy)','이평값1','이평값2','액션']




  df_sell = df[cond2].reset_index()

  df_sell.columns =['날짜','종가(sell)','이평값1','이평값2','액션']




  df_result = pd.concat([df_buy,df_sell],axis=1)




  df_result['수익률'] = df_result['종가(sell)'] / df_result['종가(buy)']




  df_final = (df_result[['수익률']].cumprod().tail(1) - 1)*100

  df_final['단기'] = short

  df_final['장기'] = long




  return df_final


get_return_sl('005930',10,90)
취소
 공유
취소
댓글 0
댓글 알림
나의얼굴