在kdb中进行回测;在我们解析每一行表时更新/传递表

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在kdb中进行回测;在我们解析每一行表时更新/传递表相关的知识,希望对你有一定的参考价值。

我有一个包含历史执行记录的交易表,其中包含时间戳,ric,边,价格,数量(其中ric是所有股票)。另外,我在每个执行时间都有一个期货价格快照表。因此,交易表包含:时间戳,ric,边,价格,数量,期货价格。

我正在尝试创建一个日内回测系统,其中:当每个执行记录被解析(通过{ BACKTESTNIG_LOGIC_HERE } each trade)时,将使用不同的逻辑集来决定对冲时间。

我是否可以创建对冲表,可以记下执行期货,执行价格,trade_qty,cumulative_qty的时间戳而无需写入磁盘?基本上,我想看看是否可以动态更新对冲表(当每个执行记录通过时)并传递对冲表。

我在看overscan,但我不确定这是否是正确的做法。你们能否就此事提供一些见解?

谢谢!

答案

是的,听起来像是在这种情况下你需要使用的东西。

这允许您传入初始状态,更新它并传入以进行下一次迭代。

例如:

q){.[x;(y`sym;`cnt);+;1]}/[([sym:()] cnt:`long$());trades]
sym | cnt
----| ---
ORCL| 114
YHOO| 110
AAPL| 105
IBM | 124
NOK | 120
CSCO| 112
MSFT| 95
DELL| 109
GOOG| 111

在这个简单的例子中,交易表被迭代(第二个arg到over),初始状态是简单的键控表([sym:()] cnt:`long$())

在每次迭代中,我们只需将1添加到相关sym的计数中。在实际使用中,您将在此处执行回测并从lambda函数返回更新的hedge表 - 此更新的表将在下一次迭代中传递回函数(例如,在此示例中每次增加sym的cnt ,下一次迭代接收到该cnt增加的表)

以上是关于在kdb中进行回测;在我们解析每一行表时更新/传递表的主要内容,如果未能解决你的问题,请参考以下文章

面试再也不怕 Handler 了,消息传递机制全解析

股票分钟数据存储方案及海量数据架构方案

合并两个数据帧r进行回测

KDB+ like asof 加入熊猫中的时间序列数据?

在 KDB/Q 中按时滑动窗口

SQL Server 视图何时更新?