问题标签 [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 投票
1 回答
213 浏览

r - 使用 quantstrat 进行投资组合优化

我想对权重经过均值方差优化的资产组合进行回测。

我在这里这里都有示例,但所有示例都处理固定的 orderSize/tradeSize 或仅针对 1 个基础资产计算的灵活 ordersize。但是,均值方差算法计算一篮子资产的权重(任何资产的分配都应取决于其与其他资产的关系)

我的理解是函数osFUN中的参数add.rule返回特定交易品种的订单大小。它可以为所有符号返回一系列权重吗?如果是这样,“osFUN”应该如何构建?此外,是否会osFUN在每个交易日对每个交易品种调用,还是对整个投资组合仅调用一次?

欢迎任何其他可以解决此问题的开源软件!

感谢您的帮助!

0 投票
1 回答
154 浏览

r - 回测 R 交易的未平仓头寸计数器

开始回测一些交易数据,特别是一个非常基本的均值回归想法,我无法理解如何处理这个概念。

一旦 DifFromFv(与公允价值的偏差)达到 -10 并且随后随着 DifFromFv 扩展 -3 的倍数(-13,-16,- 19等)而每次DifFromFv从上次更改的'posy'恢复+5时'posy'减少1?简而言之,一旦 DifFromFv 达到 10 点并平均每 3 点,我就买入,同时将每个单独的平均值取出以获取 5 点的利润。

例如:

应该注意的是,每个剪辑的止盈始终设置为 -5、-8、-11 等。增量,无论在哪里填充平均值,如 avg #2 的目标利润为 -11.00 而不是 -11.60。这既是为了减少现实填充与数据填充中的误差幅度,而且我很确定应该使这个概念的方法更容易思考。

提前致谢!

0 投票
1 回答
161 浏览

statistics - 访问前向测试统计数据

我正在使用该TesterStatistics()函数(从该OnDeinit()函数调用)来导出各种策略测试统计值:

这可行,但似乎仅限于简单的回测。

如何导出回测和前测结果?


前向测试的结果显示在单独的选项卡“前向”上。远期周期的开始日期在图表上由一条垂直线标记:

前向测试的结果

我可以通过编程方式访问这些信息吗?

0 投票
0 回答
88 浏览

r - Quantstrat:应用信号错误消息

我想使用 quantstrat 检查策略。该策略将使用自定义指标作为信号。

在初始设置、信号和规则定义之后,我调用了返回以下错误的函数“applySignals”(“信号”部分的最后一行):

我的合并数据(带有时间序列和指标的“xts”)看起来像:[编辑]添加一些“观察到”数据以重现代码

按照下面的代码:

0 投票
1 回答
125 浏览

r - 为什么模拟股票收益在 R 中的 pbo(回测过拟合的概率)包中的“pbo”小插图中重新缩放并重新居中?

这是小插图中的相关代码,稍作改动以使其适合此处的页面,并使其易于复制。省略了可视化代码。评论来自小插图作者。

(完整的小插图:https ://cran.r-project.org/web/packages/pbo/vignettes/pbo.html )

这是我很好奇的部分:

为什么要在 for 循环中转换数据,这种重新缩放和重新居中是否需要用真实的回报来完成?或者这只是作者为了让他的模拟回报看起来更像真实的东西而做的事情?

谷歌搜索和通过 stackoverflow 搜索发现了一些关于将波动率缩放到时间的平方根的文章和帖子,但这看起来与我所看到的不太一样。通常它们涉及将一些短期(即每日)波动性度量乘以时间的根,但这并不完全是这样。此外,该包的文档不包括这块重新缩放和重新居中代码。文档:https ://cran.r-project.org/web/packages/pbo/pbo.pdf

所以:

  • 为什么以这种方式转换数据/这种转换的结果是什么?

  • 是否只需要这个模拟数据,还是我需要
    类似地转换实际回报?

0 投票
2 回答
112 浏览

r - 比较前一天的高点和低点

我正在尝试制作和指标以在我的 quantstrat 回测中使用,但似乎无法弄清楚如何编写它。基本上,我想将 2 天前的高点和低点与 3 天前的 H&L 进行比较。如果第 2 天的 H&L 低于第 3 天,我会将其设为买入信号,否则我会将其设为空头信号。之后,我想制作另一个指标来做同样的事情,但将它提前一个时期,所以昨天的 H&L 低于 2 天前的 H&L,依此类推。

最初我使用的是 donichan 通道,但意识到这不会起作用,因为它会保持相同的值,直到其中一个值创出新高或新低。

我知道这是一个如此简单的问题,我想多了。

0 投票
2 回答
1556 浏览

python - 为什么 backtrader 在回测时不显示时间?

我正在尝试使用 Backtrader 对策略进行回测,并且在打印每次迭代的日期和时间时遇到问题(时间停留在 23:59:59)。

这是我的数据集的第一行:

数据集行

控制台上打印的内容:

控制台日志

最后我如何加载我的数据:

有人已经有这个问题了吗?

0 投票
2 回答
87 浏览

python - 对逻辑跨行的 for 循环进行矢量化

下表显示了在 中生成信号row 2然后在 中生成相反信号的策略示例row 5

我想优化live列的计算。

有没有办法在PandasNumpy中对这个问题进行矢量化以提高性能,生成与下面的 for 循环示例相同的结果?

0 投票
1 回答
93 浏览

r - 回测包R从对象中提取返回

我想根据存储在名为“结果”的 5 维数组中的手册从回测包中提取返回值)

这是回测包:

https://cran.r-project.org/web/packages/backtest/backtest.pdf

一个简单的示例如下所示:

当您运行摘要命令时,它将打印出每个十分位数的返回系列。我想将它们提取到可以用于进一步分析的数据框中。

有人知道,我如何访问返回系列或提取它?

0 投票
1 回答
3292 浏览

variables - Pine Script 如何在价格高于水平而不是在收盘后触发策略

下面的脚本将触发策略的开盘部分,收盘后的柱。如何更改变量“关闭”,以便在 SMA 14 和 28 交叉的确切点而不是之后的柱线处测试策略?或者那不可能