问题标签 [blotter]

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 回答
3247 浏览

r - 在 quantstrat 中不断出现“暗淡与对象的长度不匹配”

我一直在修改几个月前使用 quantstrat 进行的回测。在我添加信号和规则 6(donchian 通道低)之前一切正常,我的完整代码如下。任何帮助将不胜感激。

提前致谢。

PS:对不起,如果代码看起来很乱,这是我第一次在这里提问。

0 投票
0 回答
343 浏览

r - 多币种策略 - Blotter & Quantstrat

我想在这个线程上反弹

http://r.789695.n4.nabble.com/Multi-currency-example-for-blotter-td1692132.html

基本上,我正在使用 quantstrat 对策略进行回测,其中我有多种货币的工具,但我想要以美元为单位的汇总报告(即以美元为单位的账户和投资组合)

为简化起见,假设我在 BRENT 期货(欧元)上回测一个简单的 20-120 MA 交叉策略,但我希望我的 PnL 为美元。

我会尽量提供所有必要的信息,因为 Joshua Ulrich 对可重复的例子很严格,他是对的。

我的导入 csv 文件和清理数据的功能

数据可在此处获得

https://gist.github.com/nbmacro

一旦我以正确的格式导入了我的 BRENT.csv,我就设置了仪器

所以我导入了我的数据,设置了仪器,我可以运行通常的 quantstrat 代码。

基本上,模型交易正确。举个例子来说明我的观点,让我们以第一笔交易为例,该模型在 2002-03-06 在 22.72 做多。第二天的收盘价是 23.3。所以欧元的盈亏应该是 (23.3-22.72)*1000 (乘数) = 580€。在 2002 年 3 月 7 日,EURUSD 的收盘价为 0.8822,因此 USD 的 Pnl 应为 580*0.8822 = 511.67 美元。

有趣的是,当我用货币 = EUR 设定未来的布伦特原油时

我在 2002-03-07 在 643.45 收到 PnL

当我用货币 = USD 设定未来的布伦特原油时

我在 2002 年 3 月 7 日在 580 处获得了 PnL

这不合逻辑。隐含的 EURUSD 为 (580/643) = 0.90,而正确汇率为 0.8822。

所以我的问题是 - 我们可以处理几种货币吗?- 如果是,我错在哪里?

非常感谢提前,

尼古拉斯。

0 投票
0 回答
52 浏览

r - 在 Excel 和 R 之间传输交易

有没有办法在 R 和 Excel 之间进行调用,以便使用 EOD 数据运行 R quantstrat 包。将提议的交易发送到 excel 文件(必须手动插入,因为经纪人没有 API),然后将交易从 excel 文件导入 R 以进行持续分析?谢谢你的帮助

0 投票
1 回答
267 浏览

r - 从 xts 0.9.7 更新到 0.10.0 时,Xts 转换失败

从 xts 0.9.7 更新到 0.10.0 时,Dataframe 到 xts 的转换失败。

猜猜xts 0.10.0 不是一个完成的版本。然而我更新到 0.10.0,因为quantstrat包需要吸墨器包,它需要 xts 0.10.0。我需要它来将刻度数据数据框转换为 xts 对象,以在其上运行 quantstrat 策略(需要 xts 对象)。

0 投票
0 回答
115 浏览

r - 运行贸易统计时 Quantstrat / Blotter 变暗错误

有一个从 txt 文件生成的xts对象。它包含 5 行:Open、High、Low、Close、S_Base。S_Base 是一个二进制信号,当 Low = Close 时为 TRUE(等于 1)。考虑制作 55 行的最小可重现示例。它有 4 个 TRUE 信号。

下面的 quantstrat 代码在信号 TRUE 时进入 long 状态,在信号 FALSE 时进入 flat 状态。这导致系统在开仓后的一段时间内平仓。系统生成 4 次往返。它工作得很好。但是blotter包函数perTradeStats给出了以下错误:

如果我将相同的代码应用于通过从 Google 下载代码生成的 xts(使用一些简单的 SMA 交叉作为信号),则不会出现错误。我不知道为什么。以下是最小可重现示例的代码。提前感谢您的帮助。

0 投票
2 回答
273 浏览

r - 在 Fedora Linux 中最近更新的 R 中安装 Quantstrat

