Home - 新人資訊
應用-資產配置管理系統 part.13:再度重組優化,並整合最佳化演算法
改版緣由:
- 加入「取樣天數」:原本所有績效指標均是從資料庫的起始日 2017 開始起算,導致新的收盤資料加入後,計算基礎變得不一致,越後面加入的資料影響力越小,指標永遠不動如山,有點不合理。雖然本系統的架構著重期間較長,但每月每季的變動還是需要辨識出來比較好,所以預計以「固定天數期間」例如 1000 天為計算基礎,滾動式取樣,這樣比較合理。
- 降低「google sheet」的依賴:為了加入「取樣天數」這個動態參數,我原本所倚重的 google sheet 力有未殆,若硬去設定一個「超複雜公式」那將造成日後維護的負擔,不宜如此硬幹,且 google sheet 並不提供商用方案,也就是無法藉由付錢提升運算效能,這也困擾我已久。趁此機會來個系統大手術,把這個一大坨的重要運作核心切割置換,這真是挑戰性非常高的工作!為了系統穩定性的提升,我也樂於接受挑戰,鍛鍊我的技術力。
- 加入 python 技術的出海口 flask:要將原本串連 google sheet 的一大堆公式抽出來計算,鐵定需要許多的矩陣運算,這讓我的 python 不能只是躲在後台背景運行,需要與前端的 web 連動,因此我要搞定 python 的 web 後台接口。經過評估我選擇了 flask,將它納入服役行列是很酷的事情,將徹底解放 python 豐富的生態系能力,透過 web 這價值出海口展現給使用者。上一篇所研究的 portfolio optimization 理論,已經有神人實作成 python package,當然要接進來使用。
經過春假期間的努力,已經完成改版,取樣天數預設 1000 天,就是大約取 4 年的交易資料,每納入新的一天就會同時捨棄最舊的一天。
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
此外順便加入一個餅圖,非常清晰的呈現眾多標的的組成比重。
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
接下來的改版重點就是最佳化作業,基本邏輯就是最大化 [報酬/風險],這個基礎在 1952 年被提出後就沒什麼變過,僅在風險的評估法,和演算法上加入一些新技術。個人實測後主要的心得有兩點:
- 傳統上用二次規劃最佳化 mean-variance 的算法有兩大缺點:許多標的權重歸零,且變動性較大。這不符合現實,變動性大也代表經常性 re-balance 增加交易成本,問題很大。所以我偏好較新的算法 HRP (Hierarchical Risk Parity,2016 發表),其特色是先用相關性分群,並持續對子群再分群而成為一顆分群樹,再從分群樹的終端執行最佳化作業,逐層合併到整棵樹,如此所得結果穩定且不會一堆零,相當程度的改善了問題。
- 必須重視風險過於報酬!傳統算法不管 sharpe or sortino 其分子都是期望報酬,而期望報酬僅僅只是取用歷史報酬為估計量,這就很有問題了,因為歷史績效不代表未來幾績效,這很容易理解。而波動性呢?波動性幾乎是會不斷重演的!從量化分析與經驗都可證明,波動大的股票就一直波動大,牛皮的股票就一直都很牛皮!所以與其最佳化 sharpe 還不如最小化風險,這樣單純且有意義的多了。我也考慮把 sortino 從系統裡移除,這我從前所重視的,以現在的認知倒是不再重要了。
所以以下畫面著重顯示左邊的風險矩陣,和右邊的建議權重。這樣系統裡的管理重點,除了本來的主觀的權重設定,和實際部位的持有比例,現在又加入了最佳化理論的建議值,越來越複雜了!天下沒有白吃的午餐,如果想無腦投資,憑什麼得到超額報酬?投資組合的配比,實行起來優雅簡單,但背後的理論基礎是很深厚的,也只有認知夠強,才可以讓部位安心的放大。HRP 在運算分群時,就是僅考慮相關性而沒有考慮報酬,層層往上合併時應該也是,我將會找時間進一步分解演算法細節。
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
在近況分析中也加入一個 pie chart,表達實際部位的組成。
Image Not Showing
Possible Reasons
- The image file may be corrupted
- The server hosting the image is unavailable
- The image path is incorrect
- The image format is not supported
Learn More →
此外許多變動在畫面上看不出來,後台卻已經歷一輪的天翻地覆!整個 google sheet 大部分都被我閹割掉了,從原本的 5 頁密密麻麻的公式,減到剩下一頁 price raw data。flask 的文件從頭 k 到尾已經大致掌握了,python 雖被詬病運算效率較差,但其矩陣運算的能力是令人激賞的,系統主頁中呈現 portfolio 全部的資訊,因為要傳入 sample days 參數,所有都要 real-time 運算,python 運行在最便宜的運端主機還能做到快速回應,比原本讀取 google sheet 還快,表現超越我的預期。
以上,系統已經非常接近可以向外推廣的階段了,有興趣的朋友歡迎來試用,試用期間隨時可能終止。認識璞玉的人能享有對大的利益,投資的奧義莫過於此,這是人生的大事,關係到青春歲月不可輕忽,比追求高薪還重要,共勉之。
Newman 2023/4/7