일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 금융딥러닝
- AFML
- 금융머신러닝
- 테슬라 #tesla #ai #퀀트
- 틱
- 틱데이터
- 실전 금융 머신 러닝 완벽 분석
- 아비트라지랩 #arbitragelab #아비트라지 #arbitrage #residual #reversion #residualreverstion #hudsonthames #허드슨
- >
- Today
- Total
알파트로스
[ArbLab] 1. Cointegration (4) Minimum Profit Strategy 본문
[ArbLab] 1. Cointegration (4) Minimum Profit Strategy
알파트로스 2024. 7. 4. 21:58cointegration에서 spread 는 cointegration error로 두 단어는 혼용하여 사용됨
페어트레이딩의 가장 일반적인 전략중의 하나는 스프레드()가 균형 상태에서 충분히 멀리 떨어져 있을 때 Trade를 open하여 스프레드가 평균으로 회귀할 것을 예상하는 것이다. 이때 충분히 멀리 떨어졌을 때(=Boundary)을 사전적으로 잘 정의하는 것이 필요하다.이 경계값은 기간동안의 minimum profit에 영향을 준다.
- 경계값이 크면 거래당 이익은 커지지만 거래 횟수가 작을 수 있다
- 경계값이 낮으면 거래 횟수는 늘어나지만 거래당 이익이 작다
- 특정 기간동안의 거래 횟수는 average trade duration과 average inter-trade interval 에 영향을 받는다
Minimum Profit Strategy는 cointegration error가 AR(1) process를 따를때 mean first-passage time의 기반하여 average trade duration, average inter-trade interval, average number of trades를 수치적으로 추정하여 총이익 최대화하는 Boundary 설정법에 대해 논의한다.
Assumption
- 두 자산(\(S_1\)과 \(S_2\))의 가격은 관련 기간 동안 공적분되어 있다. 즉 장기적인 균형 관계가 존재한다는 것을 의미한다.
- 공적분 오차는 정상적인 AR(1) 과정을 따른다. 즉 평균회귀하는 성질을 갖는다.
- 공적분 오차는 대칭적으로 분포되어 있어 평균 양쪽에 최적의 경계값을 적용할 수 있다.
- 공매도가 허용되거나 브로커를 통해 가능하며, 공매도에 대한 이자가 부과되지 않고 거래 비용이 고려된다.
- 공적분 계수 \(\beta > 0\)이며, 공적분 관계는 다음과 같이 정의된다.
\[
P_{S_1,t} - \beta P_{S_2,t} = \varepsilon_t
\]
Minimum Profit per Trade
U-Trade 와 L-Trade
- U-Trade : 공적분 오차 \(\varepsilon_t\)가 사전 설정된 상단 경계 \(U\)를 초과할 때 열리는 거래
주식 \(S_1\): 매도 (short), 주식 \(S_2\): 매수 (long) - L-Trade : 공적분 오차 \(\varepsilon_t\)가 사전 설정된 하단 경계 \(L\)을 통과할 때 열리는 거래
주식 \(S_1\): 매수 (long), 주식 \(S_2\): 매도 (short)
Minimum Profit per U-trade
- 진입 시점 \(t_o\) : \(\varepsilon_t \geq U\)일 때 거래를 시작
자산 \(S_1\)을 \(N\)만큼 매도, 자산 \(S_2\)을 \(\beta N\)만큼 매수합니다. - 청산 시점 \(t_c\) : \(\varepsilon_t \leq 0\)일 때 거래를 청산
- 거래당 수익
\begin{align*}
P & = N (P_{S_1, t_o} - P_{S_1, t_c}) + \beta N (P_{S_2, t_c} - P_{S_2, t_o}) \\
& = N (P_{S_1, t_o} - \beta P_{S_2, t_o}) - N (P_{S_1, t_c} - \beta P_{S_2, t_c}) \\
& = N \varepsilon_{t_o} - N \varepsilon_{t_c} \\
& \geq N U
\end{align*}- 자산 \(S_1\)의 진입 시점 가격 \(P_{S_1, t_o}\)와 청산 시점 가격 \(P_{S_1, t_c}\) 간의 차이
자산 \(S_2\)의 청산 시점 가격 \(P_{S_2, t_c}\)와 진입 시점 가격 \(P_{S_2, t_o}\) 간의 차이. - \(P_{S_1, t_o} - \beta P_{S_2, t_o} = \varepsilon_{t_o}\)와 \(P_{S_1, t_c} - \beta P_{S_2, t_c} = \varepsilon_{t_c}\)로 대체.
- 스프레드의 진입 시점 공적분 오차와 청산 시점 공적분 오차의 차이로 수익 계산.
- 진입 시점의 공적분 오차가 \(U\) 이상이고, 청산 시점의 공적분 오차가 0 이하이므로, 최소한 \(N U\)의 수익
- 자산 \(S_1\)의 진입 시점 가격 \(P_{S_1, t_o}\)와 청산 시점 가격 \(P_{S_1, t_c}\) 간의 차이
Minimum Profit per L-trade
- 진입 시점 \(t_o\) : \(\varepsilon_t \leq -U\)일 때 거래를 시작
자산 \(S_1\)을 \(N\)만큼 매수, 자산 \(S_2\)을 \(\beta N\)만큼 매도 - 청산 시점 \(t_c\) : \(\varepsilon_t \geq 0\)일 때 거래를 청산
- 거래당 수익
\begin{align*}
P & = N (P_{S_1, t_c} - P_{S_1, t_o}) + \beta N (P_{S_2, t_o} - P_{S_2, t_c}) \\
& = N (P_{S_1, t_c} - \beta P_{S_2, t_c}) - N (P_{S_1, t_o} - \beta P_{S_2, t_o}) \\
& = N \varepsilon_{t_c} - N \varepsilon_{t_o} \\
& \geq N U
\end{align*}- 자산 \(S_1\)의 청산 시점 가격 \(P_{S_1, t_c}\)와 진입 시점 가격 \(P_{S_1, t_o}\) 간의 차이
자산 \(S_2\)의 진입 시점 가격 \(P_{S_2, t_o}\)와 청산 시점 가격 \(P_{S_2, t_c}\) 간의 차이. - \(P_{S_1, t_c} - \beta P_{S_2, t_c} = \varepsilon_{t_c}\)와 \(P_{S_1, t_o} - \beta P_{S_2, t_o} = \varepsilon_{t_o}\)로 대체.
- 스프레드의 청산 시점 공적분 오차와 진입 시점 공적분 오차의 차이로 수익 계산.
- 진입 시점의 공적분 오차가 \(-U\) 이하이고, 청산 시점의 공적분 오차가 0 이상이므로, 최소한 \(N U\)의 수익
- 자산 \(S_1\)의 청산 시점 가격 \(P_{S_1, t_c}\)와 진입 시점 가격 \(P_{S_1, t_o}\) 간의 차이
Both U-trades and L-trades would make a minimum profit per trade of if one unit of the cointegrated pair was traded.
Minimum Total Profit (MTP)
거래를 시작하는 경계값 \(U\)는 스프레드 평균 양쪽에 대칭적으로 적용하므로 이 섹션에서는 U-trade에만 집중하며, U-trade는 결과를 단순히 두 배 하면 된다. (이 말은 실질적으로 사용할때 달라질 수 있다)
U-trade 하나당 최소 이익을 도출하였으니 그 다음으로는 거래 기간 \( [0, T] \) 동안의 총수익 MTP이다
거래 기간 동안 충분한 거래를 허용하고 총 이익을 최대화할 수 있는 최적의 경계값 \( U \)를 찾고자 한다.
- MTP 정의(U의함수)
\begin{equation}
MTP(U) = \Big( \frac{T}{{TD}_U + I_U} - 1 \Big) U
\end{equation}- \( {TD}_U \)는 거래 기간(trade duration)
- \( I_U \)는 거래 간격(inter-trade interval)
- \( U \) : 스프레드가 상한을 초과할 때 시작, 평균으로 돌아왔을 때 종료되므로 최소한 \(U\)의 이익을 얻음
- 거래 횟수
\begin{equation}
\frac{T}{{TD}_U + I_U} - 1
\end{equation}
주어진 거래 기간 동안 발생하는 U-trade의 총 횟수를 의미한다.
\({TD}_U + I_U\)는 하나의 U-trade가 시작되고 종료된 후 다음 U-trade가 시작되기까지 걸리는 총 시간을 의미한다
따라서, 전체 거래 기간 \(T\)를 이 시간으로 나누어 주어진 기간 동안 발생할 수 있는 U-trade의 총 횟수를 계산한다
마지막으로, 계산된 값에서 1을 빼서 첫 번째 거래 전의 간격을 제외한다
ex) 전체 거래 기간 \(T = 100\)일, \({TD}_U = 5\)일, \(I_U = 2\)일이라고 가정하면 약 13번의 U-trade가 발생할 것으로 예상할 수 있다.
\[
\text{거래 횟수} = \frac{100}{5 + 2} - 1 = \frac{100}{7} - 1 \approx 14.29 - 1 = 13.29
\] - 공적분 오차 \(\varepsilon_t\)
모델 가정에 따라 정상적인 AR(1) 과정을 따름
\begin{equation}
\varepsilon_t = \phi \varepsilon_{t-1} + a_t \qquad a_t \sim N(0, \sigma_a^2) \text{ i.i.d}
\end{equation} - \( {TD}_U \)
초기 값 \(U\)에서 \(0\)까지의 첫 번째 도달 시간
\(\varepsilon_t\)의 평균을 \(0\)으로 가정하면, \( {TD}_U \)는 초기 값 \(\varepsilon_{t} = U\)인 상태에서 \(\varepsilon_t\)가 처음으로 \(0\)을 통과하는 평균 시간을 계산하여 추정할 수 있다
\begin{equation}
{TD}_U = E(\mathcal{T}_{0, \infty}(U)) = \lim_{b \to \infty} \frac{1}{\sqrt{2 \pi} \sigma_a} \int_0^b E(\mathcal{T}_{0, b}(s)) \text{ exp} \Big( - \frac{(s- \phi U)^2}{2 \sigma_a^2} \Big) ds + 1
\end{equation} - \( I_U \)
초기 값 \(0\)에서 \(U\)까지의 첫 번째 도달 시간
유사하게, \( I_U \)는 초기 값 \(\varepsilon_t = 0\)인 상태에서 \(\varepsilon_t\)가 처음으로 \(U\)를 통과하는 평균 시간을 계산하여 추정할 수 있다
\begin{equation}
I_U = E(\mathcal{T}_{- \infty, U}(0)) = \lim_{-b \to - \infty} \frac{1}{\sqrt{2 \pi} \sigma_a} \int_{-b}^U E(\mathcal{T}_{-b, U}(s)) \text{ exp} \Big( - \frac{s^2}{2 \sigma_a^2} \Big) ds + 1
\end{equation}
Numerically Estimating the Integral in the Mean First-passage Time of an AR(1) Process
이 최적화 알고리즘의 핵심은 위에서 언급한 두 개의 적분을 계산하는 것이다.
우선 정상적인 AR(1) 과정을 고려한다
\[
Y_t = \phi Y_{t-1} + \xi_t
\]
- \(-1 < \phi < 1\)
- \(\xi_t \sim N(0, \sigma_{\xi}^2) \text{ i.i.d}\)
평균 첫 도달 시간
구간 \([a, b]\)에 대해 초기 상태 \(y_0 \in [a, b]\)에서 시작하는 \(Y_t\)의 평균 첫 도달 시간 \(E(\mathcal{T}_{a,b}(y_0))\)은 다음과 같다
\[
E(\mathcal{T}_{a,b}(y_0)) = \frac{1}{\sqrt{2 \pi}\sigma_{\xi}}\int_a^b E(\mathcal{T}_{a,b}(u)) \text{ exp} \Big( - \frac{(u-\phi y_0)^2}{2 \sigma_{\xi}^2} \Big) du + 1
\]
이 적분 방정식은 Nystrom 방법을 사용하여 수치적으로 해결할 수 있다.
즉, 다음 선형 방정식을 해결하면 된다:
\[
\begin{pmatrix}
1 - K(u_0, u_0) & -K(u_0, u_1) & \ldots & -K(u_0, u_n) \\
-K(u_1, u_0) & 1 - K(u_1, u_1) & \ldots & -K(u_1, u_n) \\
\vdots & \vdots & \vdots & \vdots \\
-K(u_n, u_0) & -K(u_n, u_1) & \ldots & 1-K(u_n, u_n)
\end{pmatrix}
\begin{pmatrix}
E_n(\mathcal{T}_{a,b}(u_0)) \\
E_n(\mathcal{T}_{a,b}(u_1)) \\
\vdots \\
E_n(\mathcal{T}_{a,b}(u_n))
\end{pmatrix}
=
\begin{pmatrix}
1 \\
1 \\
\vdots \\
1 \\
\end{pmatrix}
\]
여기서 \(E_n(\mathcal{T}_{a,b}(u_0))\)는 적분의 이산 추정값이며, Gaussian 커널 함수 \(K(u_i, u_j)\)는 다음과 같이 정의된다:
\[
K(u_i, u_j) = \frac{h}{2 \sqrt{2 \pi} \sigma_{\xi}} w_j \text{ exp} \Big( - \frac{(u_j - \phi u_i)^2}{2 \sigma_{\xi}^2} \Big)
\]
가중치 \(w_j\)는 사다리꼴 적분 규칙에 의해 정의된다
\[
w_j = \begin{cases}
1 & j = 0 \text{ and } j = n \\
2 & 0 < j < n, j \in \mathbb{N}
\end{cases}
\]
위 선형 방정식 시스템을 해결하는 시간 복잡도는 \(O(n^3)\)이며, 시간이 많이 소요되는 부분이다.
무한 적분의 근사화
\({TD}_U\)와 \(I_U\)의 정의에서 적분 한계가 무한으로 간다. 무한 적분 한계를 근사화하기 위해 다음과 같은 스타일리제이션을 사용할 수 있다: 정적 AR(1) 과정 \(\{ \varepsilon_t \}\)에 대해, 프로세스 \(\vert \varepsilon_t \vert\)의 절대값이 프로세스의 표준 편차의 5배 \(5 \sigma_{\varepsilon}\)보다 큰 확률은 거의 0에 가깝다. 따라서, 적분에서 무한 한계의 근사치로 \(5 \sigma_{\varepsilon}\)를 사용할 수 있다.
Optimization
MTP(Maximum Total Profit)를 최대화하는 Bound를 최적화하는 수치 알고리즘을 다음과 같이 정리할 수 있다
- Engle-Granger 또는 Johansen 테스트를 수행하여 공적분 계수 \(\beta\)를 도출한다.
- 공적분 오차 \(\varepsilon_t\)를 AR(1) 과정에 적합하고 AR(1) 계수와 적합된 잔차를 얻는다
\[\varepsilon_t = \phi \varepsilon_{t-1} + a_t \quad a_t \sim N(0, \sigma_a^2)\] - 공적분 오차의 표준 편차 \(\sigma_{\varepsilon}\)와 적합된 잔차의 표준 편차 \(\sigma_a\)를 계산한다.
- 사전 설정된 일련의 상한 \(U_i\)를 생성한다. \(U_i = i \times 0.01, \> i = 0, \ldots, b/0.01\), 여기서 \(b = 5 \sigma_{\varepsilon}\)이다
- 각 \(U_i\)에 대해 다음을 수행한다
a. \({TD}_{U_i}\)를 계산
- 평균 첫 통과 시간을 이용하여 계산한다.
- 이는 \(\varepsilon_t\)가 \(U_i\)에서 0으로 돌아가는 데 걸리는 평균 시간
b. \(I_{U_i}\)를 계산
- 이는 \(\varepsilon_t\)가 0에서 \(U_i\)로 돌아가는 데 걸리는 평균 시간
- 이 단계가 최적화 속도의 주요 병목 지점이다
c. \(MTP(U_i)\)를 계산 \[MTP(U) = \left( \frac{T}{{TD}_U + I_U} - 1 \right) U\] - \(MTP(U^{*})\)가 최대가 되는 \(U^{*}\)를 찾는다
- 원하는 최소 이익 \(K \geq U^{*}\)을 설정하고 다음 식에 따라 거래할 자산 수를 계산한다.
\[
N_{S_2} = \left\lceil \frac{K \beta}{U^{*}} \right\rceil \\
N_{S_1} = \left\lceil \frac{N_{S_2}}{\beta} \right\rceil
\]
https://hudsonthames.org/notebooks/arblab/minimum_profit_optimization.html
minimum_profit_optimization
Although the paper suggested the usage of a 12-month training period and a 6-month trading period with daily data, our results found that the choice of 12-month and 6-month is arbitrary and the performance was not affected if a longer training period was u
hudsonthames.org
Cointegration Approach.Minimum Profit 클래스는 최적의 진입 및 종료 수준(예: buy_level, close_level, sell_level)과 공적분된 페어에서 거래할 주식 수(예: shares_A, shares_B)를 구할 수 있다.
스프레드 계산
\[
\text{Spread} = \text{PriceA} + \beta \cdot \text{PriceB}
\]
- 매수 신호 : 스프레드 값이 buy_level 아래로 떨어지면 매수 거래를 open한다. 즉, shares_A를 롱하고 shares_B를 숏한다
- 매도 신호 : 스프레드 값이 sell_level 위로 올라가면 매도 거래를 open한다. 즉, shares_A를 숏하고 shares_B를 롱한다.
- 포지션 청산 : 스프레드 값이 close_level에 도달하면 매수 또는 매도 거래를 close 한다
트레이딩
이 전략은 한 번에 하나의 열린 거래만을 가정한다.
https://hudson-and-thames-arbitragelab.readthedocs-hosted.com/en/latest/trading/minimum_profit.html
Minimum Profit Strategy — arbitragelab 1.0.0 documentation
Minimum Profit Strategy The Minimum Profit class from the Cointegration Approach generates optimal entry and exit levels (buy_level, close_level, sell_level) as well as number of shares (shares_A, shares_B) to trade per asset in a cointegrated pair. The st
hudson-and-thames-arbitragelab.readthedocs-hosted.com
Minimum Profit Optimization — arbitragelab 1.0.0 documentation
Generate a sequence of pre-set upper bounds \(U_i\), where \(U_i = i \times 0.01, \> i = 0, \ldots, b/0.01\), and \(b = 5 \sigma_{\varepsilon}\).
hudson-and-thames-arbitragelab.readthedocs-hosted.com
'HudsonThames > ArbitrageLab' 카테고리의 다른 글
[ArbLab] Hedge Ratio (1) | 2024.07.08 |
---|---|
[ArbLab] 1. Cointegration (5)Multivariate Cointegration Strategy (0) | 2024.07.08 |
[ArbLab] 1. Cointegration (3) Hurst exponent/Half-life (0) | 2024.07.04 |
[ArbLab] 1. Cointegration (2) Tests for Cointegration (0) | 2024.07.04 |
[ArbLab] 1. Cointegration (1) An Introduction to Cointegration for Pairs Trading (0) | 2024.07.03 |