本示例创建了限价订单(LOB)动力学的连续时间马尔可夫模型,并根据数据中观察到的模式开发了用于算法交易的策略。它是有关用于统计套利的机器学习的一系列相关示例的一部分(请参阅机器学习应用程序)。
探索性数据分析
要预测系统的未来行为,您需要发现历史数据中的模式。纳斯达克等交易所提供的大量数据在提供统计机会的同时,也给计算带来了挑战。该示例遵循 [4]的方法,通过寻找价格动能指标来探索LOB数据。
原始数据
加载LOBVars.mat
NASDAQ证券INTC的LOB预处理数据集。
load LOBVars
数据集包含每个订单的以下信息:到达时间t
(从午夜开始的秒数),1级要价MOAsk
,1级竞标价格MOBid
,中间价 S
和失衡指数I
。
创建一个图表,显示LOB不平衡指数I
和中间价的日内演变S
。
figure
t.Format = "hh:mm:ss";
yyaxis left
plot(t,I)
ylabel("Imbalance Index")
yyaxis right
plot(t,S/10000,'LineWidth',2)
ylabel("Midprice (Dollars)")
xlabel("Time")
title('Exchange Data: One Day')
legend(["Imbalance","Midprice"],'Location','NE')
grid on
![33215513ab17fc4bca889994f57a0c19.png](https://img-blog.csdnimg.cn/img_convert/33215513ab17fc4bca889994f57a0c19.png)
在这种规模下,失衡指数无法表明中间价格的未来变化。
要查看更多详细信息,请将时间标度限制为一分钟。
timeRange = seconds([36000 36060]); % One minute after 10 AM, when prices were climbing
xlim(timeRange)
legend('Location','SE')
title("Exchange Data: One Minute")
![fd7600092b7c2101cae7aad7c99ad34b.png](https://img-blog.csdnimg.cn/img_convert/fd7600092b7c2101cae7aad7c99ad34b.png)
在这种尺度下,失衡指数的急剧偏离与中间价格的相应偏离一致。如果这种关系是可预测的,则意味着一定规模的失衡可以预测未来的价格走势,那么对该关系进行量化可以提供统计套利机会。
在LOB中绘制间隔时间的直方图。
DT = diff(t); % Interarrival Times
DT.Format = "s";
figure
binEdges = seconds(0.01:0.01:1);
histogram(DT,binEdges)
xlabel("Seconds")
ylabel("Number of Orders")
title("LOB Interarrival Times")
![6d98cb923f04463e79b901b54fcfe349.png](https://img-blog.csdnimg.cn/img_convert/6d98cb923f04463e79b901b54fcfe349.png)
间隔时间遵循泊松过程的特征模式。
通过将指数分布拟合到间隔时间来计算订单之间的平均等待时间。
DTAvg = expfit(DT)
DTAvg = duration
0.040273 sec