投資可以很複雜,超多的商品選擇,分批持有買賣點設定等等,但是每天花這麼多心力,真的有比大盤好嗎?
其實投資也可以很簡單的,我們可以稍微更智慧一點,投資「大盤」跟「公債」!
今天就是要來介紹一個簡單的策略,
此策略的 sharpe ratio 高達 1.2 非常高,但其實原理並不難,也不需要太多的技巧
用一句話就講完了:
將資產分兩半:SPY 跟 20年公債
- 一半投資「標準普爾500指數ETF」
- 一半投資「iShares 20年期以上美國公債ETF〈TLT〉」
這種策略的大致上的原理就是「找兩個相關係數為負,且會隨時間增值的商品」
這樣的策略效果究竟如何呢?一半一半?這樣的比例真的好嗎?
我們可以用上一篇文章 ffn python package,來做回測看看效果如何
大家可以點這裡到程式碼,並且線上打扣!
安裝 ffn:
!pip install ffn
獲取資料
import ffn
prices = ffn.get("spy,tlt", )
prices.plot()
仔細看這兩個指數確實有呈現一點負相關,特別是 SPY 下跌的時候,TLT會些微的上漲
將資產分一半,投資回測
這邊我們只拿「SPY」跟「TLT」,其實有很多的策略組合也會有「石油」、「新興市場」、「黃金」等等
大家到時候也可以去自行變化,找出比較好的投資組合
prices.rebase().mean(axis=1).plot()
雖然比直接投資sp500還要差,但是整體來說看起來更穩定的感覺
究竟我們有沒有辦法橫兩,這樣的組合是否是最好的呢?
不然我們就暴力計算一下,將幾種組合都寫出來:
策略 | 配置1 | 配置2 | 配置3 | … | 配置10 | 配置11 |
---|---|---|---|---|---|---|
SPY | 0 | 0.1 | 0.2 | … | 0.9 | 1.0 |
TLT | 1.0 | 0.9 | 0.8 | … | 0.1 | 0 |
那我們把這幾種配置都回測一次試試看:
import numpy as np
import pandas as pd
strategies = {}
for i in np.arange(0, 1.1, 0.1):
title = "spy: %.1f | tlt: %.1f" % (i, 1-i)
strategies[title] = (prices.rebase() * [i, 1-i]).mean(axis=1).rebase()
strategies = pd.DataFrame(strategies)
strategies.plot()
可以發現TLT比重比較重,則報酬率比較低,
SPY比重比較重,則報酬率比較高
除了報酬率以外,我們還有哪些指標可以來量化這些策略的績效呢?
我們可以用 ffn 提供的 calc_stats
來計算:
stats = strategies.calc_stats()
stats = pd.DataFrame(
{
name:pd.Series({key:getattr(pf, key) for key in dir(pf) if isinstance(getattr(pf, key), float)}, name=name)
for name,pf in stats.items()
}).transpose()
stats.head()
這樣我們就有一張策略的績效總表了,這張 dataframe 非常大一張,要怎麼看有哪些分析數據呢?
我們可以利用 stats.columns
查看可以比較的策略績效指標:
stats.columns
stats['daily_sharpe'].plot(rot=10, color='blue')
stats['monthly_vol'].plot(rot=10, color='red', secondary_y=True)
- 藍色的是 sharpe ratio,代表 「報酬」/ 「風險」 的比例
- 紅色的是「每月報酬」的波動程度,
可以發現,風險報酬比(藍色)最佳位置,剛好就是在 「一半一半」的資產配置上
對應到「每月報酬」最穩定的,也剛好就是在「一半一半」的資產配置上
這說明了投資好像不用搞太多花俏的東西,直要簡單粗暴就是最好的!
上面的 sharpe ratio 是用簡單的「每天」的 sharpe ratio,
不過假如你是投資長線的話,其實不用太計較每天的 sharpe,應該要看的是每個月,甚至是每年的:
stats['yearly_sharpe'].plot()
stats['monthly_sharpe'].plot()
stats['daily_sharpe'].plot()
假如我們不要「每天」跟報酬率計較,而改成是「每個月」或「每年」的時候,
由上圖中可以知道,SPY 比例從 0.5~0.7 都是不錯的配置方式
不過這 1.3 以上的 sharpe ratio 其實算是滿驚人的(不過沒算上金融海嘯,所以…稍微不準)
我平常可能大費周章,搞了半天也弄不出這麼好的資產配置XD
接下來看平均年報酬率:
stats['yearly_mean']
還可以!你想想看完全不看盤得到5%以上的獲利,已經非常爽了!
老實說這樣的組合還有很多可以玩的地方,例如加入定期權益平衡,
也就是每個月去重新調整持股比例,漲多的賣,跌多的買,重新將權重調整回原點。
我們下次會來介紹進化版策略的回測,讓這個簡單的策略再進化
可以定期追蹤 FinLab 一起來研究投資這件事情吧!