首页 文章

kdb历史数据库分区设计 - 数千个符号的每日数据

提问于
浏览
0

kdb+ 数据库在 10,000 符号(例如股票,指数,ETF)上存储每日价格/回报数据的最佳分区(如果有的话)是什么?

我们谈论的是每个符号 25 年的每日数据(中位数)( 25 * 200 = 5,000 records ) . 因此总体大小将为 10,000 符号x 5,000 天= 50,000,000 记录 .

数据库将在一天结束时为每个符号写一个新价格 .

最典型的查询是将一个子集(10s甚至100s)符号的整个每日价格历史读入存储器,以进行进一步的时间序列分析/组合模拟 .

我正在考虑按符号进行分区,但是没有找到大量高于每日频率的解决方案,它们将滴答数据分区 day (每个日期都有自己的分区,例如 2015-02-12 ),或者 symbol range 分区(例如 ABC DEF GHI ... ),但不是 individual symbols .

在回测/组合模拟应用程序[1]中,我怀疑通过为每个工作者节点提供它自己的符号来并行计算价格转换(例如移动平均值或RSI),按个别符号划分可能会有一些后来的优势 . 相反,按天/周/年划分则不会提供这种优势 .

[1]这基本上首先循环每个符号并将其时间序列预处理为变换的时间序列以生成信号(例如,计算价格的移动平均值) . 然后每天循环一个路径依赖(其中投资组合是一个有状态的对象)时尚,每天检查和处理信号

1 回答

  • 1

    正如@GilbertLeBlanc所说,50米肯定不是很多,如果这是预期的大小,那么最好(在这个用例中)展示 table (即根本没有分区)以及使用列上的属性用于过滤( p# or g#on ticker,因为如果你计划进行大规模扩展(超过100米行),你可以很好地扩展 .

    如果您主要计划搜索特定sym的所有历史数据,则日期分区将是一个坏主意(因为查询必须遍历每个日期分区=许多磁盘读取) .

相关问题