量子化中的资本意识位置大小

时间:2014-08-18 20:40:02

标签: r quantstrat

我希望特定资产(符号)的最大允许位置是资本(初始分配+ PL)和指标的函数。我尝试过替换osMaxPos。我在顶部添加了这个,其中初始值是硬编码的,ddQ是我的指标,

updatePortf(portfolio, symbol, Dates=paste('::',as.Date(timestamp),sep=''))
cumPL <- sum(getPortfolio(portfolio)$symbols[[symbol]]$posPL$Net.Trading.PL)
print(paste0("expFluct", data$ddQ[timestamp]*2))
maxPosVal <- (10e6+cumPL) * data$ddQ[timestamp]*2
print(paste0("maxPosVal = ", maxPosVal))
addPosLimit(portfolio, 
          symbol=symbol, 
          timestamp = first(index(data)),
          maxpos = maxPosVal
)

这可行,但由于我的投资组合在每次通话时都被标记,因此需要执行日内策略,大约2年的1分钟数据从几分钟到几小时。有人能指出一种更有效的方法吗?感谢。

1 个答案:

答案 0 :(得分:6)

请改用重新平衡规则,例如rulePctEquity

demo('macdRebalancing')

举个例子。

大多数真实投资组合不会在每笔交易中重新平衡,因为这不是特别实用,尤其是在日内数据上。

rulePctEquity确实致电updatePortf,但在实践中,通常会在每次新观察时调整您的交易规模。

它与您的示例不同,标记整个投资组合,并查看总权益,而不仅仅是在一个工具中累积的P&amp; L.

如果您想更频繁地调整,或者想要在单个乐器中根据P&amp; L进行调整,那么您根本不需要updatePortf。如果您只想在单个乐器中使用初始分配加上P&amp; L,那么您应该从Txns表中对该乐器的实现P&amp; L求和,并根据您的开放时间差来计算未实现的P&amp; L位置和当前市场价格。在大多数情况下,这比调用updatePortf快几百倍。