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%。
我正在尝试 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%。