从 nbbo table 中提取 SPy 信息

Pulling SPy info from nbbo table

我有一个 nbbo table 我想从某个特定时间的特定时间间隔(10 秒,30 秒,1 分钟 2 分钟,5 分钟)后从整个月中提取间谍 nbbo。我正在使用以下代码,但需要一些时间。能否请有人建议我一些替代方法来解决它

dtlist:h"select distinct date from t where strategy=`xxx,date within (2014.05.01,2014.05.30)"

spytab::();
grabspynbbo:{[dt]
tbl:{ distinct h "select date,trade_id,sym:`SPY, linetime:`time$trans_time from t where strategy = `xxx,date = ",string x}[dt];    

    getData:{[tbl] tempNbbo:select from nbbo where date in tbl`date,sym in `SPY,linetime within(09:30t;16:30t);
    t1:select sym,linetime:(linetime+00:00:10t),trade_id from tbl;
    t2:select sym,linetime:(linetime+00:00:30t),trade_id from tbl;
    t3:select sym,linetime:(linetime+00:01:00t),trade_id from tbl;
    t4:select sym,linetime:(linetime+00:02:00t),trade_id from tbl;
    t5:select sym,linetime:(linetime+00:05:00t),trade_id from tbl;
    t6:select sym,linetime:(linetime+00:10:00t),trade_id from tbl;

    t1:`trade_id xkey select trade_id,bbo10s:0.5*(bid+ask) from (aj[`sym`linetime;t1;tempNbbo]);
    t2:`trade_id xkey select trade_id,bbo30s:0.5*(bid+ask) from (aj[`sym`linetime;t2;tempNbbo]);
    t3:`trade_id xkey select trade_id,bbo1m:0.5*(bid+ask) from (aj[`sym`linetime;t3;tempNbbo]);
    t4:`trade_id xkey select trade_id,bbo2m:0.5*(bid+ask) from (aj[`sym`linetime;t4;tempNbbo]);
    t5:`trade_id xkey select trade_id,bbo5m:0.5*(bid+ask) from (aj[`sym`linetime;t5;tempNbbo]);
    t6:`trade_id xkey select trade_id,bbo10m:0.5*(bid+ask) from (aj[`sym`linetime;t6;tempNbbo]);

    (ij/) (t1;t2;t3;t4;t5;t6)  
        };
    h1(getData;tbl)}
    spytab::(uj/)grabspynbbo each dtlist`date

我将不胜感激任何帮助。 谢谢, 莫希特

尝试进行以下两个修改,这应该会提高速度(terrylynch 也提到过):

a) 在 where 子句中的策略条件之前使用日期条件(您的代码中有 2 个查询)。

b) 在您的 tempNbbo table 上使用 `g#`s# 属性。这将大大加快 ``aj 的速度。

参考:http://code.kx.com/q/ref/joins/#aj-aj0-asof-join(查看备注部分)