问题标签 [back-testing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
3391 浏览

python - Python Backtrader 错误:FileNotFoundError:[Errno 2] 没有这样的文件或目录:'AAPL'

我正在尝试使用Python 3.8 中的backtrader对使用's模块AAPL从 Yahoo Finance 获得的历史股票价格进行回测。backtraderYahooFinanceData

问题:数据似乎是从雅虎财经下载的,但在回测过程中,我们得到一个错误:

FileNotFoundError:[Errno 2] 没有这样的文件或目录:'AAPL'

知道我们如何解决这个问题吗?

系统:

  • Mac OS X 10.15.3
  • Python 3.8.0
  • 反向交易者 1.9.74.123

重现错误的 Python 代码

错误堆栈

0 投票
1 回答
52 浏览

python - 如何识别python数据框中第一次出现的条件并对其进行计算?

我真的很难找到一个逻辑。我有一个名为Col的数据集,如下所示。我正在使用 Python 和 Pandas

我想设置一个名为 "STATUS" 的新列。逻辑是

一个。当 Col==0 时,我会购买。但是只有当 Col==0 是数据集中的第一个值或Status Sell之后,才会发生这种 Buy 。不能有两个买入值之间没有卖出

湾。当 Col<=-8 我会 卖出。但是,如果在 Satus 列中之前有买入,就会发生这种情况。不能有两个Sells之间没有 Buy 。

我已经提供了我希望输出的示例。非常感谢任何帮助

这里原始数据在列中:我想要的Col和输出处于状态

0 投票
1 回答
803 浏览

python - 在 Python 中计算 RSI 以进行 BTC 交易回测

我已经计算了 BTC 的 RSI,效果很好。我想在我的数据框中添加一个新列 [Position],它指示我当前的位置是多头还是空头。现在我正在尝试做一个循环,如果我在做多或做空 BTC,它应该给我输出。思路如下:如果 RSI 处于超买状态 (>70) 并再次跌破 70,则输出头寸应为空头。如果 Rsi 处于超卖状态 (<30) 并开始升至 30 以上,则信号应为多头。如果 RSI 正在上升并且最后一个信号很长,我希望介于两者之间的所有值也很长,直到出现短信号(反之亦然)。

此外,在 2016 年 3 月 13 日计算的第一个 RSI (时间序列的开始)是 40.41 并且正在上升,这就是为什么如果在生成短信号之前的第一个值设置为 Long 会很棒,我没有整合在我的代码中,有人知道如何实现吗?

我的代码如下所示:

循环给了我一个语法错误......有人可以告诉我如何让这个循环运行吗?

非常感谢您的支持!我感谢你们的每一个想法!

一切顺利,保持保存!

0 投票
0 回答
78 浏览

python - Python多处理性能问题

我在 python 中构建了一个回测器,它在 70 毫秒内完成了完整的运行。在单个线程上(使用 for 循环)我可以运行这个回测器,它显示出正常的性能(每次迭代大约 70 毫秒):

我的问题如下:每当我尝试使用多处理运行此功能时,性能要差得多(每次回测约 800 毫秒)。

我尝试过使用ProcessQueue对象的数组来做到这一点:

我也尝试过使用一个Pool对象:

我的处理器有 64 个内核和 128 个线程,所以我给它很高thread_nr(大约 100-120),但性能仍然很糟糕。

我的问题如下:有没有办法足够改进 python 多处理以实现每个回测(每个进程)70 毫秒?或者我应该用 C++ 重写整个项目(回测器和进程管理器)以实现最佳性能(使用所有可能的线程/整个 CPU)。

0 投票
1 回答
178 浏览

python - 是否可以在不使用回测库的情况下回测交易算法?

所以我的问题是,基本 python 库(如 pandas、numpy、matplotlib)中是否有函数可以在不使用回测库(如 pyalgotrade、backtesting.py 和 zipline)的情况下进行回测。那么,您是否可以仅使用基本库进行回测,或者如果您已经拥有历史数据,是否必须使用回测库?谢谢

0 投票
1 回答
1915 浏览

python - 使用 backtesting.py 回测交易策略

我想对交易策略进行回测。它相对简单。只需以起始价格购买股票。立即在上方的退出差价处设置卖单,在下方的进入差价处设置买入单。我希望它一直持续到最大开放批次次数。我已经设法在下面编写代码。订单是地方,但没有执行。我正在使用 backtesting.py 库 https://kernc.github.io/backtesting.py/doc/backtesting/index.html 示例:开始 = 125 订单应放置在买入 124,卖出 126..买入 125,卖出127..买126,卖128等等。下一个函数针对数据的每一行运行,并且在那里我无法设置当前的买卖价格。请帮助任何人

0 投票
1 回答
70 浏览

python - 如何以相同的方式对数据的子样本进行切片?

我在 Equity Research 工作,几周前刚开始将我的市场量化模型从 Excel 转换为 Python 代码。我的主要目标是创建一个多因子模型的回测器,然后将其演变为主动量化投资组合算法。

所以,想问一下 - 我怎样才能一次命名所有切片周期?另外,我需要将每个子样本分成 31 个不同的时期,其中 5 个时期是浮动的,应该从网上上传。有没有办法从公司的网站或其他方式解析它?

现在的代码是这样的,数据集还不是很大,但稍后会添加其他部分 -

0 投票
0 回答
48 浏览

python - 如何在python中执行简单的回测

我想知道是否有一个库,我可以在其中添加多头、空头、获利、止损价格列表。然后它计算

- 净利润 - 亏损 - 多头和空头头寸百分比 - 连续盈利和亏损交易的数量及其百分比

然后用这些计算绘制图表

0 投票
1 回答
65 浏览

json - 使用 zipline 进行 json 解码问题回测

我在 ubuntu 服务器上运行下面的测试代码。我正在尝试使用 zipline 回测一个简单的买入并持有策略。我只是想确保我已经正确安装了所有东西以进行回测。我对 zipline 很陌生。我收到以下错误,不知道为什么。

我正在按照此博客文章中的步骤进行操作:

https://towardsdatascience.com/introduction-to-backtesting-trading-strategies-7afae611a35e

我在 jupyter notebook 中运行代码。

当我之前运行代码以验证捆绑包已被摄取时,它显示的是:

代码:

输出:

下面是我在 jupyter notebook 中运行的代码以及错误。有没有人看到问题是什么,你能建议如何解决吗?

代码:

错误:

0 投票
1 回答
276 浏览

python - 有什么东西可以作为矢量化回测平台吗?

我有一个熊猫系列的时间值和 1 用于交易,0 用于不交易(加上不同的止盈和止损值),我正计划对其进行回测。

然而,上一次我使用反向交易者时,我必须手动搜索 Pandas 系列中的当前时间位置(速度慢得令人难以置信)。

是否有一个库可以让我拥有像矢量化方法这样的东西?(否则,您有任何提示,我可以如何更有效地执行此计划?)