quantstrat demo luxor.4.paramset.timespan 优化

quantstrat demo luxor.4.paramset.timespan optimization

我正在尝试 luxor.4.paramset.timespan.R 寻找 luxor 策略和脚本 运行 的最佳入场时间,没有错误。然而,当我使用 tradeGraphs() 检查结果时,最大 Net.Trading.PL 仅为大约 20k,而 luxor.1.basic.strategy.R 使用 nFast = 1,nSlow = 44 而没有时间跨度优化的结果为 106k。我没有 运行 上面的完整 24x24 小时扫描,而是使用 .nSamples = 80 和:

.timespans<-c('T06:00/T10:00', 'T07:00/T11:00', 'T08:00/T12:00', 
    'T09:00/T13:00', 'T10:00/T14:00', 'T11:00/T15:00', 'T12:00/T16:00')

我检查了 luxor.timespan.24x24.2002-2008.RData 中完整扫描版本的结果,NetTrading.PL 也差不多是 20k。

我很困惑,有什么不对吗?或者是将时间跨度分布添加到策略中,然后 apply.parmaset() 实际上减少了 Net.Trading.PL?

有人能帮帮我吗?提前致谢。

我刚开始学习 R,并没有真正更改代码中的任何内容。这是文件 luxor.2.add.paramsets.R

中的一个小节
## Timespan paramset

add.distribution(strategy.st,
    paramset.label = 'Timespan',
    component.type = 'enter',
    component.label = 'EnterLONG',
    variable = list(timespan = .timespans),
    label = 'EnterLong'
)

add.distribution(strategy.st,
    paramset.label = 'Timespan',
    component.type = 'enter',
    component.label = 'EnterSHORT',
    variable = list(timespan = .timespans),
    label = 'EnterShort'
)

add.distribution(strategy.st,
    paramset.label = 'Timespan',
    component.type = 'exit',
    component.label = 'Exit2LONG',
    variable = list(timespan = .timespans),
    label = 'ExitLong'
)

add.distribution(strategy.st,
    paramset.label = 'Timespan',
    component.type = 'exit',
    component.label = 'Exit2SHORT',
    variable = list(timespan = .timespans),
    label = 'ExitShort'
)

add.distribution.constraint(strategy.st,
    paramset.label = 'Timespan',
    distribution.label.1 = 'EnterLong',
    distribution.label.2 = 'EnterShort',
    operator = '==',
    label = 'EnterTimespan'
)

add.distribution.constraint(strategy.st,
    paramset.label = 'Timespan',
    distribution.label.1 = 'ExitLong',
    distribution.label.2 = 'ExitShort',
    operator = '==',
    label = 'ExitTimespan'
)

add.distribution.constraint(strategy.st,
    paramset.label = 'Timespan',
    distribution.label.1 = 'EnterLong',
    distribution.label.2 = 'ExitShort',
    operator = '==',
    label = 'EnterExitTimespan'
)

这里是文件 luxor.4.paramset.timespan.R

的一个小节
require(doParallel)
registerDoParallel(detectCores())

results <- apply.paramset(strategy.st, paramset.label = 'Timespan', 
portfolio.st = portfolio.st, account.st = account.st, 
nsamples = .nsamples, verbose = TRUE)

stats <- results$tradeStats
print(stats)
save(stats, file='luxor.4.paramset.timespan.RData')

如果您不提供 reproducible example,真的很难提供帮助,尤其是当您对代码进行了更改时。 "did not change anything in the code really",您可能认为自己,但您并不知道您所做的更改可能会影响输出的所有方式。

运行 按原样进行的演示不会在任何接近您提到的值的地方产生损益结果,而且我无法通过根据您在问题。

尽管如此,我认为您对时间跨度优化损益的期望非常不切实际。如果您将交易时间限制在每天 4 小时,这就是时间跨度优化所做的,那么期望类似的损益(甚至更高的损益)可能是不合理的。

在我看来,您一天中仅 16% 的交易时间的损益大约是您全天 24 小时交易所赚取的损益的 16%。