matlab工具箱设置学习率_MATLAB金融工具箱:06:统计套利的机器学习2:特征工程和模型开发...
本示例創建了限價訂單(LOB)動力學的連續時間馬爾可夫模型,并根據數據中觀察到的模式開發了用于算法交易的策略。它是有關用于統計套利的機器學習的一系列相關示例的一部分(請參閱機器學習應用程序)。
探索性數據分析
要預測系統的未來行為,您需要發現歷史數據中的模式。納斯達克等交易所提供的大量數據在提供統計機會的同時,也給計算帶來了挑戰。該示例遵循 [4]的方法,通過尋找價格動能指標來探索LOB數據。
原始數據
加載LOBVars.matNASDAQ證券INTC的LOB預處理數據集。
load LOBVars數據集包含每個訂單的以下信息:到達時間t(從午夜開始的秒數),1級要價MOAsk,1級競標價格MOBid,中間價 S和失衡指數I。
創建一個圖表,顯示LOB不平衡指數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在這種規模下,失衡指數無法表明中間價格的未來變化。
要查看更多詳細信息,請將時間標度限制為一分鐘。
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 off?xlabel("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));可視化離散化數據。
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連續時間馬爾可夫過程
總而言之,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 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如文獻 [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 end?Q = 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 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基于可用的交換數據和超參數設置構建。使用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官網內容修改而成。
前往索引:
吃小羊:MATLAB金融工具箱:00:索引?zhuanlan.zhihu.com我推薦給你以下的視頻教程,特點是沒有PPT,不摻水,直接編程環境下的實操課程: 用360分鐘了解MATLAB編程《MATLAB編程360》視頻課程:
MATLAB編程360 - 網易云課堂study.163.com?study.163.com總結
以上是生活随笔為你收集整理的matlab工具箱设置学习率_MATLAB金融工具箱:06:统计套利的机器学习2:特征工程和模型开发...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos7公司内网环境搭建集群性能测
- 下一篇: 上海大华条码称代码_银豹收银之大华条码秤