quantstrat demo luxor.4.paramset.timespan optimization

时间:2016-09-09 21:21:16

标签: r quantstrat

我正在尝试luxor.4.paramset.timespan.R来找到luxor策略的最佳输入时间,并且脚本运行没有错误。但是,当我使用tradeGraphs()检查结果时,最大Net.Trading.PL只有大约20k,而使用nFast = 1的luxor.1.basic.strategy.R,没有时间跨度优化的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')

1 个答案:

答案 0 :(得分:0)

如果您不提供reproducible example,则很难提供帮助,尤其是当您对代码进行了更改时。您可能会认为,&#34;并没有真正改变代码中的任何内容,但您并不知道您所改变的所有方式都会影响输出。

按原样运行演示并不会在您提到的值附近产生P&amp; L结果,并且根据您在问题中提到的一些事项猜测您所改变的内容,我无法接近这些P&amp; L值。

尽管如此,我认为您对时间跨度优化P&amp; L的期望是非常不切实际的。如果您将交易时间限制为每天仅4小时,那么期望类似的P&amp; L(或更高的P&amp; L均值)可能是不合理的,这就是时间跨度优化所做的事情。

我觉得完全合理的是,你的P&amp; L在一天中仅交易时间的16%,大约是你在一天24小时内交易的P&amp; L的16%。