kdb中的回溯测试;在解析表的每一行时更新/传递表

kdb中的回溯测试;在解析表的每一行时更新/传递表,kdb,q-lang,Kdb,Q Lang,我有一个包含历史执行记录的交易表,其中包含时间戳、ric、边、价格、数量(其中ric都是股票)。此外,我在每次执行时都调整了期货价格快照表。因此,交易表包含:时间戳、ric、单边、价格、数量、期货价格 我正在尝试创建一个日内回溯测试系统,其中: 当解析每个执行记录时(通过{BACKTESTNIG\u LOGIC\u HERE}每个交易),将使用不同的逻辑集来决定套期保值时机 我是否可以创建一个套期保值表,该表可以写下执行期货的时间戳、执行价格、交易数量、累计数量,而无需写入磁盘?基本上,我想看看

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

我正在尝试创建一个日内回溯测试系统,其中: 当解析每个执行记录时(通过
{BACKTESTNIG\u LOGIC\u HERE}每个交易
),将使用不同的逻辑集来决定套期保值时机

我是否可以创建一个套期保值表,该表可以写下执行期货的时间戳、执行价格、交易数量、累计数量,而无需写入磁盘?基本上,我想看看是否有可能动态更新套期保值表(当每个执行记录被传递时)并传递套期保值表

我一直在看
扫描
,但我不确定这样做是否正确。你们能提供一些关于这件事的见解吗


谢谢大家!

是的,在这种情况下,您需要使用over

这允许您在初始状态下传递、更新它并在下一次迭代中返回

例如:

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增加的表)