我最近更新了我的 Fedora 发行版,R 也更新了。我重新安装了大部分软件包,但我无法安装 blogger 和 quantstrat。

我该如何解决这个问题?谢谢!

我得到的错误如下:

install.packages 中的警告:包 'quantstrat' 不可用(对于 R 版本 3.4.0)

我的 sessioninfo 如下:

R版本3.4.0(2017-04-21)平台:x86_64-redhat-linux-gnu(64位)运行下:Fedora 25(二十五)

矩阵产品:默认 BLAS/LAPACK:/usr/lib64/R/lib/libRblas.so

语言环境:[1] LC_CTYPE=es_AR.UTF-8 LC_NUMERIC=C LC_TIME=es_AR.UTF-8 LC_COLLATE=es_AR.UTF-8
[5] LC_MONETARY=es_AR.UTF-8 LC_MESSAGES=es_AR.UTF-8 LC_PAPER=es_AR。 UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C LC_MEASUREMENT=es_AR.UTF-8 LC_IDENTIFICATION=C

附加的基础包:[1] stats graphics grDevices utils datasets methods base

通过命名空间加载(未附加):[1] compiler_3.4.0 tools_3.4.0

0 投票
1 回答
73 浏览

r - 投资组合中的最终权益(和其他交易统计)更新问题 - 吸墨纸

我在投资组合中有多个符号,但在运行记账交易策略时,最终净值仅更新已运行的最后一个符号。当研究股权如何更新每笔交易时,似乎当引入一个新符号时,股权会回到最初设定的原始值(100 万)。

这是投资组合如何逐月更新一个符号的方式:

为什么会这样?

希望我的问题有意义,并在此先感谢您

0 投票
1 回答
413 浏览

r - 计算策略的平均回报

场景(使用 quantstrat、blotter 和投资组合分析)

  • 我有 10k 初始股权
  • 我有一个策略,我想回测超过 3000 个符号宇宙(股票)
  • 假设该策略是一个简单的 MA 交叉
  • 每次我获得买入交叉时,我都会购买价值 10k 的股票并在卖出交叉时平仓
  • 出于回测目的,该策略可以在没有任何投资组合限制的情况下进行交易,因此我可能在任何时间点持有 100 多个头寸,因此不应考虑初始权益。

我想知道这个策略在所有交易中的平均回报。

实际上,如果我只有 10k,我一次只能进行一笔交易,但我想从统计上知道平均回报是多少。

然后,我想将此与股票指数基准进行比较。

  • 我是 SUM 还是 MEAN 每个符号的返回流
  • 是投资组合的回报吗,这是否考虑了初始权益?- 我不希望回报是初始权益的百分比或考虑交易品种的交易方式。
0 投票
1 回答
310 浏览

r - 保存和加载吸墨纸组合

我正在使用记事本来保存和记录一些交易,但我需要每天保存和加载它们。

我无法保存我的交易,我相信会发生这种情况是因为它们处于由吸墨纸(.blotter)创建的不同环境中 - 与我通过谷歌搜索我的问题所获得的不同。

我已经建立了一个交易的例子:

然后我尝试保存它(这不起作用)并考虑像下面的代码一样加载它:

我非常了解 R 和 stackoverflow,所以如果我在我的问题中遗漏任何信息,请告诉我,非常感谢您的帮助。

一切顺利,

奥古斯托

0 投票
0 回答
125 浏览

quantstrat - quantstrat_0.10.7 警告消息:.updatePosPL / 修改最终结果

我以前使用 quantsrat_0.9.1739 和blotter_0.9.1741 有一段时间了,它工作正常,直到我用blotter 0.12.4 将它们更新到最新版本0.10.7。

我之前编写的大多数模拟都包含以下消息:(这个是从演示(macd)中提取的)

Warning message: In .updatePosPL(Portfolio = pname, Symbol = as.character(symbol), : Could not parse ::2018-01-12 as ISO8601 string, or one/bothends of the range were outside the available prices: 2007-01-03/2014-05-30. Using all data instead.

它修改了我过去生成的近 50% 的回测的最终结果。如果我回到以前版本的 quantstrat 并运行相同的策略,一切都会恢复正常。

如果任何可能遇到与我相同情况的人可以让我知道如何解决此问题,我将不胜感激。

以下是有关我的会话的更多信息:

提前感谢您提供的任何帮助!