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을 구축할 수 있다.
댓글
댓글 쓰기