yahooニュース 産経新聞、首相「腹を割って意見交換」 7、8日に訪韓し尹大統領と会談 岸田文雄首相は1日(日本時間2日)、7~8日の日程で韓国を訪問し、尹錫悦(ユン・ソンニョル)大統領と会談する方向で調整(ちょうせい)していると明らかにした。訪問先(ほうもんさき)のガーナで記者団の取材に答えた。首相は尹氏が3月に来日(らいにち)した際(さい)、首脳同士が相互(そうご)に訪問する「シャトル外交」の再開(さいかい)で合意(ごうい)しており、その第1弾(いちだん)となる。 続いて、日本政府は4月28日に韓国を輸出手続き簡略化などの優遇措置の対象国となる「グループA(旧ホワイト国)」に再指定(さいしてい)する方針を発表したが、首相の訪韓(ほうかん)で成果(せいか)を示(しめ)せるかが焦点(しょうてん)になると書いていました。 日韓関係が改善されているようでうれしい記事でした。
이벤트 기반의 표본 추출
포트폴리오 매니저는 시장 구조적 변화, 추출된 신호 혹은 미시 구조적 현상 등 어떤 사건이 발생한 후에 사후 판단하여 베팅을 한다. 이러한 이벤트들은 대개 변동성 확대, 스프레드의 이탈, 거시경제지표 등과 연계되어 있을 수 있다.
프라도 교수는 이벤트를 중대한 것으로 특징지을 수 있고, 머신러닝을 활용해 이벤트가 발생한 부분을 Labeling하여 학습시키면 충분히 예측할 수 있는 학습기를 만들수 있다고 한다. (후에 기술하겠지만, Meta Labeling 기법의 가장 중요한 아이디어라고 할 수 있다)
Cumulative Sum filter는 품질 통제 기법으로서 측정값이 목표값의 평균으로부터 얼마나 벗어났는지 확인하는 필터이다. 즉, 시장흐름의 기대값을 벗어나면 이벤트가 발생되었다고 보는 것이다. 물론, 여기서 기대값을 정하는 것은 사용자의 영역이므로 Hyper Parameter라고 볼 수 있다.
CUSUM Filter
Locally stationary process에서 발생한 관측값을 생각해 보자. 누적 합계는 다음과 같이 정의한다.
S_t = \max \{0, S_{t-1} + y_t - E_{t-1}[y_t]\}
여기서 경계 조건은 S_0 = 0 이다. 이 절차는 특정 임계값에 대해 S_t \leq h 를 만족하는 첫 번째 시간 t에서의 행동을 추천할 것이다.y_t \geq E_{t-1}[y_t] - S_{t-1}일 때마다 S_t=0이다.
0 floor는 S_t가 음수가 되지 못하도록 하방 편차를 무시할 것을 의미한다. 그 이유는 필터가 모든 재설정 레벨 0으로부터 위로 발산하는 시퀀스를 식별하도록 설정됐기 때문이다.
특히 임계값은 다음의 경우에 활성화된다
S_t \leq h \Leftrightarrow \exists \tau \in [1,t] \Big| \sum_{i=\tau} ^t (y_i - E_{I-1} [y_t]) \leq h
이러한 개념은 upper bound와 lower bound 모두 적용이 가능하다. 이는 대칭 \mathbf{CUSUM} 필터를 형성한다.
\begin{align}S_t^+ = \max\{0, S^+_{t-1} + y_t - E_{t-1}[y_t]& \}, ~~~ S_0 ^ + = 0\\ S_t^- = \min\{0, S^-_{t-1} + y_t - E_{t-1}[y_t]& \}, ~~~ S_0 ^ - = 0\\ S_t = \max\{S_t^+, S_t^-\} \end{align}
S_t \leq h일 때만 바를 표본 추출한다. Financial Machine Learning Library에서는 다음과 같이 간편하게 사용이 가능하다. 아래의 결과는 KOSPI 200 선물 2020년 가격 데이터의 표본 추출된 결과이다.
import FinancialMachineLearning as fml
event = fml.cumsum_events(dollar['price'], limit = 6) cusum_event = dollar.iloc[event,:] dollar['cumsum filter'] = np.nan dollar.iloc[event, -1] = 1
Rolling Volatility
VaR (Value at Risk) 혹은 많은 경우에서 변동성의 추정은 긴 기간동안의 risk를 이용해 추정한다. 그러나 이러한 방식의 위험 추정은 한편으로는 과소 추정을 하거나, 어떨 때에는 과대 추정의 문제를 야기할 수 있다. 때문에, Bollinger Band 구축을 위한 Volatility를 아래와 같은 방법으로 일별 평균 변동성으로 구하면 현재 수준의 적절한 위험 구간을 설정할 수 있다.
import FinancialMachineLearning as fml
close = dbars.price.copy()
dailyVol = fml.getDailyVolatility(close)
Triple Barrier Method
Prado(2018)는 2개의 Horizontal Barrier, 1개의 Vertical Barrier를 이용해 가장 먼저 도달한 Barrier를 이용하여 Labeling하는 방법을 고안하였다. 두 개의 Horizontal Barrier는 각각 손실 한도와 이익 실현 한도이며, Vertical Barrier는 포지션의 보유 기간을 의미한다. 상단 수평 베리어에 도달하면 1로, 하단 수평 베리어에 도달하면 -1로 Labeling하며, Vertical Barrier에 먼저 도달한 경우 포지션 보유 기간 내에서 수익의 달성 여부를 통해 1과 -1중 하나로 Labeling 하면 되거나, 0으로 Labeling을 한다. (저자는 전자의 경우를 선호한다고 한다)
Financial Machine Learning Library에서는 다음과 같이 간편하게 Triple Barrier 구축이 가능하다
import FinancialMachineLearning as fml
minRet = .001
ptSl = [1,2]
ma_events = fml.triple_barrier(close, tEvents, ptSl, target, minRet, cpus, t1 = t1, side = side)
Bollinger Band
Triple Barrier Method를 통해서 아래와 같이 매도 매수 Signal을 구축할 수 있다.
댓글
댓글 쓰기