matlab工具箱设置学习率-凯发k8官方网
本示例创建了限价订单(lob)动力学的连续时间马尔可夫模型,并根据数据中观察到的模式开发了用于算法交易的策略。它是有关用于统计套利的机器学习的一系列相关示例的一部分(请参阅机器学习应用程序)。
探索性数据分析
要预测系统的未来行为,您需要发现历史数据中的模式。纳斯达克等交易所提供的大量数据在提供统计机会的同时,也给计算带来了挑战。该示例遵循 [4]的方法,通过寻找价格动能指标来探索lob数据。
原始数据
加载lobvars.matnasdaq证券intc的lob预处理数据集。
load lobvars数据集包含每个订单的以下信息:到达时间t(从午夜开始的秒数),1级要价moask,1级竞标价格mobid,中间价 s和失衡指数i。
创建一个图表,显示lob不平衡指数i和中间价的日内演变s。
figuret.format = "hh:mm:ss";yyaxis leftplot(t,i)ylabel("imbalance index")yyaxis rightplot(t,s/10000,'linewidth',2)ylabel("midprice (dollars)")xlabel("time")title('exchange data: one day')legend(["imbalance","midprice"],'location','ne')grid on在这种规模下,失衡指数无法表明中间价格的未来变化。
要查看更多详细信息,请将时间标度限制为一分钟。
timerange = seconds([36000 36060]); % one minute after 10 am, when prices were climbingxlim(timerange)legend('location','se')title("exchange data: one minute")在这种尺度下,失衡指数的急剧偏离与中间价格的相应偏离一致。如果这种关系是可预测的,则意味着一定规模的失衡可以预测未来的价格走势,那么对该关系进行量化可以提供统计套利机会。
在lob中绘制间隔时间的直方图。
dt = diff(t); % interarrival timesdt.format = "s";figurebinedges = seconds(0.01:0.01:1);histogram(dt,binedges)xlabel("seconds")ylabel("number of orders")title("lob interarrival times")间隔时间遵循泊松过程的特征模式。
通过将指数分布拟合到间隔时间来计算订单之间的平均等待时间。
dtavg = expfit(dt)dtavg = duration0.040273 sec平滑数据
原始不平衡序列i不稳定。要识别最重要的动态变化,请引入平滑度di,该平滑度是用于平均原始不平衡序列的后向标记的数量。
di = 10; % hyperparameterdti = di*dtavgdti = duration0.40273 sec该设置对应于10个标记的间隔,或平均约0.4秒。在后续窗口中平滑不平衡指数。
si = smoothdata(i,'movmean',[di 0]);可视化平滑程度以评估丢失或保留的波动率。
figurehold onplot(t,i)plot(t,si,'c','linewidth',2)hold offxlabel("time")xlim(timerange)ylabel("imbalance index")title("imbalance data: one minute")legend(["raw","smoothed"],'location','se')grid on离散数据
要创建动力学的马尔可夫模型,请将平滑的不平衡指数收集si放到分组中,将其离散化为有限的状态集合rho(ρ)。分组数numbins是一个超参数。
numbins = 3; % hyperparameterbinedges = linspace(-1,1,numbins 1);rho = discretize(si,binedges);要对预测效果进行建模,请在先导窗口中汇总价格。窗口中的间隔数ds是一个超参数。
ds = 20; % hyperparameterdts = ds*dtavgdts = duration0.80547 sec该设置对应于20个间隔,或平均约0.8秒。将价格变动离散化为由远期价格变动的符号给出的三个状态ds(δs)。
ds = nan(size(s));shifts = s(ds 1:end);ds(1:end-ds) = sign(shifts-s(1:end-ds));可视化离散化数据。
figuresubplot(3,1,1)hold onplot(t,si,'c','linewidth',2)for i = 2:numbinsyline(binedges(i),'b--');endhold offxlim(timerange)ylim([-1 1])yticks(binedges)title("imbalance index (smoothed)")grid onsubplot(3,1,2)plot(t,rho,'co','markersize',3)xlim(timerange)ylim([1 numbins])yticks(1:numbins)ylabel("rho")title("imbalance index (discretized)")grid onsubplot(3,1,3)plot(t,ds,'ro','markersize',3)xlim(timerange)ylim([-1 1])yticks([-1 0 1])ylabel("deltas")title("price movement")grid on连续时间马尔可夫过程
总而言之,lob不平衡指数的状态rho(ρ)和远期价格走势的状态ds(δs)描述了二维连续时间马尔可夫链(ctmc)。该链由订单到达的泊松过程调制,该过程指示状态之间的任何转换。
为了简化说明,为二维ctmc提供一维编码成状态phi(φ =(ρ ,δs))。
numstates = 3*numbins; % numstates(ds)*numstates(rho)phi = nan(size(t));for i = 1:length(t)switch ds(i)case -1phi(i) = rho(i);case 0phi(i) = rho(i) numbins;case 1phi(i) = rho(i) 2*numbins;endend连续状态 φ,以及组件状态 ρ 和 δs, 进行如下操作。
超参数di和ds确定表征动力学的滚动状态的大小。在时间 t,过程从 φ =(ρ**previous,δs**current)=i 至 φ =(ρ**current,δs**future)=j (如果 i = j,保持相同的状态)。
估计过程参数
在任何时间 t执行交易策略是基于 δs**future处于特定状态,以其他状态的当前值和先前值为条件。根据[3]和[4],确定经验转移概率,然后评估它们的预测能力。
% transition countsc = zeros(numstates);for i = 1:length(phi)-ds-1 c(phi(i),phi(i 1)) = c(phi(i),phi(i 1)) 1;end% holding timesh = diag(c);% transition rate matrix (infinitesimal generator)g = c./h;v = sum(g,2);g = g diag(-v);% transition probability matrix (stochastic for all di)p = expm(g*di); % matrix exponential如文献 [4]所述,为了获得包含概率:
的交易矩阵呢 q,应用贝叶斯法则:
分子是转移概率矩阵p。计算分母pcond.
pcond = zeros(size(p));phinums = 1:numstates;modnums = mod(phinums,numbins);for i = phinumsfor j = phinumsidx = (modnums == modnums(j));pcond(i,j) = sum(p(i,idx)); end endq = p./pcond;q在表格中显示。用复合状态φ=(ρ,δs)标记行和列。
binnames = string(1:numbins);statenames = ["(" binnames ",-1)","(" binnames ",0)","(" binnames ",1)"];qtable = array2table(q,'rownames',statenames,'variablenames',statenames)qtable=9×9 table(1,-1) (2,-1) (3,-1) (1,0) (2,0) (3,0) (1,1) (2,1) (3,1) ________ _________ _________ _______ _______ _______ _________ _________ ________(1,-1) 0.59952 0.30458 0.19165 0.39343 0.67723 0.7099 0.0070457 0.018196 0.098447(2,-1) 0.74092 0.58445 0.40023 0.25506 0.41003 0.56386 0.0040178 0.0055189 0.035914(3,-1) 0.79895 0.60866 0.55443 0.19814 0.385 0.42501 0.0029096 0.0063377 0.020554(1,0) 0.094173 0.036014 0.019107 0.88963 0.91688 0.75192 0.016195 0.047101 0.22897(2,0) 0.12325 0.017282 0.015453 0.86523 0.96939 0.9059 0.011525 0.013328 0.078648(3,0) 0.1773 0.02616 0.018494 0.81155 0.95359 0.92513 0.011154 0.020252 0.056377(1,1) 0.041132 0.0065127 0.0021313 0.59869 0.39374 0.21787 0.36017 0.59975 0.78(2,1) 0.059151 0.0053554 0.0027769 0.65672 0.42325 0.26478 0.28413 0.5714 0.73244(3,1) 0.095832 0.010519 0.0051565 0.7768 0.6944 0.3906 0.12736 0.29508 0.60424 figureimagesc(q)axis equal tighthcb = colorbar;hcb.label.string = "prob(deltas_{future} | rho_{previous},rho_{current},deltas_{current})";xticks(phinums)xticklabels(statenames)xlabel("(rho_{current},deltas_{future})")yticks(phinums)yticklabels(statenames)ylabel("(rho_{previous},deltas_{current})")title("trading matrix") trigger = 0.5;qpattern = (q > trigger)qpattern = 9x9 logical array1 0 0 0 1 1 0 0 01 1 0 0 0 1 0 0 01 1 1 0 0 0 0 0 00 0 0 1 1 1 0 0 00 0 0 1 1 1 0 0 00 0 0 1 1 1 0 0 00 0 0 1 0 0 0 1 10 0 0 1 0 0 0 1 10 0 0 1 1 0 0 0 1是交易策略吗?
q基于可用的交换数据和超参数设置构建。使用q,以便让未来的交易决策取决于市场统计模式的连续型。市场在某些状态下是否表现出动力,是对弱形式的有效市场假说(emh)的检验。对于大量交易的资产,例如本示例 (intc)中使用的资产,emh可能会长期持有,套利机会很快消失。但是,失效的emh可能会在短时间内出现在某些资产中。使用最佳超参数设置和要进行交易的验证期,有效的交易策略将交易日的一部分(足够短以显示一定程度的统计平衡)划分为一个训练期,以进行估算q。
概要
本示例从lob上的原始数据开始,然后将其转换为统计套利机会的概要矩阵q。该分析使用连续时间马尔可夫链模型的数学方法,首先是识别lob到达时间的泊松过程,然后将数据离散化为代表市场瞬时位置的二维状态。根据经验得出的状态转换的描述导致了算法交易策略的可能性。
参考文献
[1] cartea, álvaro, sebastian jaimungal, and jason ricci. "buy low, sell high: a high-frequency trading perspective." siam journal on financial mathematics 5, no. 1 (january 2014): 415–44. https://doi.org/10.1137/130911196.
[2] guilbaud, fabien, and huyen pham. "optimal high-frequency trading with limit and market orders." quantitative finance 13, no. 1 (january 2013): 79–94. https://doi.org/10.1080/14697688.2012.708779.
[3] norris, j. r. markov chains. cambridge, uk: cambridge university press, 1997.
[4] rubisov, anton d. "statistical arbitrage using limit order book imbalance." master's thesis, university of toronto, 2015.
注:本文根据matlab凯发k8官方网官网内容修改而成。
前往索引:
吃小羊:matlab金融工具箱:00:索引zhuanlan.zhihu.com我推荐给你以下的视频教程,特点是没有ppt,不掺水,直接编程环境下的实操课程: 用360分钟了解matlab编程《matlab编程360》视频课程:
matlab编程360 - 网易云课堂study.163.comstudy.163.com总结
以上是凯发k8官方网为你收集整理的matlab工具箱设置学习率_matlab金融工具箱:06:统计套利的机器学习2:特征工程和模型开发...的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇:
- 下一篇: