量化交易策略

Didier Sornette 利用回報相關性的策略

  • July 22, 2020

Didier Sornette 在他的《為什麼股市崩盤》一書中討論了一種利用回報相關性的交易策略。

考慮退貨 $ r $ 當時發生的 $ t $ 和回報 $ r’ $ 後來發生的 $ t’ $ , 在哪裡 $ t $ 和 $ t’ $ , 是某個時間單位的倍數(比如 5 分鐘)。 $ r $ 和 $ r’ $ 可以分解為平均貢獻和變化部分。我們有興趣量化相關性 $ C(t, t’) $ 在不確定的變化部分之間,定義為變化部分的乘積的平均值 $ r $ 和 $ r’ $ 由收益的變異數(波動性)正規化,因此 $ C(t, t’ = t) = 1 $ (完美的相關性 $ r $ 和它本身)。

一個簡單的數學計算表明,最好的線性預測器 $ m_t $ 為當時的回報 $ t $ ,知道過去的歷史 $ r_{t-1}, > r_{t-2}, \ldots ,r_i, \ldots, $ 是(誰)給的

$$ m_t\equiv\frac{1}{B(t, t)}\sum_{i<t} B(i, t)r_i, $$ 其中每個 $ B(i, t) $ 是一個可以用相關係數表示的因子 $ C(t’, t) $ 並且通常稱為係數 $ (i, t) $ 的逆相關矩陣。這個公式表示每個過去的回報 $ r_i $ 對未來回報的影響 $ r_t $ 與它的值成比例,帶有一個係數 $ B(i, t)/B(t, t) $ 僅當時間之間存在非零相關性時才非零 $ i $ 和時間 $ t $ . 使用此公式,您將擁有最佳線性預測器,因為它將最小化變異數誤差。有了這個預測,你就有了一個強大的交易策略:買如果 $ m_t &gt; > 0 $ (預期未來價格上漲),如果 $ m_t < 0 $ (預計未來價格下降)。

我正在嘗試解決 $ m_t $ 給定以下數據集…

+----------+-----------------+
| t        | r               |
+----------+-----------------+
| 15:50:00 | 0.003705090715  |
| 15:51:00 | 0.003873999746  |
| 15:52:00 | 0.002158853672  |
| 15:53:00 | 0.001246754886  |
| 15:54:00 | 0.005646756563  |
| 15:55:00 | -0.001073638262 |
| 15:56:00 | -0.001804395665 |
| 15:57:00 | 0.002322446782  |
| 15:58:00 | 0.001803468933  |
| 15:59:00 | -0.001686730014 |
| 16:00:00 | 0.0008781111203 |
+----------+-----------------+

首先,我為時間滯後創建一個矩陣 $ r_{t}, r_{t-1}, r_{t-2}, r_{t-3}, r_{t-4} $ , 稱為 $ \color{blue}{\mathbf M} $ …

$$ \begin{bmatrix} \color{blue}{0.00087811} & \color{blue}{-0.00168673} & \color{blue}{0.00180347} & \color{blue}{0.00232245} & -0.0018044 \ -0.00168673 & 0.00180347 & 0.00232245 & -0.0018044 & -0.00107364 \ 0.00180347 & 0.00232245 & -0.0018044 & -0.00107364 & 0.00564676 \ 0.00232245 & -0.0018044 & -0.00107364 & 0.00564676 & 0.00124675 \ -0.0018044 & -0.00107364 & 0.00564676 & 0.00124675 & 0.00215885 \ \end{bmatrix} $$ 和 $ \color{blue}{\mathbf M} $ 我能夠創建一個相關矩陣,稱為 $ \color{green}{\mathbf C} $ … $$ \begin{bmatrix}

  1. & \color{green}{-0.15885375} & -0.88120533 & 0.52518141 & 0.32904361 \ -0.15885375 & 1. & \color{green}{-0.27689212} & -0.87324435 & 0.43345156 \ -0.88120533 & -0.27689212 & 1. & \color{green}{-0.16496963} & -0.38678436 \ 0.52518141 & -0.87324435 & -0.16496963 & 1. & \color{green}{-0.18292072} \ 0.32904361 & 0.43345156 & -0.38678436 & -0.18292072 & 1. \ \end{bmatrix} $$ 及其倒數,稱為 $ \color{red}{\mathbf I} $ … $$ \begin{bmatrix} \color{red}{678.1834365} & -47.5405215 & 305.9166473 & -205.4095813 & -138.3472675 \ -47.5405215 & 557.4221492 & 89.6736779 & 245.3640449 & -138.7710611 \ 305.9166473 & 89.6736779 & 111.2290498 & -89.4926475 & 61.0341470 \ -205.4095813 & 245.3640449 & -89.4926475 & 323.4950056 & -2.4011426 \ -138.3472675 & -138.7710611 & 61.0341470 & -2.4011426 & 120.3071511 \ \end{bmatrix} $$ 接下來我解決… $$ \sum_{i<t} \color{green}{B(i, t)}\color{blue}{r_i}, $$ 如下… $$ \color{green}{\mathbf{C}[0][1]} \left( \color{blue}{\mathbf{M}[0][0]} \right) + \color{green}{\mathbf{C}[1][2]} \left( \color{blue}{\mathbf{M}[0][1]} \right) + \color{green}{\mathbf{C}[2][3]} \left( \color{blue}{\mathbf{M}[0][2]} \right) + \color{green}{\mathbf{C}[3][4]} \left( \color{blue}{\mathbf{M}[0][3]} \right) = -0.000394790246734 $$ 最後我乘以 $ \frac{1}{B(t,t)} $ 認為等於 $ \color{red}{\mathbf{I}[0][0]} $ … $$ \begin{align} m_t & = -0.000394790246734\left( \frac{1}{B(t,t)} \right) \ & = -0.000394790246734\left( \color{red}{\mathbf{I}[0][0]} \right) \ & = -0.000394790246734\left( 678.1834365 \right) \ & = -0.267740206251 \ \end{align} $$ 我解決了嗎 $ m_t $ 正確嗎?

我不明白為什麼 t 在 B(t,t) 中為零,而在 B(i,t) 中為 1,2,3,4。為什麼你將值 B(i,t) 解釋為 C 的倒數,而不是 B(t,t)?我認為 B(i,t) 是 I 的第一列。逆矩陣由 Matrix^-1 定義。但是,B(*) 是一個值。所以,你應該除以 B(t,t)。在這裡,你將它相乘。

為什麼你不只做最小二乘回歸?它可能不穩定不是嗎?

引用自:https://quant.stackexchange.com/questions/36420