Python程式交易︱年回報率33% backtest找出比特幣短炒策略 跑贏大市73%
比特幣捱了一年熊市,如今開始現生氣,逼近 3 萬美元關口,再次引起投資者的注意。fintalk180 使用 Python 進行 backtest(回溯測試),發現有一個短線交易策略,能在去年至今年首季,取得 33% 的年回報率,而同期間長揸比特幣,則虧損約 40%。換言之,理論上跑贏大市 73 個百分點!
比特幣價格的特點是波動大,而且趨勢急勁,2022 年 1 月 1 日高達 47,600 美元水平,但在同年 10 月底已見 2 萬美元水平,相對年初跌約 58%。
而在 2022 年 11 月,曾是全球第二大的加密貨幣交易所 FTX 倒閉,比特幣同月低見 15,600 美元水平,相對 2 萬美元下跌約 22%,相對年初的跌幅則擴大至 67%。
從這些歷史數據可以發現,一旦比特幣出現跌勢,會引起投資者跟風,引致有低處未算低的情況。那麼,是否反之當出現升勢,比特幣價格也能高處未算高﹖這正是電腦程式出場的時候,可以幫助我們梳理歷史數據,論證構思是否成立。
例如說,當我們觀察到在某一天,比特幣出現升勢,而收市價能保存大多數升幅,按上述歷史軌跡,意味有投資者急急吸貨,以這收市價於翌日高追,也有可能享受升勢的餘溫。
我們可以把這個過程量化,「比特幣出現升勢」,即是即日收市價高於昨日收市價;「收市價能保存大多數升幅」,則以收市價減去全日低位得出一個數值(下方簡稱「上升數值」),另以全日高位減去全日低位得出全日波幅,用上升數值除以全日波幅,便會得出一個比率。
在是次的 backtest 中,以比率高於 92%,才視為「收市價能保存大多數升幅」。
附圖2
舉個例子,假設比特幣今天的全日高位是 33,000 美元,全日低位是 30,000 美元,而今天的收市價是 32,790 美元,那上升數值便是 2,790 美元,全日波幅是 3,000 美元,得出的比率是 93%,高於設下的門檻 92%,這便發出了短線買入訊號。
然後,在翌日以這收市價 32,790 元買入比特幣,並於同日收市時沽出,作為短線買賣策略,結果會是如何呢?
把相關邏輯寫成 Python 程式,以 2022 年 1 月 1 日至 2023 年 4 月 1 日期間的比特幣價格數據,作為 backtest 的對象,期間總共發出 56 次買入訊號,勝率是 48.21%,雖說低於一半,但那 27 次的累計獲利,遠高於 29 次的累計虧損,使期內的年回報率高達 33.18%!
附圖3
而且期內,這個短線策略不但在絕對回報率上跑贏長揸比特幣,連最大回撤(maxium draw down)也小得多,僅為 13%,而期內長揸比特幣的最大回撤達 67%,反映期內這策略比長揸更為安全。
要注意的是,比特幣是每日 24 小時都有交易,收市價制度或會因不同交易所而異,是次比特幣價格歷史數據來自雅虎財經,而雅虎財經是參考 CoinMarketCap。另外,上述的 Python 程式模擬交易中,未有計算交易費用及買賣差價等,未必百分百等於現實交易的成效。
免責聲明:
本文內容不是投資意見,亦不構成任何投資產品的要約或建議,僅用於研究。