我做了一个开源 Python 包: volas。
一个 4 年、15 分钟级别的交易数据回测,单个标的大约就是 14 万根 K 线。50 个标的就是约 700 万行。跑这还没开始扫参数,也还没开始训练模型。经常一个回测个把小时,还没跑模型光数据处理就花掉半小时也是常有的事情。
很多时候真正先把人卡住的不是策略逻辑,而是数据处理:读数据、拼特征、算 RSI 、MACD 、ATR 、Bollinger Bands ,一跑就是好几分钟。模型还没开始训练,回测还没真正跑起来,特征表已经先变成瓶颈。
如果是在实时循环或者逐根 K 线回测里,这个问题会更明显:K 线每新增一根,pandas 流水线就可能把整列指标重算一遍。但从数据依赖上看,新来的只是最后一根 K 线,前面大多数指标值其实已经稳定了。
我之前做了个 https://github.com/kaelzhang/stock-pandas ,但后来发现它是真的太慢了,哪怕后来我把部分内容用 pyO3 换成了 rust ,但发现很大的瓶颈发生在 pandas 本身。最后无奈之下,只好把整个全部用 rust 重写了。
volas 的思路是把 OHLCV 指标计算这层做好:
df["rsi:14"]、df["macd"];一个最小例子:
df["rsi:14"]
df.append(new_bar)
df["rsi:14"] # 只刷新受影响的尾部窗口
我现在最想收集三类反馈:
volas 明显输给 TA-Lib / pandas-ta / 自己实现。它不是交易信号服务,也不是通用 pandas 替代品;普通表格分析继续用 pandas / polars 就好。volas 只想把 OHLCV 技术指标这层做快、做全、做得适合实时追加。
GitHub: https://github.com/kaelzhang/volas
在很多场景下是非常的快了,不少场景下快了几百倍。这里也有个性能对比: https://volas.ost.ai/
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.