ricequant / rqalpha

A extendable, replaceable Python algorithmic backtest && trading framework supporting multiple securities
http://rqalpha.io
Other
5.38k stars 1.61k forks source link

简化参数优化过程 #129

Open xiaoluffy opened 7 years ago

xiaoluffy commented 7 years ago

目前参数优化的方法: http://rqalpha.io/zh_CN/latest/intro/optimizing_parameters.html#id2 建议新增一个优化类来简化这个流程,传入基本配置字典和变量字典。变量字典为一个 变量名:iterator/generator 的字典结构。 比如:

extra_config = {
    'short_period':[1,2,3],
    'long_period':range(5,8)
}
optimizer = Optimizer(basic_config, extra_config, max_workers= multiprocessing.cpu_count() / 2)
results = optimizer.run()
wh1100717 commented 7 years ago

这块 目前没有足够精力去讨论,不过参数调优这块现在确实并不是很显性,需要比较了解才可以做。

这个issue 先放在这里,随时关于参数优化有想法的时候都可以在这里留言,在确定要做这块的时候再决定到底使用什么方案。

cedricporter commented 7 years ago

参数优化这个最好加上 celery 来做分布式参数调优,毕竟单机调优速度有瓶颈而且没法横向扩展。以后的 Optimizer 底层实现可以考虑加上 celery 做分布式运算。

xiaoluffy commented 7 years ago

用celery做分布式是个好方法!在参数优化的过程中用到的数据是一样的,同一worker上的tasks没必要多次加载数据,最好Optimizer实现同一worker的内存共享,比如每个worker只启动一个子优化器(可以通过worker限制),加载数据后再启动多个线程来进行回测。

ruifeng96150 commented 5 years ago

这个需求还是很重要的,策略写好后,肯定是需要调参的,而现在的调参很不方便,每次新的参数都需要重新启用新的进程并读取数据,这个很浪费时间啊,请问这个需求什么时候提上日程啊?

wheniseeyou commented 3 years ago

这个需求还是很重要的,策略写好后,肯定是需要调参的,而现在的调参很不方便,每次新的参数都需要重新启用新的进程并读取数据,这个很浪费时间啊,请问这个需求什么时候提上日程啊?

我认为没有必要加上这个功能,调参就是过拟合的一个过程;好的算法对参数的敏感程度很低;