SIGNATE 일본거래소 그룹 뉴스 분석 도전 [모델 구축편3]
규칙.
전술
특징량
AAAAI 2021에서 제시한 spectral residuls라고 불리는 특징량을 사용합니다.
개별 주식의 수익과 시장 전체의 주요 원인과 개별 주식의 주요 원인을 분리하고 시장 전체에서 주요 요소를 제거함으로써 시장 전체의 영향을 제거하는 동시에 수익을 겨냥할 수 있다.PCA를 구체적으로 구현하고 위쪽에서 몇 가지 주요 성분을 제거한다.
이 논문은 세 가지 요소로 구성되어 있다.첫 번째 방법은 개별 주식의 수익을 색인에서 분리한 요인과 개별 주식의 요인(spectral residuls라고 불리며 샤프residuls에 효과적인 부분을 추출하는 것이다).두 번째는 Specrtral residuls에서 향후 Spectral residuls에 분포할 신경 네트워크를 예측하는 제작 방법(특히 time scale의 분형적인 구조를 고려했다)이다.셋째,portoflio의rebalance도specrtralresidual의 예측 분포가 되었다.
요컨대 스펙트럴 리서듀얼스는 투자수익을 주식 수량 S로 활용한 협방차 행렬로, PCA가 환류했다.시간이 전진할 때의 귀환을 고려하다.그러면 리턴은 X.{t}\equiv\left[\vec{r}_{t-H},\cdots,\vec{r}_{t-1}\right]\in\mathbb{R}^{S\times H}. 행 벡터의 평균을 0\tild{X}로 설정합니다.{t} 예
\tilde{X}_{t}=X_{t}-\frac{1}{H}\sum_{i=1}^{H}X_{i}
이것은 특이치를 분해할 수 있다
\tilde{X}_{t} =V_{t}{\rm diag}\left(\sigma_{1},\cdots\sigma_{S}\right)U_{t}
여기는 뷔입니다.{t}는 직교 행렬이고 Hstep에서 얻은return은 V입니다{t}^{\top}\tilde{X}_{t}={\rm diag}\left(\sigma_{1},\cdots\sigma_{S}\right)U_{t}로 표현합니다.여기서 의미를 고려하면 S의 공간과 H의 공간에서 품종 S와 시간 H의 귀환 스트레칭이 축소된 느낌을 통일적으로 바꾼다.그러니까 V.{t}은 가장 변화된 브랜드 그룹입니다.시간 창 H가 지정된 경우 시간 t-H\leqs\leqt-1의 spectral residual 은
\vec{\varepsilon}_{s}=V_{t}{\rm diag}\left(0,\cdots,0,1,\cdots1\right)V_{t}^{\top}\vec{r}_{s}
이전 C 피쳐 값을 0으로 설정한 경우 반환 벡터.Hstep에서 가장 많이 변한 브랜드 조합을 제거한 것을 spectral residual이라고 하는 것이다.논문에서 H=256, C=30은 메모리의 관계로 H=64, C=7을 사용했다.
def residual_feature(input_df, H = 64, C = 7):
assert C <= H
tmp = input_df.loc[:, ['Local Code', 'EndOfDayQuote ExchangeOfficialClose']]
ret_df = tmp[['Local Code']].copy()
for diff in tqdm(range(1, H+1)):
_df = tmp.groupby('Local Code').pct_change(diff).rename(columns={'EndOfDayQuote ExchangeOfficialClose': f'{diff}'})
ret_df = pd.concat([ret_df, _df], axis=1)
ret_df
# noramalize
# fillna = 0 新しいcodeの出現に対応するため
norm_ret_df = pd.DataFrame(ret_df.drop('Local Code', axis=1).fillna(0).values - ret_df.drop('Local Code', axis=1).fillna(0).mean(1).values.reshape(-1,1), index=ret_df.index, columns=ret_df.columns[1:])
norm_ret_df['Local Code'] = ret_df['Local Code']
ret = []
pca = sklearn.decomposition.PCA()
for date in tqdm(norm_ret_df.reset_index()['EndOfDayQuote Date'].unique()):
norm_ret_df = norm_ret_df
x = norm_ret_df.loc[date].set_index('Local Code')
x = x.fillna(0.0)
x = x.replace([np.inf, -np.inf], 0.0)
pca_model = pca.fit(x)
new_x = pca_model.transform(x)
new_x[:, :C] = 0.0
new_x = pca_model.inverse_transform(new_x)
tmp_df = pd.DataFrame(new_x, columns=x.columns, index=x.index)
tmp_df['EndOfDayQuote Date'] = date
ret.append(tmp_df)
ret = pd.concat(ret, axis=0)
ret = ret.reset_index().sort_values(['Local Code', 'EndOfDayQuote Date']).set_index('EndOfDayQuote Date')
return ret.drop(['Local Code'], axis=1)
Light gbm 배우기결실
일주일의 반격량은 0.61%(좋지 않다)
선택한 각 브랜드의 귀환
예측된 특징량 벡터의 해석을 들었다
특징량 벡터 재검토
지난번까지의 특징량 벡터에spectral residuals를 더해 보세요.가까스로 시장 전체의 영향을 없애고 더한 이론적 모순을 더했다.
1주일의 리베이트는 5.57%(미묘하다
각주
[2] 이전 글
↩︎ Deep Portfolio Optimization via Distributional Prediction of Residual Factors
Reference
이 문제에 관하여(SIGNATE 일본거래소 그룹 뉴스 분석 도전 [모델 구축편3]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/ymd/articles/0c5596fc097e6d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)