alphas
(-1 * ts_corr(rank(ts_delta(log(volume), 2)), rank(((close - open) / open)), 6))
先分析操作符從左到右
ts_corr:
Pearson 相關度量兩個變量之間的線性關系。當變量呈正態分布且關系呈線性時,它最有效。
`ts_corr(vwap, close, 20)`是一個計算時間序列相關性的函數,下面用金融知識和數據表格來解釋它。 - **函數參數含義** - `vwap`:即成交量加權平均價格(Volume - Weighted Average Price),是一種常見的技術分析指標。它通過將每一筆交易的價格乘以該筆交易的成交量,然后將所有交易的結果相加,再除以總成交量得到。VWAP 可以反映出在一定時間段內市場交易的平均價格水平,常用于衡量機構投資者的交易成本和評估市場的整體交易價格趨勢。 - `close`:指的是收盤價,是每個交易日結束時證券的成交價格。收盤價在技術分析中具有重要地位,它代表了當日交易結束時市場對該證券的定價,常被用于分析價格趨勢、繪制圖表以及計算各種技術指標。 - `20`:表示時間窗口的大小為20個交易日。這意味著函數將計算過去20個交易日內 `vwap` 和 `close` 之間的相關性。 - **計算與結果分析** - 假設我們有以下表格數據,展示了某股票連續20個交易日的 `vwap` 和 `close` 價格: | 交易日 | VWAP | 收盤價(Close) || ---- | ---- | ---- || 1 | 50.2 | 50.5 | | 2 | 50.5 | 50.8 | | 3 | 50.8 | 51.0 | |... |... |... | | 20 | 55.0 | 55.5 | -計算 `ts_corr(vwap, close, 20)` 就是要分析這20個交易日里 `vwap` 和 `close` 這兩組數據之間的線性相關程度。相關性的取值范圍在 -1 到 1 之間。 - 如果結果接近1,說明 `vwap` 和 `close` 在這20個交易日內呈現出很強的正相關關系,即當 `vwap` 上升時,收盤價也傾向于上升,兩者的變動趨勢較為一致。這可能表明市場交易價格的整體趨勢較為穩定,成交量加權平均價格與收盤價之間存在緊密的聯系,市場參與者在這段時間內的交易行為相對一致,推動價格同步變動。 - 如果結果接近 -1,則表示 `vwap` 和 `close` 呈現很強的負相關關系,這種情況在實際金融市場中相對較少見,但可能出現在一些特殊時期或特定市場環境下,例如市場出現大幅波動、多空力量激烈對抗導致成交量加權平均價格與收盤價出現相反的變動趨勢。 - 如果結果接近0,說明 `vwap` 和 `close` 之間不存在明顯的線性相關關系,它們的變動趨勢較為獨立,可能受到不同因素的影響。這可能暗示市場在這段時間內較為復雜,各種因素相互交織,導致成交量加權平均價格與收盤價之間的關系不明顯。 通過 `ts_corr(vwap, close, 20)` 函數的計算,投資者可以了解到在過去20個交易日內 `vwap` 和 `close` 之間的相關性,從而輔助判斷市場趨勢、評估交易成本與價格走勢之間的關系,進而制定更為合理的投資策略。
rank:
排名(close);Rank (close, rate=0) # 精確排序
X = (4,3,6,10,2) => Rank(x) = (0.5, 0.25, 0.75, 1, 0)
X = (4,3,6,10,2) => 排名 (x) = (0.5, 0.25, 0.75, 1, 0)這里返回的是0到1之間的排序
交易日 VWAP 收盤價(Close) 1 50.2 50.5 2 50.5 50.8 3 50.8 51.0 ... ... ... 20 55.0 55.5
我們可以理解這里的rank是對這樣可以在同一時間截面上,比較不同股票的成交量對數二階差分和股價漲跌幅的相對大小,從而找出在當天這些指標表現突出或異常的股票。通過這種方式,投資者可以快速篩選出與其他股票相比,在成交量和股價變動方面存在差異的股票,進而深入分析這些差異背后的原因,評估其投資價值和潛在交易機會。
?當然,具體的排名范圍也可以根據實際需求進行調整,比如可以對某一周、某一個月內的所有股票按特定日期進行排名,或者對特定板塊內的股票進行排名等,這取決于投資者的分析目的和策略。
ts_delta(x, d)??ts_delta(x, d):
返回 x - ts_delay(x, d)
那么ts_delay是什么呢?
Returns x value d days ago,就是d天前的x個值
`ts_delay(x, d)` 是金融量化分析里常用的函數,下面結合金融知識與數據表格為你詳細解釋。 ### 函數參數含義 - `x`:代表一個時間序列數據,在金融領域,它可以是股票價格、成交量、收益率等隨時間變化的數據。比如,`x` 可以是某只股票每天的收盤價,每天記錄一個數值,形成一個按時間順序排列的數據序列。 - `d`:表示延遲的周期數。`d` 為正整數,它的作用是把時間序列 `x` 向后移動 `d` 個周期。 ### 具體計算過程和結果分析 假設我們有一只股票連續10個交易日的收盤價數據,
?
交易日 收盤價(x) 1 100 2 102 3 105 4 103 5 106 6 108 7 110 8 109 9 112 10 115 現在我們分別計算?
ts_delay(x, 1)
?和?ts_delay(x, 2)
?的結果:
ts_delay(x, 1)
當?
?d = 1
?時,就是把時間序列?x
?向后移動 1 個周期。第一個交易日沒有前一個交易日的數據,所以用?NaN
(非數字)表示,之后每個交易日的延遲值就是前一個交易日的收盤價。
交易日 收盤價(x) ts_delay(x, 1)
1 100 NaN 2 102 100 3 105 102 4 103 105 5 106 103 6 108 106 7 110 108 8 109 110 9 112 109 10 115 112 現在我們分別計算 `ts_delay(x, 1)` 和 `ts_delay(x, 2)` 的結果: #### `ts_delay(x, 1)` 當 `d = 1` 時,就是把時間序列 `x` 向后移動1個周期。第一個交易日沒有前一個交易日的數據,所以用 `NaN`(非數字)表示,之后每個交易日的延遲值就是前一個交易日的收盤價。 | 交易日 | 收盤價(_delay(x, 2)` 當 `d = 2` 時,是把時間序列 `x` 向后移動2個周期。前兩個交易日沒有前兩個交易日的數據,用 `NaN` 表示,之后每個交易日的延遲值就是前兩個交易日的收盤價。 | 交易日 | 收盤價(
交易日 收盤價(x) ts_delay(x, 2)
1 100 NaN 2 102 NaN 3 105 100 4 103 102 5 106 105 6 108 103 7 110 106 8 109 108 9 112 110 10 115 109 在金融分析中的應用
## 在金融分析中的應用 - **技術分析**:在技術分析里,`ts_delay` 函數能用來計算價格的滯后值,進而分析價格的趨勢變化和動量。例如,通過比較當前價格和前一個周期的價格(`ts_delay(x, 1)`),可以判斷價格是上漲還是下跌。 - **策略開發**:在開發交易策略時,`ts_delay` 函數可用于創建滯后指標,如比較當前的技術指標值和前幾個周期的指標值,以此生成交易信號。例如,當當前的移動平均線值大于前一個周期的移動平均線值時,可能產生買入信號。
x-ts_delay(x,d)
`x - ts_delay(x, d)` 表示將原始時間序列 `x` 與經過 `d` 期延遲后的時間序列相減,得到的結果是一個新的時間序列,反映了原始序列在 `d` 個時間周期內的變化情況。以下結合之前的收盤價數據示例來解釋: 假設我們仍使用之前某股票連續10個交易日的收盤價數據作為時間序列 `x`
交易日 收盤價(x) ts_delay(x, 1)
x - ts_delay(x, 1)
1 100 NaN NaN 2 102 100 2 3 105 102 3 4 103 105 -2 5 106 103 3 6 108 106 2 7 110 108 2 8 109 110 -1 9 112 109 3 10 115 112 3 當計算?
x - ts_delay(x, 2)
?時,結果如下:
交易日 收盤價(x) ts_delay(x, 2)
x - ts_delay(x, 2)
1 100 NaN NaN 2 102 NaN NaN 3 105 100 5 4 103 102 1 5 106 105 1 6 108 103 5 7 110 106 4 8 109 108 1 9 112 110 2 10 115 109 6 在金融分析中,
x - ts_delay(x, d)
?有以下作用:
- 計算價格變化量:如果?
x
?是股票價格序列,那么?x - ts_delay(x, d)
?可以表示在?d
?個交易日內股票價格的變化量。通過觀察這個變化量的大小和正負,可以了解股票價格的短期波動情況,進而分析市場的短期趨勢和交易機會。例如,如果?x - ts_delay(x, 1)
?持續為正,說明股票價格近期處于上漲趨勢;反之,如果持續為負,則說明處于下跌趨勢。- 構建技術指標:該計算方式可以作為構建一些技術指標的基礎。例如,相對強弱指標(RSI)的計算就涉及到價格的上漲和下跌幅度,
x - ts_delay(x, d)
?可以用來衡量價格在一定周期內的漲跌情況,從而幫助判斷市場的超買超賣狀態。- 分析市場動量:較大的?
x - ts_delay(x, d)
?值(正值或負值)可能表示市場具有較強的動量,即價格趨勢較為強勁。而較小的值則可能意味著市場處于相對平穩或盤整狀態。通過對不同股票或市場指數的?x - ts_delay(x, d)
?進行分析和比較,可以評估不同資產的動量特征,為投資組合的配置提供參考。你返回的表格我無法復制到其他頁面以便我作筆記,你有更好的辦法嗎
很抱歉給你帶來不便。為了方便你做筆記,我可以將表格以文本形式呈現,用豎線(|)分隔列,用換行區分行,這樣你復制起來會更方便。
例如之前?
x - ts_delay(x, 1)
?的結果,以文本形式如下:
交易日 收盤價(x) ts_delay(x, 1)
x - ts_delay(x, 1)
1 100 NaN NaN 2 102 100 2 3 105 102 3 4 103 105 -2 5 106 103 3 6 108 106 2 7 110 108 2 8 109 110 -1 9 112 109 3 10 115 112 3
x - ts_delay(x, 2)
?的結果文本形式如下:
交易日 收盤價(x) ts_delay(x, 2)
x - ts_delay(x, 2)
1 100 NaN NaN 2 102 NaN NaN 3 105 100 5 4 103 102 1 5 106 105 1 6 108 103 5 7 110 106 4 8 109 108 1 9 112 110 2 10 115 109 6 希望這種形式對你做筆記更有幫助,如果你還有其他需求,請隨時告訴我。
編輯
分享
以文本形式返回`x - ts_delay(x, 3)`的結果
如何使用這些函數進行金融數據分析?
還有哪些類似的金融量化分析函數?
在金融分析中,`x - ts_delay(x, d)` 有以下作用: - **計算價格變化量**:如果 `x` 是股票價格序列,那么 `x - ts_delay(x, d)` 可以表示在 `d` 個交易日內股票價格的變化量。通過觀察這個變化量的大小和正負,可以了解股票價格的短期波動情況,進而分析市場的短期趨勢和交易機會。例如,如果 `x - ts_delay(x, 1)` 持續為正,說明股票價格近期處于上漲趨勢;反之,如果持續為負,則說明處于下跌趨勢。 - **構建技術指標**:該計算方式可以作為構建一些技術指標的基礎。例如,相對強弱指標(RSI)的計算就涉及到價格的上漲和下跌幅度,`x - ts_delay(x, d)` 可以用來衡量價格在一定周期內的漲跌情況,從而幫助判斷市場的超買超賣狀態。 - **分析市場動量**:較大的 `x - ts_delay(x, d)` 值(正值或負值)可能表示市場具有較強的動量,即價格趨勢較為強勁。而較小的值則可能意味著市場處于相對平穩或盤整狀態。通過對不同股票或市場指數的 `x - ts_delay(x, d)` 進行分析和比較,可以評估不同資產的動量特征,為投資組合的配置提供參考。
log:
你寫的?
?log(volume), 2)
?這種表述不太明確標準,從常見的數學和金融分析角度,可能有兩種理解情況:?
- 以 2 為底的對數: 如果這里是想計算成交量(
volume
)以 2 為底的對數,在數學符號上應該寫成?\(\log_2(\text{volume})\)。在金融中,成交量(volume
)表示在一定時間內交易的股票或其他金融資產的數量。對成交量取以 2 為底的對數可能有多種用途。比如,在分析成交量的變化規模時,對數變換可以將較大范圍的成交量數值進行壓縮,使得數據更便于處理和比較。例如,假設某股票在不同交易日的成交量分別為?1000、8000、64000。計算以 2 為底的對數: \(\log_2(1000)\approx9.97\)(因為?\(2^{9.97}\approx1000\)); \(\log_2(8000)=\log_2(2^{13}) = 13\)(因為?\(8000 = 2^{13}\)); \(\log_2(64000)=\log_2(2^{16}) = 16\)?(因為?\(64000=2^{16}\))。 通過這種對數變換,可以更清晰地看到成交量增長的相對幅度,原本從?1000?到?8000?再到?64000?的絕對數量變化,在對數尺度下表現為從約?\(9.97\)?到?13?再到?16?的相對變化。
數據:
volume:
Field description??字段描述
Category:?Price Volume?/?Price Volume
類別?:?價格量?/?價格量Type:?Matrix??類型: 矩陣
?Daily volume??每日交易量
Region??地區Delay??延遲
close:
收盤價
open:
開盤價
`(close - open) / open`
是一個用于計算金融數據中價格變化百分比的表達式,通常用于衡量某一交易時段內資產價格的相對變動情況。具體含義如下: - `open` 代表資產(如股票、期貨等)在一個特定交易時段開始時的價格,即開盤價。 - `close` 表示該資產在同一交易時段結束時的價格,即收盤價。 - `(close - open)` 計算的是收盤價與開盤價之間的差值,反映了價格在該交易時段內的絕對變動量。 - 用這個差值除以 `open`,即 `(close - open) / open`,得到的結果是價格的相對變動百分比,它可以幫助投資者了解資產價格在一個交易時段內的漲跌幅度。例如,如果計算結果為0.05,即表示價格在該時段內上漲了5%;如果結果為 -0.03,則表示價格下跌了3%。
從里到外
我們比較的是rank(((close - open) / open))和rank(ts_delta(log(volume), 2)),這兩個在6天上的相關性。
我們對價格變化率進行了一個排名。另外一個是對交易量進行一個縮放。然后用ts_detal判斷是否持續為正,交易量在上漲。反之下降。然后進行排名。
然后我們用ts_corr看它們兩者之間的相關性,如果為0,表示是獨立,如果是1.則是強相關
交易日 | 開盤價 (open) | 收盤價 (close) | 成交量 (volume) | log(volume) | ts_delta(log(volume), 2) | (close - open) / open | rank(ts_delta(log(volume), 2)) | rank((close - open) / open) | ts_corr(rank(ts_delta(log(volume), 2)), rank((close - open) / open), 6) | -1 * ts_corr(rank(ts_delta(log(volume), 2)), rank((close - open) / open), 6) | 交易信號(示例閾值:±0.5) |
---|---|---|---|---|---|---|---|---|---|---|---|
1 | 100 | 102 | 1000 | 6.907755 | 無(前兩個數據無法計算二階差分) | 0.02 | 無(需至少 3 個數據計算排名) | 無 | 無 | 無 | 無 |
2 | 103 | 101 | 1200 | 7.090375 | 無 | -0.019417 | 無 | 無 | 無 | 無 | 無 |
3 | 101 | 105 | 1500 | 7.31322 | 0.222845 | 0.039604 | 1 | 2 | 無(不足 6 個數據計算相關性) | 無 | 無 |
4 | 104 | 108 | 2000 | 7.600908 | 0.287688 | 0.038462 | 2 | 1 | 無 | 無 | 無 |
5 | 106 | 104 | 1800 | 7.49543 | -0.105478 | -0.018868 | 3 | 3 | 無 | 無 | 無 |
6 | 103 | 107 | 2500 | 7.824052 | 0.328622 | 0.038835 | 4 | 2 | 0.2(假設計算得到的相關性值) | -0.2 | 無(未超過閾值) |
7 | 108 | 106 | 2200 | 7.703457 | -0.120595 | -0.018519 | 5 | 4 | -0.1(假設計算得到的相關性值) | 0.1 | 無(未超過閾值) |
8 | 105 | 110 | 3000 | 8.006367 | 0.30291 | 0.047619 | 6 | 1 | 0.3(假設計算得到的相關性值) | -0.3 | 無(未超過閾值) |
9 | 110 | 108 | 2800 | 7.93797 | -0.068397 | -0.018182 | 7 | 5 | -0.2(假設計算得到的相關性值) | 0.2 | 無(未超過閾值) |
10 | 109 | 112 | 3500 | 8.155212 | 0.217242 | 0.027523 | 8 | 3 | 0.1(假設計算得到的相關性值) | -0.1 | 無(未超過閾值) |
?
在上述模擬表格中:
- 計算相關指標:首先根據開盤價、收盤價和成交量計算出對數成交量
log(volume)
、成交量對數的二階差分ts_delta(log(volume), 2)
、價格變動百分比(close - open) / open
。 - 計算排名:然后對成交量對數二階差分和價格變動百分比分別進行排名
rank(ts_delta(log(volume), 2))
和rank((close - open) / open)
。 - 計算相關性:再計算過去 6 個交易日內這兩個排名序列的時間序列相關性
ts_corr(rank(ts_delta(log(volume), 2)), rank((close - open) / open), 6)
?,并取相反數得到-1 * ts_corr(rank(ts_delta(log(volume), 2)), rank((close - open) / open), 6)
。 - 生成交易信號:最后根據設定的閾值(示例中為 ±0.5)判斷是否生成交易信號。在這個模擬示例中,由于所有交易日的相關性相反數的值都未超過閾值,所以沒有生成交易信號。
投資策略
例如,可以設定一個閾值,當相關性值低于 -0.5(僅為示例,具體閾值需根據回測和優化確定)時,認為成交量和價格變動之間存在較強的負相關關系,可能預示著價格即將反轉,此時可以考慮賣出資產;相反,當相關性值高于 0.5 時,可能表示價格將繼續沿著當前趨勢發展,可以考慮買入資產。
- 均值回歸原理:該策略可能假設股票的某些指標,如成交量的對數變化率與股價的漲跌幅之間存在一種長期的均衡關系。當這種關系出現偏離時,市場有向均值回歸的趨勢,策略試圖利用這種回歸來獲取收益。例如,如果一段時間內成交量對數的二階差分與股價漲跌幅的相關性出現較大偏離歷史均值的情況,策略可能預期這種偏離會得到糾正,從而進行相應的交易操作。
- 相關性分析原理:通過計算
ts_corr
,即時間序列的相關性,來衡量成交量變化和股價漲跌之間的線性關系。如果兩者具有較高的正相關性或負相關性,那么當一個指標發生變化時,可以根據這種相關性來預測另一個指標的變化方向,進而制定交易策略。比如,如果發現成交量對數的二階差分與股價漲跌幅在過去一段時間內呈現穩定的負相關關系,那么當成交量對數的二階差分上升時,可能預期股價漲跌幅會下降,從而采取相應的賣出或做空操作。 - 排序與相對強弱原理:使用
rank
函數對成交量對數的二階差分和股價漲跌幅進行排序,將絕對數值轉化為相對排名,這樣可以更關注指標在一段時間內的相對強弱變化。例如,在一個包含多只股票的投資組合中,通過比較不同股票的成交量和股價漲跌幅的相對排名,可以找出那些成交量變化相對較大且股價漲跌幅相對較小(或反之)的股票,這些股票可能具有更高的投資價值或交易機會,因為它們的指標表現與其他股票相比存在差異,可能預示著股價的走勢即將發生變化。 - 時間序列分析原理:
ts_delta
函數用于計算時間序列的差分,這里是對成交量的對數進行二階差分,它可以幫助分析成交量隨時間的變化趨勢和變化速度。通過觀察成交量對數的二階差分,可以了解成交量的增長或減少是否在加速或減速,這對于判斷市場的買賣力量和股價的后續走勢具有重要意義。例如,如果成交量對數的二階差分持續增大,可能意味著市場的交易活躍度在不斷提高,股價上漲或下跌的動力增強,結合股價漲跌幅的情況,可以更準確地把握市場趨勢。
編輯
分享
邏輯問題:
1.?ts_delay
?的含義及取值情況
ts_delay
?通常是對單只股票的時間序列數據進行操作,它會將該股票某個指標(如價格、成交量等)的時間序列向后延遲指定的周期數。也就是說,對于每一只股票,ts_delay
?會根據自身的歷史數據生成一個延遲后的序列。
例如,對于股票 A 的收盤價序列?[10, 11, 12, 13, 14]
,當使用?ts_delay(收盤價, 1)
?時,會得到延遲 1 期后的序列?[NaN, 10, 11, 12, 13]
;若使用?ts_delay(收盤價, 2)
,則得到?[NaN, NaN, 10, 11, 12]
。所以,ts_delay
?是針對每只股票各自生成延遲后的時間序列值,每天對應一個延遲后的值(如果有足夠的歷史數據來計算延遲)。
2.?rank(ts_delay(...))
?的含義
rank(ts_delay(...))
?結合了延遲操作和排名操作。下面詳細解釋其含義:
-
操作步驟
- 首先,使用?
ts_delay
?函數對每只股票的特定指標(如成交量、價格等)進行延遲處理,得到每只股票延遲后的指標序列。 - 然后,在每一天對所有股票延遲后的指標值進行排序,并賦予排名。
- 首先,使用?
-
示例說明
假設我們有三只股票 A、B、C,某指標的原始值及經過?ts_delay(指標, 1)
?處理后的值如下表:
日期 | 股票 | 原始指標值 | 延遲 1 期后的指標值(ts_delay(指標, 1) ) |
---|---|---|---|
第 1 天 | A | 10 | NaN |
第 1 天 | B | 12 | NaN |
第 1 天 | C | 15 | NaN |
第 2 天 | A | 11 | 10 |
第 2 天 | B | 13 | 12 |
第 2 天 | C | 16 | 15 |
在第 2 天,對延遲后的指標值進行排名(假設是升序排名),那么股票 A 的排名為 1,股票 B 的排名為 2,股票 C 的排名為 3。這個排名結果可以幫助我們了解在考慮指標延遲的情況下,每只股票在當天相對于其他股票的相對位置,從而挖掘出一些可能被忽略的市場信息和交易機會。例如,如果延遲后的成交量排名靠前,可能意味著該股票的交易活躍度變化有一定的滯后效應,后續股價可能會有相應的表現。