投资组合/风险管理的头寸和交易数据库设计



我正在设计一个用于跟踪股票交易的数据库&实时投资组合持股。系统应能够在自定义时间段的基础上提取历史头寸(例如,当日持有量(。我目前的设计包括一个交易表和一个实时头寸表,当每笔交易被记录到数据库中时,它将自动触发实时头寸表的更新。我计划将PostgreSQL和TimescaleDB扩展用于事务表。

我有点困惑于如何实现历史持有的功能,因为作为某个时间戳t的历史持有可以通过将具有时间戳<=t的事务聚合在一起来导出。我应该使用一个单独的表格来记录历史持有量还是简单地进行汇总?我还考虑使用二进制文件来存储每天结束时的实时位置快照,以支持历史位置查找。

我在数据库设计方面几乎没有经验,因此任何建议/帮助都将不胜感激。

这个问题缺乏细节,所以我的回答一般。

可以做的一件事是有两个表:一个用于详细数据,另一个用于聚合。然后你每天从前者中为后者计算一条记录。对详细信息表使用分区可以轻松地去除旧数据。

如果数据结构允许,您也可以对两者使用相同的(分区的(表。然后每天计算一个新的聚合记录,删除当天的分区,并扩展"聚合"分区的分区边界。

如果您需要TimescaleDB扩展,请仔细考虑。如果它提供了你知道自己需要的好处,那就去做吧。如果没有,那就不要它。很少依赖总是很好的。存储时间序列数据并不意味着需要TimescaleDB。

最新更新