Kdb 从nbbo表中提取间谍信息

Kdb 从nbbo表中提取间谍信息,kdb,Kdb,我有一个nbbo表,我想在整个月的某个特定时间间隔(10秒、30秒、1分钟、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_

我有一个nbbo表,我想在整个月的某个特定时间间隔(10秒、30秒、1分钟、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
我将请求任何帮助。 谢谢
莫希特

试着做以下两项修改,这将提高速度(Terrylyynch也提到):

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

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


参考:(检查备注部分)

此处的未知数太多。什么是t?先有日期条款不是更有意义吗?战略上或约会上有没有替罪羊?您是否对函数进行了分析以确定减速的实际位置?aj是否符合推荐的最佳aj条件?t是一个表(100k obs),我从中选择我的特定时间(每天)。例如:(09:45:32.50,10:15:45.50)在2014.05.01,从现在开始,我需要在10秒、30秒、1分钟后拉间谍nbbo。我认为慢是因为一天spy nbbo表包含1100万obs AN,然后执行多个asofjoin,以便在(linetime+00:00:10t)获得最接近的出价/要价。策略/日期列上没有属性。我不知道如何对函数进行分析(抱歉)。