您好,登錄后才能下訂單哦!
這篇文章主要講解了“怎么用Python回測交易策略”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么用Python回測交易策略”吧!
它就像使用pip安裝一樣簡單!
# 在你的終端上運行這個 pip install fastquant # 或者,你可以這樣從jupyter運行這個 !pip install fastquant
從fastquant導入get_stock_data函數,用于拉取Jollibee Food Corp.(JFC)2018年1月1日至2019年1月1日的庫存數據。注意,我們有日期(dt)列和收盤價(close)的列。
from fastquant import get_stock_data jfc = get_stock_data("JFC", "2018-01-01", "2019-01-01") print(df.head()) # dt close # 2019-01-01 293.0 # 2019-01-02 292.0 # 2019-01-03 309.0 # 2019-01-06 323.0 # 2019-01-07 321.0
利用fastquant的回測功能和Jollibee Food Corp.(JFC)的歷史股票數據,對一種簡單的移動平均交叉策略(SMAC)進行回測。
在SMAC策略中,fast_period指用于快速移動平均值的時段,而slow_period指用于慢速移動平均值的時段。
當快速移動平均線從下方越過慢速移動平均線時,這被認為是一個“買入”信號,而如果它從上方越過到下方,這被認為是“賣出”信號。
首先,讓我們分別將快周期和慢周期初始化為15和40。
你應該在日志底部看到下面的最終投資組合價值。這個值可以解釋為你的投資組合在回測期結束時的價值(這里是2019年1月1日)。
你得到的“最終投資組合價值”和“初始投資組合價值”之間的差額,這將是基于回測的預期收益(在本例中為PHP 411.83)。
from fastquant import backtest backtest('smac', jfc, fast_period=15, slow_period=40) # 起始價值: 100000.00 # 最終價值: 100411.83
下面的代碼展示了如何在3行python中執行上述所有步驟:
from fastquant import backtest, get_stock_data jfc = get_pse_data("JFC", "2018-01-01", "2019-01-01") backtest('smac', jfc, fast_period=15, slow_period=40) # 起始價值: 100000.00 # 最終價值: 100411.83
這將說明了小的改變可以很快地將一個成功的策略變成一個失敗的策略。在快速增長期和緩慢增長期分別增加到30和50之后,我們的最終投資組合價值從100412 PHP下降到83947 PHP(減少16465 PHP)
backtest('smac', jfc, fast_period=30, slow_period=50) # 起始價值: 100000.00 # 最終價值: 83946.83
在這種情況下,我們的策略的性能實際上得到了改善!我們的最終投資組合價值從100412 PHP上升到102273 PHP(增加1861 PHP),之后將慢周期減少到35,并將快速周期保持在15。
backtest('smac', jfc, fast_period=15, slow_period=35) # 起始價值: 100000.00 # 最終價值: 102272.90
下表比較了我們3種SMAC策略的性能:
現在,這是否意味著我們應該用最好的SMAC策略交易?也許還沒有。
回測有相當多的局限性,克服這些局限性通常需要額外的步驟來增加我們對回測結果和建議可靠性的信心。
以下是回測的兩個限制,以及克服這些限制的保障措施:
這指的是你導出的“最佳參數”與前一個時間段的模式太吻合的情況。這意味著,當你決定使用該策略時,你的策略預期盈利能力不會轉化為實際盈利能力。
防止這種情況最好是從樣本中測試你的策略,這類似于在機器學習中使用“測試集”。這樣做的目的是,當你想評估你的交易策略的盈利能力時,你需要保留一個測試數據。這樣,就很難過擬合參數,因為你沒有基于該數據集優化策略。
這是由于在回測期間利用在測試期間不可用的信息而產生的偏差。例如,你可以在JFC上測試一個策略的有效性,假設你在JFC真正公開前一個月就已經知道它的財務表現(例如凈收入)。這會給你不可靠的信心,你的戰略可能會損失你很多錢。
在這種情況下,要避免這種偏差,最好的方法之一就是徹底驗證在回測策略時所做的假設。嚴格評估你的戰略,以及正確執行戰略所需的信息是值得的。
這些只是回測所帶來的眾多限制中的兩個。我確實打算寫一篇文章,在將來更詳細地討論這些,所以請繼續關注!
在解決了上述局限性之后,我們應該對我們選擇的戰略更有信心;但是,請記住,雖然我們可以對我們的戰略更有信心,但它在看不見的現實世界中的表現永遠不會百分之百確定。
我建議,一旦你在現實世界中采用了一種策略,那么就從相對較少的資金開始,并且只在該策略顯示出更為一致的成功時增加它;否則,準備好在現實世界中證明它效果不佳的情況下殺死它。
請記住,fastquant擁有與現有策略庫中相同數量的策略。到目前為止,有8種策略可供選擇——包括簡單移動平均交叉(SMAC)、相對強度指數(RSI),甚至是基于情緒分析的策略!
感謝各位的閱讀,以上就是“怎么用Python回測交易策略”的內容了,經過本文的學習后,相信大家對怎么用Python回測交易策略這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。