重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
這篇文章主要講解了“怎么用Python回測交易策略”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“怎么用Python回測交易策略”吧!
依蘭網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)建站自2013年起到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。
它就像使用pip安裝一樣簡單!
# 在你的終端上運行這個 pip install fastquant # 或者,你可以這樣從jupyter運行這個 !pip install fastquant
從fastquant導(dǎo)入get_stock_data函數(shù),用于拉取Jollibee Food Corp.(JFC)2018年1月1日至2019年1月1日的庫存數(shù)據(jù)。注意,我們有日期(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)的歷史股票數(shù)據(jù),對一種簡單的移動平均交叉策略(SMAC)進行回測。
在SMAC策略中,fast_period指用于快速移動平均值的時段,而slow_period指用于慢速移動平均值的時段。
當(dāng)快速移動平均線從下方越過慢速移動平均線時,這被認(rèn)為是一個“買入”信號,而如果它從上方越過到下方,這被認(rèn)為是“賣出”信號。
首先,讓我們分別將快周期和慢周期初始化為15和40。
你應(yīng)該在日志底部看到下面的最終投資組合價值。這個值可以解釋為你的投資組合在回測期結(jié)束時的價值(這里是2019年1月1日)。
你得到的“最終投資組合價值”和“初始投資組合價值”之間的差額,這將是基于回測的預(yù)期收益(在本例中為PHP 411.83)。
from fastquant import backtest backtest('smac', jfc, fast_period=15, slow_period=40) # 起始價值: 100000.00 # 最終價值: 100411.83
下面的代碼展示了如何在3行python中執(zhí)行上述所有步驟:
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策略的性能:
現(xiàn)在,這是否意味著我們應(yīng)該用最好的SMAC策略交易?也許還沒有。
回測有相當(dāng)多的局限性,克服這些局限性通常需要額外的步驟來增加我們對回測結(jié)果和建議可靠性的信心。
以下是回測的兩個限制,以及克服這些限制的保障措施:
這指的是你導(dǎo)出的“最佳參數(shù)”與前一個時間段的模式太吻合的情況。這意味著,當(dāng)你決定使用該策略時,你的策略預(yù)期盈利能力不會轉(zhuǎn)化為實際盈利能力。
防止這種情況最好是從樣本中測試你的策略,這類似于在機器學(xué)習(xí)中使用“測試集”。這樣做的目的是,當(dāng)你想評估你的交易策略的盈利能力時,你需要保留一個測試數(shù)據(jù)。這樣,就很難過擬合參數(shù),因為你沒有基于該數(shù)據(jù)集優(yōu)化策略。
這是由于在回測期間利用在測試期間不可用的信息而產(chǎn)生的偏差。例如,你可以在JFC上測試一個策略的有效性,假設(shè)你在JFC真正公開前一個月就已經(jīng)知道它的財務(wù)表現(xiàn)(例如凈收入)。這會給你不可靠的信心,你的戰(zhàn)略可能會損失你很多錢。
在這種情況下,要避免這種偏差,最好的方法之一就是徹底驗證在回測策略時所做的假設(shè)。嚴(yán)格評估你的戰(zhàn)略,以及正確執(zhí)行戰(zhàn)略所需的信息是值得的。
這些只是回測所帶來的眾多限制中的兩個。我確實打算寫一篇文章,在將來更詳細地討論這些,所以請繼續(xù)關(guān)注!
在解決了上述局限性之后,我們應(yīng)該對我們選擇的戰(zhàn)略更有信心;但是,請記住,雖然我們可以對我們的戰(zhàn)略更有信心,但它在看不見的現(xiàn)實世界中的表現(xiàn)永遠不會百分之百確定。
我建議,一旦你在現(xiàn)實世界中采用了一種策略,那么就從相對較少的資金開始,并且只在該策略顯示出更為一致的成功時增加它;否則,準(zhǔn)備好在現(xiàn)實世界中證明它效果不佳的情況下殺死它。
請記住,fastquant擁有與現(xiàn)有策略庫中相同數(shù)量的策略。到目前為止,有8種策略可供選擇——包括簡單移動平均交叉(SMAC)、相對強度指數(shù)(RSI),甚至是基于情緒分析的策略!
感謝各位的閱讀,以上就是“怎么用Python回測交易策略”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對怎么用Python回測交易策略這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!