matlab工具箱设置学习率_MATLAB金融工具箱:06:统计套利的机器学习2:特征工程和模型开发...
本示例創(chuàng)建了限價(jià)訂單(LOB)動(dòng)力學(xué)的連續(xù)時(shí)間馬爾可夫模型,并根據(jù)數(shù)據(jù)中觀察到的模式開發(fā)了用于算法交易的策略。它是有關(guān)用于統(tǒng)計(jì)套利的機(jī)器學(xué)習(xí)的一系列相關(guān)示例的一部分(請(qǐng)參閱機(jī)器學(xué)習(xí)應(yīng)用程序)。
探索性數(shù)據(jù)分析
要預(yù)測(cè)系統(tǒng)的未來行為,您需要發(fā)現(xiàn)歷史數(shù)據(jù)中的模式。納斯達(dá)克等交易所提供的大量數(shù)據(jù)在提供統(tǒng)計(jì)機(jī)會(huì)的同時(shí),也給計(jì)算帶來了挑戰(zhàn)。該示例遵循 [4]的方法,通過尋找價(jià)格動(dòng)能指標(biāo)來探索LOB數(shù)據(jù)。
原始數(shù)據(jù)
加載LOBVars.matNASDAQ證券INTC的LOB預(yù)處理數(shù)據(jù)集。
load LOBVars數(shù)據(jù)集包含每個(gè)訂單的以下信息:到達(dá)時(shí)間t(從午夜開始的秒數(shù)),1級(jí)要價(jià)MOAsk,1級(jí)競標(biāo)價(jià)格MOBid,中間價(jià) S和失衡指數(shù)I。
創(chuàng)建一個(gè)圖表,顯示LOB不平衡指數(shù)I和中間價(jià)的日內(nèi)演變S。
figure?t.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在這種規(guī)模下,失衡指數(shù)無法表明中間價(jià)格的未來變化。
要查看更多詳細(xì)信息,請(qǐng)將時(shí)間標(biāo)度限制為一分鐘。
timeRange = seconds([36000 36060]); % One minute after 10 AM, when prices were climbingxlim(timeRange)legend('Location','SE')title("Exchange Data: One Minute")在這種尺度下,失衡指數(shù)的急劇偏離與中間價(jià)格的相應(yīng)偏離一致。如果這種關(guān)系是可預(yù)測(cè)的,則意味著一定規(guī)模的失衡可以預(yù)測(cè)未來的價(jià)格走勢(shì),那么對(duì)該關(guān)系進(jìn)行量化可以提供統(tǒng)計(jì)套利機(jī)會(huì)。
在LOB中繪制間隔時(shí)間的直方圖。
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")間隔時(shí)間遵循泊松過程的特征模式。
通過將指數(shù)分布擬合到間隔時(shí)間來計(jì)算訂單之間的平均等待時(shí)間。
DTAvg = expfit(DT)DTAvg = duration0.040273 sec平滑數(shù)據(jù)
原始不平衡序列I不穩(wěn)定。要識(shí)別最重要的動(dòng)態(tài)變化,請(qǐng)引入平滑度dI,該平滑度是用于平均原始不平衡序列的后向標(biāo)記的數(shù)量。
dI = 10; % HyperparameterdTI = dI*DTAvgdTI = duration0.40273 sec該設(shè)置對(duì)應(yīng)于10個(gè)標(biāo)記的間隔,或平均約0.4秒。在后續(xù)窗口中平滑不平衡指數(shù)。
sI = smoothdata(I,'movmean',[dI 0]);可視化平滑程度以評(píng)估丟失或保留的波動(dòng)率。
figurehold onplot(t,I)plot(t,sI,'c','LineWidth',2)hold off?xlabel("Time")xlim(timeRange)ylabel("Imbalance Index")title("Imbalance Data: One Minute")legend(["Raw","Smoothed"],'Location','SE')grid on離散數(shù)據(jù)
要?jiǎng)?chuàng)建動(dòng)力學(xué)的馬爾可夫模型,請(qǐng)將平滑的不平衡指數(shù)收集sI放到分組中,將其離散化為有限的狀態(tài)集合rho(ρ)。分組數(shù)numBins是一個(gè)超參數(shù)。
numBins = 3; % HyperparameterbinEdges = linspace(-1,1,numBins+1);rho = discretize(sI,binEdges);要對(duì)預(yù)測(cè)效果進(jìn)行建模,請(qǐng)?jiān)谙葘?dǎo)窗口中匯總價(jià)格。窗口中的間隔數(shù)dS是一個(gè)超參數(shù)。
dS = 20; % HyperparameterdTS = dS*DTAvgdTS = duration0.80547 sec該設(shè)置對(duì)應(yīng)于20個(gè)間隔,或平均約0.8秒。將價(jià)格變動(dòng)離散化為由遠(yuǎn)期價(jià)格變動(dòng)的符號(hào)給出的三個(gè)狀態(tài)DS(ΔS)。
DS = NaN(size(S));shiftS = S(dS+1:end);DS(1:end-dS) = sign(shiftS-S(1:end-dS));可視化離散化數(shù)據(jù)。
figure?subplot(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 on?subplot(3,1,2)plot(t,rho,'co','MarkerSize',3)xlim(timeRange)ylim([1 numBins])yticks(1:numBins)ylabel("rho")title("Imbalance Index (Discretized)")grid on?subplot(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連續(xù)時(shí)間馬爾可夫過程
總而言之,LOB不平衡指數(shù)的狀態(tài)rho(ρ)和遠(yuǎn)期價(jià)格走勢(shì)的狀態(tài)DS(ΔS)描述了二維連續(xù)時(shí)間馬爾可夫鏈(CTMC)。該鏈由訂單到達(dá)的泊松過程調(diào)制,該過程指示狀態(tài)之間的任何轉(zhuǎn)換。
為了簡化說明,為二維CTMC提供一維編碼成狀態(tài)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連續(xù)狀態(tài) φ,以及組件狀態(tài) ρ 和 ΔS, 進(jìn)行如下操作。
超參數(shù)dI和dS確定表征動(dòng)力學(xué)的滾動(dòng)狀態(tài)的大小。在時(shí)間 t,過程從 φ =(ρ**previous,ΔS**current)=i 至 φ =(ρ**current,ΔS**future)=j (如果 i = j,保持相同的狀態(tài))。
估計(jì)過程參數(shù)
在任何時(shí)間 t執(zhí)行交易策略是基于 ΔS**future處于特定狀態(tài),以其他狀態(tài)的當(dāng)前值和先前值為條件。根據(jù)[3]和[4],確定經(jīng)驗(yàn)轉(zhuǎn)移概率,然后評(píng)估它們的預(yù)測(cè)能力。
% Transition counts?C = zeros(numStates);for i = 1:length(phi)-dS-1 C(phi(i),phi(i+1)) = C(phi(i),phi(i+1))+1;end?% Holding times?H = 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如文獻(xiàn) [4]所述,為了獲得包含概率:
的交易矩陣呢 Q,應(yīng)用貝葉斯法則:
分子是轉(zhuǎn)移概率矩陣P。計(jì)算分母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 end?Q = P./PCond;Q在表格中顯示。用復(fù)合狀態(tài)φ=(ρ,ΔS)標(biāo)記行和列。
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 array?1 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基于可用的交換數(shù)據(jù)和超參數(shù)設(shè)置構(gòu)建。使用Q,以便讓未來的交易決策取決于市場(chǎng)統(tǒng)計(jì)模式的連續(xù)型。市場(chǎng)在某些狀態(tài)下是否表現(xiàn)出動(dòng)力,是對(duì)弱形式的有效市場(chǎng)假說(EMH)的檢驗(yàn)。對(duì)于大量交易的資產(chǎn),例如本示例 (INTC)中使用的資產(chǎn),EMH可能會(huì)長期持有,套利機(jī)會(huì)很快消失。但是,失效的EMH可能會(huì)在短時(shí)間內(nèi)出現(xiàn)在某些資產(chǎn)中。使用最佳超參數(shù)設(shè)置和要進(jìn)行交易的驗(yàn)證期,有效的交易策略將交易日的一部分(足夠短以顯示一定程度的統(tǒng)計(jì)平衡)劃分為一個(gè)訓(xùn)練期,以進(jìn)行估算Q。
概要
本示例從LOB上的原始數(shù)據(jù)開始,然后將其轉(zhuǎn)換為統(tǒng)計(jì)套利機(jī)會(huì)的概要矩陣Q。該分析使用連續(xù)時(shí)間馬爾可夫鏈模型的數(shù)學(xué)方法,首先是識(shí)別LOB到達(dá)時(shí)間的泊松過程,然后將數(shù)據(jù)離散化為代表市場(chǎng)瞬時(shí)位置的二維狀態(tài)。根據(jù)經(jīng)驗(yàn)得出的狀態(tài)轉(zhuǎn)換的描述導(dǎo)致了算法交易策略的可能性。
參考文獻(xiàn)
[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.
注:本文根據(jù)MATLAB官網(wǎng)內(nèi)容修改而成。
前往索引:
吃小羊:MATLAB金融工具箱:00:索引?zhuanlan.zhihu.com我推薦給你以下的視頻教程,特點(diǎn)是沒有PPT,不摻水,直接編程環(huán)境下的實(shí)操課程: 用360分鐘了解MATLAB編程《MATLAB編程360》視頻課程:
MATLAB編程360 - 網(wǎng)易云課堂study.163.com?study.163.com總結(jié)
以上是生活随笔為你收集整理的matlab工具箱设置学习率_MATLAB金融工具箱:06:统计套利的机器学习2:特征工程和模型开发...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos7公司内网环境搭建集群性能测
- 下一篇: 上海大华条码称代码_银豹收银之大华条码秤