2017-04-16 11 views
0

저는 현재 단일 자산 백 테스트를 구현하려고합니다. ztore가 특정 임계 값 아래로 내려갈 때 구매 신호가 생성되고 임계 값을 초과 할 때이를 판매합니다.Z-Score backtest에서 정권을 채우는 방법?

df1 = pd.read_csv('XBT.csv', index_col = 0) 
df1 = df1.drop(['ADJUSTED','VOLUME'], axis = 1) 
df1.head() 

         OPEN  HIGH   LOW  CLOSE 
Date     
2016-09-25 22:00:00 600.1650 600.2850 599.3190 599.4575 
2016-09-25 22:01:00 599.4550 600.1605 599.2980 599.5125 
2016-09-25 22:02:00 599.5101 601.0850 599.2945 600.1450 
2016-09-25 22:03:00 600.2950 600.6150 599.3290 599.3350 
2016-09-25 22:04:00 599.3350 600.1400 599.3350 599.6972 

또한 zscore, 임계 값 및 누적 반환 값을 계산했습니다.

window = 300 #HYPERPARAMETER 5 hours lookback 
df1['zScore'] = (df1['CLOSE'] - df1['CLOSE'] .rolling(60).mean())/df1['CLOSE'] .rolling(60).std() 
df1 = df1.dropna() 
entryZscore = 4 #HYPERPARMETER arbitrary naumber based on visual observations 
exitZscore = 0 #HYPER PARAMETER 
df1['cumret'] = df1['CLOSE'].divide(df1['CLOSE'].ix[0]) 


         OPEN HIGH   LOW  CLOSE zScore cumret 
Date       
2016-09-25 22:59:00 599.8950 600.1239 599.5101 599.5376 -0.068662 1.000000 
2016-09-25 23:00:00 599.5626 600.0743 599.5500 599.5775 0.001960 1.000067 
2016-09-25 23:01:00 599.5750 600.0372 599.2800 599.9372 0.656922 1.000667 
2016-09-25 23:02:00 600.3245 600.3245 598.5426 599.8000 0.416065 1.000438 
2016-09-25 23:03:00 599.8000 599.9950 599.8000 599.9901 0.749235 1.000755 

우리는 (1), 쇼트 (-1) 또는 중립 (0) 이후 전략 반환 값을 생성하는 긴 여부를 나타낼 것이다 저 정권 값을 생성한다하는 문제. 나는 진입 점과 출구 점을 만들어 냄으로써 시도했지만 여기에서 붙어있다. 어떤 도움이라도 대단히 감사하겠습니다!

df1['long entry'] = np.where((df1.zScore < - entryZscore) & (df1.zScore.shift(1) > - entryZscore), 1, 0) 
df1['long exit'] = np.where((df1.zScore > - exitZscore) & (df1.zScore.shift(1) < - exitZscore),1, 0) 
df1['short entry'] = np.where((df1.zScore > entryZscore) & (df1.zScore.shift(1) < entryZscore),1, 0) 
df1['short exit'] = np.where((df1.zScore < exitZscore) & (df1.zScore.shift(1) > exitZscore),1, 0) 
df1['close pct ch'] = df1['CLOSE'].pct_change() 
df1 = df1.dropna() 

답변

0

위치를 추적하려면 전체 위치 관리 시스템을 구현해야합니다. 당신은 이미 이러한 것들을 지원하는 플랫폼을 사용해야한다. 그래서 당신은 실제로 거래 알고리즘에 초점을 맞춘다.

필자는 Quantopian에 대한 회사의 고민 조사를 보았습니다. https://www.quantopian.com/posts/campbell-hilscher-szilagyi-chs-model-probability-of-corporate-failure 노트북이 오래되어 더 이상 실행되지 않을 수도 있지만 전체 아이디어가 있습니다.