怎么用Python回测交易策略
这篇文章主要讲解了“怎么用Python回测交易策略”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Python回测交易策略”吧!
依兰网站制作公司哪家好,找创新互联建站!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设等网站项目制作,到程序开发,运营维护。创新互联建站自2013年起到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联建站。
回测我们的第一个策略
安装fastquant
它就像使用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进行回测
下面的代码展示了如何在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
改进SMAC策略
增加快周期和慢周期
这将说明了小的改变可以很快地将一个成功的策略变成一个失败的策略。在快速增长期和缓慢增长期分别增加到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提供更多策略
请记住,fastquant拥有与现有策略库中相同数量的策略。到目前为止,有8种策略可供选择——包括简单移动平均交叉(SMAC)、相对强度指数(RSI),甚至是基于情绪分析的策略!
感谢各位的阅读,以上就是“怎么用Python回测交易策略”的内容了,经过本文的学习后,相信大家对怎么用Python回测交易策略这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!
本文题目:怎么用Python回测交易策略
网页路径:http://azwzsj.com/article/pdicds.html