- 登入
- 註冊
我們先前的文章討論過量化股票投資的停損怎麼設定(文章連結:https://quantpass.org/python_stop-loss/),那些方法適用於大家熟知的程式交易,也就是方向性策略的風險控制方法。但是,資產配置的邏輯是完全不同的!為什麼呢?我們接下來詳細說明!
將手上的資產,依照市場狀況和風險偏好依比例配置投資,例如股債比 6:4,部位比例是相互依存的,在配置時即假設該比例能夠在經濟衰退時提供良好的下檔保護。
一般來說,被動投資的資產配置不太更改配置比例,並且選擇定期定額,做一輩子的投資,因此不存在出場策略。依據市場狀況微調配置比例的主動型資產配置,基本上也不存在出場策略,因為大多數人選擇資產配置,就是看上努力工作賺取薪資收入,搭配花些許時間來長線投資錢滾錢的特性,因此對大多數人來說這也是一輩子的投資。
既然資產配置基本上不存在出場策略,那這個「例外」是誰呢?資產積累位於守成期階段的投資人,也就是需要進行保守型配置的投資人。這類的投資人通常資產已經接近財務目標,為了降低完成這最後一哩路的不確定性,而把股票的配比降低。對於這些人,「不確定性」是最大的風險,因為資產價值的縮水,已經難以用薪資收入來相抵。因此,他們會需要一些出場策略來保護資產。
這時的出場準則,基本上就是當資產快速增值時,「等比例」賣掉一部分的配置標的,比如說把股債黃金 ETF 維持在 5:4:1 的配比,但現金部位上升。另外,資產快速縮水時,可以選擇部分出場停損,也可以選擇加碼,因財務健全狀況而異。
這裡建議搭配 Python 資產配置課程的回測模組服用,沒有購買線上課程的讀者可以先閱讀下方資料存放格式,原則上還是很容易理解這個概念,可以再自行依樣畫葫蘆試試看。課程的回測寫法,是將回測用的價格和調倉事件以 pandas.DataFrame 的格式來存放,方便回測時的一些向量式運算。假設是一個只做股債 ETF 配置的回測,股票 ETF 使用 0050,債券 ETF 使用 00679B。價格 DataFrame 的格式如下表所示,column 是股票代碼、index 是日期,值為當日的收盤價:
0050 | 00679B | |
2022-04-18 | 131.55 | 35.56 |
2022-04-19 | 132.00 | 35.58 |
2022-04-20 | 132.65 | 35.27 |
… | … | … |
調倉事件是用來在回測時,對應指定日期把持倉部位調整成目標配比的事件。在課程中,我們也將事件以相同格式做存放:column 是股票代碼、index 是日期,值為目標配比。
那我們該如何把「出場」寫進這樣的回測模組呢?一共兩個步驟:
0050 | 00679B | Cash | |
2022-04-18 | 131.55 | 35.56 | 1 |
2022-04-19 | 132.00 | 35.58 | 1 |
2022-04-20 | 132.65 | 35.27 | 1 |
… | … | … | … |
0050 | 00679B | Cash | |
2022-04-07 | 0.6 | 0.4 | 0 |
2022-04-11 | 0.45 | 0.3 | 0.25 |
2022-11-21 | 0.6 | 0.4 | 0 |
… | … | … | … |
這裡稍作解釋:上表中,在 2022-04-11 投資組合賣出了股債 ETF,留下了 25% 的現金。在當日調倉後,股票 ETF 占比 45%,債券 ETF 占比 30%,股債比仍然維持 6:4,因此,在股票 ETF 承擔 6 塊錢的風險時,債券 ETF 仍用 4 塊錢的部位來與之搭配,達到預想的股債平衡比例。
【系列閱讀】Python 資產配置理財入門大補包系列文章
資產配置基本上不存在停損設計,但對於守成型投資人來說,納入一些部份進出場的機制來消弭不確定性,是個不錯的選擇。而部分進出場需把握的最大原則是要讓配置資產等比例出場,來維持曝險規模的平衡。換句話說,就是用「保留現金比例」的角度來做部分出場的調控,才比較符合資產配置的邏輯和投資目標。
因此,我們使用 Python 進行資產配置的回測時,也是以「保留現金比例」的角度,把現金視為一個價格不會變動的資產,就能輕易套用在既有的回測模組,而不需要另外撰寫特化的格式了!