2

我希望使特定资产(符号)的最大允许头寸成为资本(初始分配+ 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 分钟数据,从几分钟到几小时不等,因为我的投资组合在每次通话中都被标记。有人可以指出一种更有效的方法吗?谢谢。

4

1 回答 1

6

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

demo('macdRebalancing')

例如。

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

rulePctEquity确实调用updatePortf,但在实践中,您通常会在每次新观察时调整您的交易规模获得很少的价值。

它与您的示例的不同之处在于标记整个投资组合,并查看总权益,而不仅仅是一种工具的累积损益。

如果您想更频繁地调整,或者只想根据单个工具中的 P&L 进行调整,那么您根本不需要updatePortf。如果您只希望您的初始配置加上单个工具的损益,那么您应该从Txns表格中将该工具的已实现损益相加,并根据您的未平仓头寸和当前市场价格的差额计算未实现损益。updatePortf在大多数情况下,这将比调用快数百倍。

于 2014-08-18T21:07:16.820 回答