我希望使特定资产(符号)的最大允许头寸成为资本(初始分配+ 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分钟数据,从几分钟到几小时不等,因为每次调用都会标记我的投资组合。有人可以指出一种更有效的方法吗?谢谢。
最佳答案
请改用重新平衡规则,例如rulePctEquity
。
看到demo('macdRebalancing')
举个例子
大多数实际投资组合不会在每笔交易中都进行重新平衡,因为这不是特别实用,尤其是在日内数据中。rulePctEquity
确实会调用updatePortf
,但实际上,通过在每次新观察中调整交易量,您在实践中通常将获得很少的价值。
它与您的示例不同,它标记了整个投资组合,并查看了总权益,而不仅仅是一种工具中的累计损益。
如果您想更频繁地进行调整,或者只想基于单个工具中的损益进行调整,则根本不需要updatePortf
。如果您只想在单个工具中加上初始分配加损益,则应从Txns
表中对该工具的已实现损益进行求和,并根据未平仓头寸与当前市场价格的差额计算未实现的损益。在大多数情况下,这将比对updatePortf
的调用快数百倍。
关于r - 量化策略中的资本意识头寸规模,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25371670/