SamSuka
阿程量化交易
阿程量化交易

patreon


【公開量化策略系列 8】- 用Put/Call Ratio 預測 S&P500期貨 (夏普率2.1) 

而排比較少發新帖,因為我準備緊一系列的Videos去為大家講解每個Alpha帖子,所以請大家耐心等多一等。到時有 Videos 大家就可以手把手跟住學點樣複製整個策略,真正做到理論與實踐兼備。都係個句,我諗大家都有做足功課的,但少部份讀者想學寫策略但唔寫codes,真係唔好玩啦大佬,係一定要寫架...... 唔寫唔知原來好多traps架。例如最基本的look ahead bias,其實唔係靜係得攞錯行咁簡單,我見過做左十幾年的PM的回測都有犯左一樣的錯,但係係好subtle,要真係落過場,買左一籃子股票,再睇返個回測先會發覺出晒事的問題黎。如果聽唔明唔緊要,遲下我出 Alpha 視頻和交易相關的Python視頻再講。 大家而家先自己加油一下先,起碼睇下基本的Python知識基礎。


回正題,大家應該都聽過Put/Call Ratio,今次我們用到 CBOE的Put/Call Ratio來預測下一日的S&P500期貨回報。在Bloomberg內的CBOE Put/Call Ratio 描述如下:

簡單來說,就是用到當日 CBOE的所有 Equity Put Option Volume / Call Option Volume。按傳統理解option作為避險工具去對沖股票Long exposure,所以這個Put/Call Ratio數字越高,代表市場中做Put volume 的Demand越高,通常代表市場準備下行風險更大。

但大家可見上圖,Put/Call Ratio 的走勢沒有明顯趨勢,如果用一般的趨勢策略去做會造成Over-trading問題,導致交易成本過高。但如果只選Fixed threshold去做,可能由2000年到2024年內只有數個或十多個交易,那如何是好?


來看看我們這個策略邏輯:

首先會用到我們Alpha 1 的ipynb script,用到200天的rolling-window去計percentile而非expanding window。交易規則是: 

1. 先計出今天的CBOE Put/Call Ratio 減去昨天的 CBOE Put/Call Ratio,得出一個Difference

2. 然後用 rolling(5).mean() 去計出 5天平均的 Difference

3. 如果從2.計出的數字是fall到rolling-200天的 0-10 percentile ranges內,就會 Long ES at closing price 然後在下一個closing price 平倉。


但如果沒有辦法計到real-time CBOE Put/Call Ratio的朋友,那要怎辦? 那可以把這個策略當成一個備用策略,一但python program從CBOE網頁scrape到當日最新的Ratio後,便可以視乎當時ES價格再決定交易與否。


我們這裡用到Alpha1的方法,測試結果以下:

可以見到,0-10 percentile range的預測能力很明顯,45度向上升。


Asset trading: 標普Emini (2000-2024) (Long)

Performance Statistics:


Cheers, 

阿程


(【公開量化策略系列 8】) 

(部分上圖來源自Bloomberg)










【公開量化策略系列 8】- 用Put/Call Ratio 預測 S&P500期貨 (夏普率2.1) 

Comments

可考慮 tickdata market / CSI data,平D。

SY

邊度可以搵到data 做backtest?

Siu Yin

好想知多啲關於look ahead bias👍👍

Ryan Ng


More Creators