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