VeighNa量化社区
你的开源社区量化交易平台
aiobird's Avatar
Member
离线
13 帖子
声望: 0

MTF wrote:

可以自己修改vnpy_mongodb层面的逻辑,实现分库分表了
好的。

通过vnpy db接口 导入数据,mongodb这边会创建独立的 collection来存储 所有的bar/tick数据。
现在数据体量比较大,都存在一个 collection 里面 会不会在检索数据上有性能问题?对比多个collection的情况,例如 bar类型数据,分别对应N个交易所的bar_collection
(因为数据体量比较大,我的回测框架里面 不能一次性把所有数据都load到内存里面,需要按一定频次load数据,所以对读取mongodb的性能比较敏感。)

MTF wrote:

有个针对期权的vnpy_optionstrategy模块,不过目前尚未开源
哦,好的。
基于vnpy,在期权回测上 我们做了些内存上的优化。
1,加载历史数据的时候,忽略所有bar 一致的信息。
2,用列表替换了字典。
3,load bar, 可以选择数据项。
现在测试结果,内存使用大约节约了35%的空间,回测的速度会慢10%左右(速度会慢,是因为再播放bar的过程中,会把load bar中的精简数据 恢复到初始状态。这样代码改动会小一些。)。

MTF wrote:

aiobird wrote:

我加载的数据是50ETF及其合约,2015-2022年的全部数据,大概2700W左右的数据项
每条bar数据,大概占用750字节的内存空间(这点我之前并没有意识到,1,python的消耗确实大。2,load data 装载的数据项,个人认为可以优化 精简一些内容,例如字典对比列表 就多出很多不必要的key信息)

你是要做期权策略?期权回测的模式不一样,数据要逐日加载的(每天合约范围会变)

是的,我们现在主要在期权上,其次是股票。
请教下 “数据要逐日加载的” 这个是哪个回测模块支持的? 我现在使用的是 vnpy_portfoliostrategy 。
(我需要回测6年的期权数据,这个每日加载数据 在哪里设置?能指点下么?)

这里 我想再问个问题,在这个基础上 按照vnpy的实例 做参数优化(遗传算法)。
假设启动了12个线程的情况下:
1,每个线程需要重新load data么?
2,每个线程占用的内存 都会21G么?(基于当前示例)

我加载的数据是50ETF及其合约,2015-2022年的全部数据,大概2700W左右的数据项
每条bar数据,大概占用750字节的内存空间(这点我之前并没有意识到,1,python的消耗确实大。2,load data 装载的数据项,个人认为可以优化 精简一些内容,例如字典对比列表 就多出很多不必要的key信息)

目前在使用 VNPY做回测,遇到的问题 是load data 为什么会占用很大的内存?
mongodb 单个数据库 一共才2.7G(而且里面包含了2个品种+其合约的数据),简单理解 load了数据库2/3的分钟bar,内存使用 21G左右? 怎么会占用怎么大空间?请教下 如何解决?还是说是使用上有不当的地方?
description

MTF wrote:

原理上是在回测引擎层面实现逐日加载的模式就行
好的,谢谢。

逐日加载模式?vnpy自带的功能还是说tick回测 切段加载?例如 一次回测 只测一天?
我们不是私募机构,几个人的小作坊而已。之前一直使用vnpy1.92(现在也还在用) 现在有期权策略上线 所以 考虑 直接做在VNPY3.6上。
在回测上,我们一直用自己的一个本地系统,类似于山寨了聚宽的一些基础功能。换到vnpy3.6上 数据加载模式 不一样了 所以有些问题

MTF wrote:

期权这块有个专门的OptionStrategy模块(商业版),支持按品种自动搜索每一日的交易合约列表,然后汇总加载数据。
这几天研究下 vnpy 还是有几个问题。
1,你这边提到的商业版 获取方式是什么?付费的话 联系谁?
2,再多品种回测(期权上) 我加载数据 尝试做了些回测,bar级(分钟) 还算可以。 但是如果加载 tick级的回测 (内存根本hold不住啊。。。) 这个问题如何解决?(tick级回测,之前我用得回测平台是订阅方式 每天重新加载数据 所以没遇到过这个问题)

example : portfolio_backtesting
通过 backtesting_demo.py 文件 做了一次多品种的回测。
了解的大致流程是: 定义回测品种+回测时间,选定策略,加载数据,开始回测,计算结果。
这里有个问题,需要回测期权数据(标的+合约),数据段(50etf 2015-2022 )和( 300etf 2019-2022) ,这里面一共 几万和 合约。
难道 需要再回测开始的时候 就需要把 品种都定义好了 加载数据么?(回测开始前,加载几万个合约的数据?) 之前用过的一些回测平台 都是支持订阅功能的,类似每天订阅+加载数据 回测。 请教 再VN.PY 上怎么解决此类问题?

MTF wrote:

PortfolioStrategy模块即可
我之前注意到这个模块了,vn.py的原始界面不支持 PortfolioStrategy的回测吧?
这个是需要自己动手 在源代码层面 做PortfolioStrategy的回测么?
刚开始用vnpy3.6,有些功能不太熟悉,想大致了解下。(担心 一顿魔改 最后发现 vn.py全支持...)

本地已经通过data_manger将数据存储到本地数据库。(A股,全票的日线/分钟数据)
现在需要每天 订阅100个票 做回测。 这个需求 现在vnpy的那个模块支持?还是得需要定制化?

© 2015-2022 微信 18391752892
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】