이평선을 이용한 투자전략 : 골든크로스 발생 시점에 매수하는 경우
이전날 수정 주가와 이평선 데이터 준비
# 하루 전 수정 주가
d['adj_close__l1d'] = d['adj_close'].shift(1, axis=1)
# 하루 전 이평선 가격
for win in sma_winli:
d[f'adj_close_sma{win}d__l1d'] = d[f'adj_close_sma{win}d'].shift(1, axis=1)
골든크로스 조건에 해당하는 멀티인덱스로 기간 수익률 데이터 만들기
# 전체 멀티 인덱스
master_midxs = d['adj_close'].stack(dropna=False).index
# MultiIndex([('A000020', '2018-01-02'),
# ('A000020', '2018-01-03'),
# ('A000020', '2018-01-04'),
# ...
for win in sma_winli:
# 골든크로스에 해당하는 멀티 인덱스
golden_cross_idxs = master_midxs[((d[f'adj_close__l1d'] < d[f'adj_close_sma{win}d__l1d']) & (d[f'adj_close'] > d[f'adj_close_sma{win}d'])).stack(dropna=False)]
# 기간 수익률 데이터
exp[f'ret_goldencross_sma{win}d'] = get_all_return_df_by(d, golden_cross_idxs)
- ((d[f'adj_close__l1d'] < d[f'adj_close_sma{win}d__l1d']) & (d[f'adj_close'] > d[f'adj_close_sma{win}d'])).stack(dropna=False)
- 시리즈 형태 멀티인덱스로 True & False 값을 반환
통계, 그래프 보기
describe_and_aggperf(exp['ret_goldencross_sma20d'])
draw_meanmed_boxplot(exp['ret_goldencross_sma20d'], '20일 이평선 골든크로스');
'퀀트' 카테고리의 다른 글
32. 볼린저 밴드를 이용한 투자 전략 : 상한선 위에서 매수 또는 하한선 아래에서 매수하는 경우 (0) | 2023.01.29 |
---|---|
31. 볼린저 밴드를 이용한 투자 전략 : 볼린저 밴드의 폭 너비에 따라 매수하는 경우 (0) | 2023.01.27 |
29. 이평선 투자 전략 : 정배열 또는 역배열에 매수하는 경우 (0) | 2023.01.25 |
28. 이평선 투자 전략 : 이평선의 위 또는 아래에서 매수하는 경우 (0) | 2023.01.20 |
27. 모든 주식에 대해 보유 기간별 수익률 검증하기 (1) | 2023.01.19 |