
* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.
* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.
최적의 단기 이평선, 장기 이평선을 구할 때 장기에 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)
