我希望特定资产(符号)的最大允许位置是资本(初始分配+ 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
)
Run Code Online (Sandbox Code Playgroud)
这可行,但在每次通话时标记我的投资组合时,会执行日内策略,大约2年的1分钟数据从几分钟到几小时.有人能指出一种更有效的方法吗?谢谢.
请改用重新平衡规则,例如rulePctEquity.
看到
demo('macdRebalancing')
举个例子.
大多数真实的投资组合不会在每笔交易中重新平衡,因为这不是特别实用,特别是在盘中数据上.
rulePctEquity确实打电话updatePortf,但在实践中,通过调整每个新观察的交易规模,你通常会得到很少的价值.
它与您的示例不同,标记整个投资组合,并查看总权益,而不仅仅是在一个工具中累计的损益.
如果您想更频繁地调整,或者想要在单个仪器中根据损益进行调整,那么您根本不需要updatePortf.如果您只需要在单个工具中进行初始分配和损益,那么您应该从Txns表中对该工具的已实现损益求和,并根据您的未平仓头寸和当前市场价格的差异计算未实现的损益.updatePortf在大多数情况下,这比呼叫快几百倍.