反思菲式思考 Part.3:恢復信用交易策略優化,年化 23.46%
很多人在策略上線後會擔心策略失效,這樣的擔心是沒有意義的,因為很多事你無法控制,可能一個漲跌幅再放寬,就一堆策略波動規律改變。
真正重要的是你有沒有能力研發與調整策略,有能力的話,你就不會害怕局勢變化,腦袋終有應變方法,這個能力容不容易培養?
老實說,從 0 到 1 很難,不是很吃交易經驗,就是很吃資料科學的能力,兩者都很難速成。要速成就要站在巨人的研究基礎上,再加上一點點資料分析的能力,就有機會有小成。
本篇將教你從「菲式思考」最後一個章節「嘉實XQ內建策略回測之探討」取範例,照著「反思菲式思考 Part.2|策略回測探討」的SOP,來實作策略優化與分析的邏輯,結合 FinLab 量化平台的分析工具,打造出屬於自己的策略。
可能恢復信用交易的個股
參考自「菲式思考」p.299 策略 617。這個策略帶有基本面、籌碼面、事件面的因素,當股票的每股淨值翻到 10 元以上,就能擁有信用交易的資格,資金調度變靈活,有機會吸引投機買盤進場,讓股價往上衝,同時這也代表基本面可能有復甦跡象,一般來說「每股淨值」在 10 元以下的公司都有成長性或財務狀況不穩的狀況,若每股淨值在之後翻到 10 元以上,可能代表營運趨勢改變,會吸引看好轉機的買盤。
不論是恢復或是停止信用交易,都會在每季財報公告截止日後五個工作天進行審核是否恢復信用交易,若是在事前押寶成功,標地真的恢復信用交易,可能買盤力道強,反之押寶失敗,未如情況恢復信用交易,可能基本面仍不夠好,會引發失望賣壓。
書中選股條件
- 每股淨值介於 9~10元之間。
- 近一季營業利益率 > 0。
- 月營收月增率 > 5%。
- 近 3 個月月營收月增率平均 > 5%。
- 使用30天交易日回測。
FinLab 回測驗證
程式碼
顯示程式碼
from finlab import data
from finlab.backtest import sim
收盤價 = data.get('price:收盤價')
股價淨值比 = data.get('price_earning_ratio:股價淨值比')
每股淨值 = 收盤價/股價淨值比
營業利益率 = data.get('fundamental_features:營業利益率').deadline()
月營收月增率 = data.get('monthly_revenue:上月比較增減(%)')
c1 = (9 <= 每股淨值) & (每股淨值 < 10)
c2 = 營業利益率 > 0
c3 = 月營收月增率 > 5
c4 = 月營收月增率.average(3) > 5
position = c1 & c2 & c3 & c4
report = sim(position, resample='M', upload=False)
report.display()回測結果
報酬率與波動

流動性風險

回測交叉比對
由於 FinLab 財報資料庫因要統一 IFRS 會計欄位,資料從 2013 開始,和 XQ 會有差異。
跑出來的數據發現平均年化報酬率、MDD(最大回撤)、勝率 都要比 XQ 回測的結果要差,這可能和書中部分條件定義不清或資料差異所導致。
FinLab 回測結果和 XQ 回測結果近似的地方在該策略的交易次數不多,只有 200多次 ,是比較少見的事件,策略報酬曲線類似,主要報酬都是靠近3年拉起來,2021年前的績效較不穩定。
優化設定方向
- 交易次數過少:需回測單因子條件,看能否用最少的條件得到最多的次數與回測報酬。由於交易次數少,可能某些月份會有 1~2檔 重壓的情況,讓波動風險難以控制,因此應要設定單檔持股比例上限。
- 波動過大:回檔太大,夏普率不夠高,由於該策略是低每股淨值,低每股淨值很可能也是低價股,因此加入之前研究的低價股策略來降波動,參考「給小資族的禮物|低價股量化策略的實戰訣竅」、「膽小貓策略」。
- 太容易選到流動性很差的標地,有多達 38% 的股票在進出當日的交易張數低於100張,成交金額有 33% 低於 100 萬,大資金難進出。資金較大者,最好多設定成交量或成交金額條件,降低流動性風險。