7.3.7 모델을 바탕으로 전략 실행
전략은 단순하다. predict 함수는 매수 신호 +1과 매도 신호 -1을 만든다. 한 주를 사고 한 주를 파는 매매 수량이기도 하다. 따라서 S&P500의 수익률에 다음 거래일의 신호를 곱하면 예측한 신호에 따라 매매를 한 수익률이 된다. 실무상 이렇게 되지는 않지만, 예시로서 S&P500의 전일 일간수익률이 0.2%이고 당일 매수 신호가 +1일 때 이를 곱해 당일의 수익률을 0.2%로 보자는 것이다. 반대로 매도 신호 -1을 곱하면 당일에 0.2% 손실이 발생한 것이다.
예측 신호를 만들어 데이터프레임 df에 'Signal' 컬럼을 만들고 +1 또는 -1을 저장한다.
df[ 'Signal' ] = knn.predict( X )
전 기간에 걸쳐 S&P500의 일간수익률(로그수익률)을 구한다. 그리고 검증 기간의 데이터 df[ split: ]에서 S&P500의 일간수익률 df[ split: ][ 'SPY_Returns' ]를 누적해 누적수익률을 구하고 Cum_SPY_Returns에 저장한다.
df[ 'SPY_Returns' ] = np.log( df[ 'Close']/df[ 'Close' ].shift(1) )
Cum_SPY_Returns = df[ split: ][ 'SPY_Returns' ].cumsum( )*100