Kdb 从nbbo表中提取间谍信息
我有一个nbbo表,我想在整个月的某个特定时间间隔(10秒、30秒、1分钟、5分钟)后从中提取间谍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_
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)获得最接近的出价/要价。策略/日期列上没有属性。我不知道如何对函数进行分析(抱歉)。