淺談風險平價與策略標準化
風險平價與策略標準化
其實風險平價配置(Risk Parity Allocation)並不是什麼新東西,基本上只要有接觸到多商品投資組合理論或是海龜交易系統基本上大概都會討論到這個算是最基礎的部分。風險平價最原始的概念或目的是"以損定量",也就是當我們在投資組合中納入了很多不同的商品或項目,而我們希望這每一個小小的單位對整體的風險影響是被大約限制在一個理論範圍的。透過這樣一個部位規模標準化的方式,我們才有辦法去針對每個小單位模組進行評估與管理。
這個公式可能大家在學習Position Sizing的時候或多或少都有見過
口數P=(風險因子*帳戶淨值)/(風險值*每大點價值)
其中風險因子為你每次交易願意拿出帳戶淨值的多少比例進行冒險,如 0.002或0.005。設定的越低,理論風險越低,但相對報酬也跟著降低,反之設定的越高,理論風險也越高,但相對報酬也升高。
而風險值函數這裡我們僅先討論最原始的應用 – 價格波動程度(volatility)
(風險值函數又可以再另闢一個很大又有趣的Position Sizing部位規模管理主題了,都可以寫成一本書了XD 不過這不是今天要討論的主題…..先跳過….)
能夠代表價格波動程度的指標或公式很多,一般最常用的大抵不出平均真實區間(ATR)或標準差,這裡要注意的是ATR不像標準差一樣有平均值當軸心,所以各位在策略中引用時要注意要以”日線”ATR為主。
(標準差的變動速率較ATR劇烈,容易身體不適者可以改用(highd-lowd)代替close或直接使用ATR….不過筆者的經驗是,直接使用close其實會有一些優勢,原因在於他在反映”風險”程度的效果是比較好的,在某種程度上有風險濾鏡的效果,甚至有機會改善原始策略的績效)
簡單的範例: (以標準差為例)
Inputs:RPALen(30), capital0(5000000);
Vars:NShares(0),TradeRisk(0);
TradeRisk = BigPointValue*StdDev(c , RPALen);
If AbsValue(TradeRisk) > 0 then NShares = (capital0)*0.05/AbsValue(TradeRisk) ;
NShares = IntPortion(NShares);
NShares即為我們可以買賣的基本單位。
直接將 NShares contracts插入我們原本的策略買賣式中即可。或搭配部位管理公式進行更進一步的部位加權。
透過這樣簡單的轉換,我們便可以將不同的商品與策略項目都"標準化""模組化",然後"插入"管理系統或智能投顧平台中進行評價管理或交易機會探勘。
當然,凡事皆有不完美,前面說過這樣的作法只是希望每一個小小的單位對整體的風險影響是被大約限制在一個理論範圍,由於市場還是有一定的隨機性或突發風險,並非是風平浪靜連續性的,對於風險範圍評估我們仍要小心看待,尤其對於風險因子的設定不可太過大心,可以多藉由各種模擬程序或是觀察找出讓你覺得最舒適的設定。
不過今天寫這篇文章的目的其實是想要順便推廣這樣以"資金角度來寫策略"的策略標準化寫法。
不知道多數人是否有想過回測報表的意義? 被工具與入門範例制約的人們,總是很習慣了一開始入門程式交易的時候就被教育使用 一口(手)進 一口(手)出 的方式寫著所謂的 “策略”。有多少人會發現,4000點的時候跟10000點的時候的一口(手)其實並不等價。每次下注的金額其實根本就不一樣,這樣的回測報表上面的分析項目數字可信度能有多高? 4000點的時候所產生的MDD(或其他數值)跟10000點的時候所產生的MDD等價嗎?
我建議在推廣與學習量化交易之初大家就能先習慣風險平價(以損定量)的策略寫法。不只是為了後續作多商品投資組合與資金管理鋪路,即使只是在單一品種上,很多回測數據的探討(如上面說的MDD或很多項目)也都應該先把下注基本單位固定,這樣討論起來也會比較有意義,而不要被工具與入門範例制約了。如果終究都要接觸資金管理與策略管理,不如一開始就先建立好較佳的策略撰寫習慣。
其實這裡要繼續討論下去還有很多東西可以討論,像是理論波動率其實時時刻刻都在變動,不同的波動率指標的變動程度也不相同(如標準差很明顯比ATR變動程度大),該多久對部位進行一次校正,或是這樣的標準化方法有沒有什麼大缺陷或是有沒有其他更好的方法都是可以更深入探討的
粉絲專頁
https://www.facebook.com/yutingvpn.tw/
Xeus常見問題
進化特區