matlab工具箱设置学习率_MATLAB金融工具箱:06:统计套利的机器学习2:特征工程和模型开发...
本示例創(chuàng)建了限價訂單(LOB)動力學(xué)的連續(xù)時間馬爾可夫模型,并根據(jù)數(shù)據(jù)中觀察到的模式開發(fā)了用于算法交易的策略。它是有關(guān)用于統(tǒng)計套利的機器學(xué)習(xí)的一系列相關(guān)示例的一部分(請參閱機器學(xué)習(xí)應(yīng)用程序)。
探索性數(shù)據(jù)分析
要預(yù)測系統(tǒng)的未來行為,您需要發(fā)現(xiàn)歷史數(shù)據(jù)中的模式。納斯達(dá)克等交易所提供的大量數(shù)據(jù)在提供統(tǒng)計機會的同時,也給計算帶來了挑戰(zhàn)。該示例遵循 [4]的方法,通過尋找價格動能指標(biāo)來探索LOB數(shù)據(jù)。
原始數(shù)據(jù)
加載LOBVars.matNASDAQ證券INTC的LOB預(yù)處理數(shù)據(jù)集。
load LOBVars數(shù)據(jù)集包含每個訂單的以下信息:到達(dá)時間t(從午夜開始的秒數(shù)),1級要價MOAsk,1級競標(biāo)價格MOBid,中間價 S和失衡指數(shù)I。
創(chuàng)建一個圖表,顯示LOB不平衡指數(shù)I和中間價的日內(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ù)無法表明中間價格的未來變化。
要查看更多詳細(xì)信息,請將時間標(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ù)的急劇偏離與中間價格的相應(yīng)偏離一致。如果這種關(guān)系是可預(yù)測的,則意味著一定規(guī)模的失衡可以預(yù)測未來的價格走勢,那么對該關(guān)系進(jìn)行量化可以提供統(tǒng)計套利機會。
在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")間隔時間遵循泊松過程的特征模式。
通過將指數(shù)分布擬合到間隔時間來計算訂單之間的平均等待時間。
DTAvg = expfit(DT)DTAvg = duration0.040273 sec平滑數(shù)據(jù)
原始不平衡序列I不穩(wěn)定。要識別最重要的動態(tài)變化,請引入平滑度dI,該平滑度是用于平均原始不平衡序列的后向標(biāo)記的數(shù)量。
dI = 10; % HyperparameterdTI = dI*DTAvgdTI = duration0.40273 sec該設(shè)置對應(yīng)于10個標(biāo)記的間隔,或平均約0.4秒。在后續(xù)窗口中平滑不平衡指數(shù)。
sI = smoothdata(I,'movmean',[dI 0]);可視化平滑程度以評估丟失或保留的波動率。
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ù)
要創(chuàng)建動力學(xué)的馬爾可夫模型,請將平滑的不平衡指數(shù)收集sI放到分組中,將其離散化為有限的狀態(tài)集合rho(ρ)。分組數(shù)numBins是一個超參數(shù)。
numBins = 3; % HyperparameterbinEdges = linspace(-1,1,numBins+1);rho = discretize(sI,binEdges);要對預(yù)測效果進(jìn)行建模,請在先導(dǎo)窗口中匯總價格。窗口中的間隔數(shù)dS是一個超參數(shù)。
dS = 20; % HyperparameterdTS = dS*DTAvgdTS = duration0.80547 sec該設(shè)置對應(yīng)于20個間隔,或平均約0.8秒。將價格變動離散化為由遠(yuǎn)期價格變動的符號給出的三個狀態(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ù)時間馬爾可夫過程
總而言之,LOB不平衡指數(shù)的狀態(tài)rho(ρ)和遠(yuǎn)期價格走勢的狀態(tài)DS(ΔS)描述了二維連續(xù)時間馬爾可夫鏈(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確定表征動力學(xué)的滾動狀態(tài)的大小。在時間 t,過程從 φ =(ρ**previous,ΔS**current)=i 至 φ =(ρ**current,ΔS**future)=j (如果 i = j,保持相同的狀態(tài))。
估計過程參數(shù)
在任何時間 t執(zhí)行交易策略是基于 ΔS**future處于特定狀態(tài),以其他狀態(tài)的當(dāng)前值和先前值為條件。根據(jù)[3]和[4],確定經(jīng)驗轉(zhuǎn)移概率,然后評估它們的預(yù)測能力。
% 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。計算分母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,以便讓未來的交易決策取決于市場統(tǒng)計模式的連續(xù)型。市場在某些狀態(tài)下是否表現(xiàn)出動力,是對弱形式的有效市場假說(EMH)的檢驗。對于大量交易的資產(chǎn),例如本示例 (INTC)中使用的資產(chǎn),EMH可能會長期持有,套利機會很快消失。但是,失效的EMH可能會在短時間內(nèi)出現(xiàn)在某些資產(chǎn)中。使用最佳超參數(shù)設(shè)置和要進(jìn)行交易的驗證期,有效的交易策略將交易日的一部分(足夠短以顯示一定程度的統(tǒng)計平衡)劃分為一個訓(xùn)練期,以進(jìn)行估算Q。
概要
本示例從LOB上的原始數(shù)據(jù)開始,然后將其轉(zhuǎn)換為統(tǒng)計套利機會的概要矩陣Q。該分析使用連續(xù)時間馬爾可夫鏈模型的數(shù)學(xué)方法,首先是識別LOB到達(dá)時間的泊松過程,然后將數(shù)據(jù)離散化為代表市場瞬時位置的二維狀態(tài)。根據(jù)經(jīng)驗得出的狀態(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我推薦給你以下的視頻教程,特點是沒有PPT,不摻水,直接編程環(huán)境下的實操課程: 用360分鐘了解MATLAB編程《MATLAB編程360》視頻課程:
MATLAB編程360 - 網(wǎng)易云課堂study.163.com?study.163.com總結(jié)
以上是生活随笔為你收集整理的matlab工具箱设置学习率_MATLAB金融工具箱:06:统计套利的机器学习2:特征工程和模型开发...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos7公司内网环境搭建集群性能测
- 下一篇: matlab作动态函数曲线图,[转载]M