ricequant / rqalpha

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

如何在样本内回测结果的基础上在样本外继续跟踪策略表现? #90

Closed wanhanwan closed 7 years ago

wanhanwan commented 7 years ago

例如回测时的时间区间为2005/1/1至2016/12/31,我想在继续跟踪2017年以来的策略表现,但又不想从2005年开始重新跑一遍回测,我该如何做?

wh1100717 commented 7 years ago

@wanhanwan

可以通过 RQAlpha 的 persist_provider 来实现。

您可以参考 DiskPersistProvider 的实现。

您也可以参考 能不能考虑提供策略参数持久化的支持? 的讨论。

很抱歉,这块还没有比较详细的文档,而且对应的 API 和接口未来可能会重构。

我们也会尽快提供相关的文档,以及相关的 Mod 来支持回测/模拟/实盘 自定义持久化 相关的内容。

如果您不想使用我们提供的 Persist 相关内容,也可以通过 Mod 来独立实现您所需要的功能,大体思路如下:

wanhanwan commented 7 years ago

但是我的策略包括一个portflio和一个benchmark_portfolio,在执行benchmark_portfolio.set_state()会报 NotImplementedError 在BenchmarkAccount中没有实现set_state()方法?

wh1100717 commented 7 years ago

@wanhanwan 确实是是个regression bug 下一个版本会增加对应的set_state和get_satte方法

wh1100717 commented 7 years ago

@wanhanwan 我看了一下 BenchmarkAccount 继承自 StockAccount 其已经实现了 set_stateget_state 方法,是否可以贴一下具体的报错堆栈信息?

wanhanwan commented 7 years ago

应该是在portfolio.py文件里 setstate方法中if-else缺少ACCOUNT_TYPE.BENCHMARK条件。

wh1100717 commented 7 years ago

@wanhanwan 确实如此 非常感谢!!

techloghub commented 6 years ago

请问现在是否已经有详细的文档了呢?或者是否可以指导如何能够实现这一功能呢?谢谢