李澤翔,王芷若,舒選林,王穎喆
(北京師范大學(xué) 數(shù)學(xué)科學(xué)學(xué)院, 北京 100875)
股票市場上的機(jī)構(gòu)投資者出于資產(chǎn)保值增值的目的, 需要在市場上不斷地進(jìn)行資產(chǎn)的買賣交易.如果機(jī)構(gòu)投資者持有的頭寸較大, 交易行為本身就會(huì)使交易資產(chǎn)供求關(guān)系發(fā)生變化, 產(chǎn)生價(jià)格沖擊, 導(dǎo)致交易成本增加.因此, 市場的機(jī)構(gòu)投資者在清倉大額資產(chǎn)時(shí), 需要將交易頭寸拆分成批量的訂單逐次執(zhí)行, 而不是采取一次下單交易的方式.同時(shí)為了控制資產(chǎn)價(jià)值隨時(shí)間推移產(chǎn)生的波動(dòng), 需要在盡可能短的時(shí)間內(nèi)完成清倉.因此需要在價(jià)格沖擊和時(shí)間風(fēng)險(xiǎn)之間進(jìn)行綜合考慮.隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展, 程序化交易正在以前所未有的速度應(yīng)用于各國的金融市場中.美國金融市場調(diào)查研究顯示, 程序化交易已成為美國投資界的主要交易策略.
程序化交易可具體分為確定交易日期和確定日內(nèi)交易策略兩種.艾明芳(2013)[1]詳細(xì)討論了如何確定交易持續(xù)天數(shù), 但是并沒有給出具體的日間交易策略。若計(jì)算機(jī)在交易當(dāng)日一次性處理完某類股票, 會(huì)導(dǎo)致日內(nèi)的價(jià)格沖擊, 造成機(jī)構(gòu)資產(chǎn)不必要的損失.鎮(zhèn)磊(2010)[2]雖然具體給出了某支特定股票在交易日內(nèi)的交易策略, 但是忽略了對于交易持續(xù)天數(shù)的研究, 這也會(huì)一定程度上導(dǎo)致該天的股票交易數(shù)量并不是使機(jī)構(gòu)獲利最大的交易策略.
隨著近幾年神經(jīng)網(wǎng)絡(luò)不斷應(yīng)用于各個(gè)領(lǐng)域, 也有學(xué)者將程序化交易與神經(jīng)網(wǎng)絡(luò)相結(jié)合, Levendovszky 等(2019)[3]利用神經(jīng)網(wǎng)絡(luò)預(yù)測未來時(shí)段的價(jià)格分布, 并通過預(yù)測結(jié)果執(zhí)行買入與賣出操作, 但只適用于未持有大量某種股票的情況, 對于交易量巨大的情況不能得到全局最優(yōu)解。Attila(2019)[4]給出了關(guān)于減少機(jī)器學(xué)習(xí)股票信息的計(jì)算成本的方法, 并提前用ICA對數(shù)據(jù)進(jìn)行降噪處理.
在部分借鑒了有關(guān)文獻(xiàn)對于交易策略制定思路的基礎(chǔ)上, 制定出了綜合考慮交易持續(xù)天數(shù)與日內(nèi)交易時(shí)機(jī)的交易策略, 并在策略中將神經(jīng)網(wǎng)絡(luò)與傳統(tǒng)的研究方法相結(jié)合.將神經(jīng)網(wǎng)絡(luò)用于預(yù)測容錯(cuò)率更高的時(shí)間風(fēng)險(xiǎn)和交易時(shí)刻劃分而不是直接預(yù)測股票的價(jià)值, 不僅一定程度上降低了不準(zhǔn)確的學(xué)習(xí)模型對清倉成本的影響, 還節(jié)省了計(jì)算機(jī)的計(jì)算成本.
下面將基于具體實(shí)例來建立交易模型。假設(shè)在中國A股市場上, 某機(jī)構(gòu)投資者持有工商銀行(SH601398)股票10萬手, 并且該機(jī)構(gòu)認(rèn)為目前股票的市價(jià)已經(jīng)處于最高值, 希望在2017年9月26日開始合法清空手中的股票來獲得現(xiàn)金收益.以下依據(jù)此支股票2017年1月3日至2017年9月25日的分筆交易記錄(包括每個(gè)交易日各分筆的交易時(shí)間、單次交易成交價(jià)與交易量、限價(jià)訂單簿中的第一至第五檔買賣方報(bào)價(jià)及對應(yīng)的掛單股票數(shù)量、以及該分筆交易的觸發(fā)方), 分析處理交易數(shù)據(jù), 給出交易策略.其中對于外部因素(如貨幣政策等)對股票價(jià)格的影響不予考慮, 且假設(shè)在清倉過程中不會(huì)再購入該股票.
首先確定交易持續(xù)的天數(shù), 并據(jù)此給出具體的日間交易策略.在確定交易持續(xù)天數(shù)時(shí), 用神經(jīng)網(wǎng)絡(luò)模擬預(yù)測清倉時(shí)股票價(jià)格隨時(shí)間下降的風(fēng)險(xiǎn), 用信息流理論模型衡量價(jià)格沖擊和交易時(shí)刻。經(jīng)綜合考慮確定出最終的交易天數(shù)以及每個(gè)交易日對應(yīng)的出售股票量.在此基礎(chǔ)上, 進(jìn)行日內(nèi)交易策略的制定.在此處使用神經(jīng)網(wǎng)絡(luò)對交易時(shí)刻做出預(yù)測, 然后綜合考慮VWAP預(yù)測出的交易量和Kalman 濾波方法修正過的期權(quán)定價(jià)公式預(yù)測出的各時(shí)刻股票的初始價(jià)格, 最終給出詳細(xì)的交易策略及具體的交易成本.
高頻的股票市場數(shù)據(jù)具有不等時(shí)距的特點(diǎn), 即單筆交易間的時(shí)差具有很大的波動(dòng)性??紤]先將每天內(nèi)的交易信息按照時(shí)間劃分成N段, 使得劃分出的每一段交易持續(xù)期內(nèi)的成交數(shù)量總和大致相等.經(jīng)過劃分的交易期剔除了大量的不可估量的噪聲信息??蓪⒚慷谓灰灼诘拈L度視作具有一定記憶性的隨機(jī)變量, 交易越頻繁的區(qū)域劃分出的交易持續(xù)期就越短.如果交易期的區(qū)間長度過長將會(huì)丟失高頻的信息, 使模型變得過于粗糙。如果交易期的區(qū)間長度太短則會(huì)包含過多的噪音, 降低預(yù)測結(jié)果的可信度.根據(jù)經(jīng)驗(yàn)?zāi)P蛥?shù)的選取[2], 每個(gè)交易期的持續(xù)長度在5分鐘上下浮動(dòng), 其總成交數(shù)量約占日平均交易量的20倍.因?yàn)槊總€(gè)工作日的交易時(shí)間為9:30-11:30,13:00-15:00共四個(gè)小時(shí), 所以取N=48,即將交易時(shí)間劃分為48個(gè)交易段, 每個(gè)交易持續(xù)期的長度受當(dāng)時(shí)價(jià)格、成交量等市場信息的影響.
從股票價(jià)格隨時(shí)間下降的風(fēng)險(xiǎn)和價(jià)格沖擊兩方面入手, 分別用神經(jīng)網(wǎng)絡(luò)模糊映射方法和多元信息流模型預(yù)測兩個(gè)因素導(dǎo)致的股票價(jià)格變動(dòng), 從而確定出交易持續(xù)天數(shù).根據(jù)機(jī)構(gòu)持有的股票數(shù)量以及機(jī)構(gòu)為了盡快清理手中股票的目標(biāo), 假設(shè)清倉時(shí)間不超過5天.
在預(yù)測交易天數(shù)時(shí), 只需要考慮日間股票價(jià)格下降的風(fēng)險(xiǎn)。先分別對日內(nèi)各個(gè)交易段之間的價(jià)格變動(dòng)做出預(yù)測,將此部分?jǐn)?shù)值經(jīng)適當(dāng)計(jì)算作為每股股票因未售出造成的清倉成本.具體的預(yù)測過程如下。
3.1.1 建立模糊映射
股票市場的信息往往帶有高度的非線性特征, 使用普通的線性回歸的方法并不合理.且金融高頻數(shù)據(jù)內(nèi)往往存在著明顯的日內(nèi)模式, 即每個(gè)交易日的分筆成交時(shí)間與數(shù)量皆服從一定規(guī)律, 相鄰交易日的交易區(qū)間劃分時(shí)刻應(yīng)存在某種映射關(guān)系.
這類復(fù)雜的模式難以用某個(gè)函數(shù)顯式表達(dá), 而已有理論很好地證明三層的BP(反向傳播)神經(jīng)網(wǎng)絡(luò)即可高度擬合任意非線性函數(shù).考慮到層數(shù)過高會(huì)導(dǎo)致計(jì)算量過大, 選用三層的BP神經(jīng)網(wǎng)絡(luò), 將交易日內(nèi)所有交易期的價(jià)格向量(ft,1,ft,2,…,ft,47)視作以日為單位的時(shí)間序列數(shù)據(jù), 并建立相鄰交易日間的映射
γ:(ft,1,ft,2,…,ft,47)→(ft+1,1,ft+1,2,…,ft+1,47),
即通過前一天的價(jià)格情況預(yù)測后一天的價(jià)格.
3.1.2 訓(xùn)練BP神經(jīng)網(wǎng)絡(luò)
神經(jīng)網(wǎng)絡(luò)的訓(xùn)練樣本數(shù)據(jù)集越大, 訓(xùn)練出的模型及預(yù)測結(jié)果就越精準(zhǔn)可靠, 故將167天的所有價(jià)格變動(dòng)數(shù)據(jù)(ft,1,ft,2,…,ft,47),t=1,2,…,167作為神經(jīng)網(wǎng)絡(luò)的訓(xùn)練數(shù)據(jù)集, 逐天使用輸入輸出集對(∪k=1,2,…,47mt,k,∪k=1,2,…,47mt+1,k)進(jìn)行訓(xùn)練.
這里不考慮數(shù)據(jù)各維度之間的相關(guān)性, 即主要對相鄰日期內(nèi)的價(jià)格進(jìn)行研究, 而不考慮同一天內(nèi)不同交易期間的影響, 突出日間的價(jià)格規(guī)律的重要性.
第一步 神經(jīng)網(wǎng)絡(luò)的激活函數(shù)對[0,1]區(qū)間內(nèi)的數(shù)值較為靈敏, 為保證模型的精準(zhǔn)性, 先將數(shù)據(jù)歸一化,即將每天的價(jià)格向量(ft,1,ft,2,…,ft,47)映射到單位球B={x∈:|(xi)|≤1}內(nèi), 表示為
用MATLAB工具箱實(shí)現(xiàn)上述訓(xùn)練過程后, 得到日間價(jià)格關(guān)系的模型, 即具有預(yù)測未來價(jià)格變化功能的BP神經(jīng)網(wǎng)絡(luò).
3.1.3 預(yù)測未來的時(shí)間風(fēng)險(xiǎn)
對結(jié)果處理后, 得到5天內(nèi)日間的時(shí)間風(fēng)險(xiǎn), 如表1所示.
表1 未來5天內(nèi)的時(shí)間風(fēng)險(xiǎn)
投資者在金融市場中迅速大量的買入賣出會(huì)影響股票價(jià)格, 造成價(jià)格沖擊現(xiàn)象.為量化交易行為對價(jià)格的影響, 參考艾明芳(2013)[1]的信息流理論模型, 使用多元回歸分析方法衡量價(jià)格的變動(dòng).
設(shè)t時(shí)刻股票價(jià)格為pt, 市場中的凈指令流為NetVt,Dt=sign(NetVt)表示凈指令流的方向, 買入為正, 賣出為負(fù).假設(shè)投資者t時(shí)刻對凈指令流方向的判斷僅僅依賴于上一時(shí)刻的信息, 有
NetVt=α+βΔpt-1+γNetVt-1+ξt,
其中ξt為t時(shí)刻凈指令流中投資者依據(jù)公開歷史信息無法預(yù)期的成分,α,β,γ可利用已有數(shù)據(jù)通過最小二乘法得到.計(jì)算結(jié)果中的誤差項(xiàng),ξt可以視作交易中根據(jù)歷史信息無法預(yù)期的成分.
借鑒Glosten等(1988)[5]的交易指示模型, 用φ和λ分別表示交易行為造成的永久價(jià)格沖擊的固定部分系數(shù)和可變部分系數(shù), 用θ表示瞬時(shí)沖擊系數(shù), 即單位股票交易量的變化所引起的瞬間價(jià)格下降量, 經(jīng)艾明芳(2013)[1]推導(dǎo)可得差分方程如式(1)所示.
shock(ΔNetVt)=Δpt=φΔDt+λξt+θΔNetVt+εt.
(1)
其中εt為隨機(jī)擾動(dòng)項(xiàng).使用MATLAB中的最小二乘法擬合回歸真實(shí)數(shù)據(jù)得到表2.
表2 價(jià)格沖擊的參數(shù)估計(jì)
擬合后得到的回歸模型可以較好地表示出股票拋售量與該時(shí)刻價(jià)格變化的關(guān)系.
清倉時(shí)間越長, 較小的單次平均拋售量會(huì)緩解對市場價(jià)格造成的沖擊, 但需要承擔(dān)的時(shí)間風(fēng)險(xiǎn)卻越大.故需對兩個(gè)因素進(jìn)行綜合規(guī)劃, 求得令清倉成本最小的總交易天數(shù).
(2)
由式(1)可知shock(ΔNetVk)是關(guān)于ΔNetVk的一次函數(shù).這里僅考慮機(jī)構(gòu)拋售股票帶來的價(jià)格沖擊, 因此Dk=-1 , ΔNetVk在此處即為機(jī)構(gòu)每天拋售的股票量Vk.利用Mathematica中的Minimize函數(shù), 可求得最優(yōu)解V1,…,V5,具體結(jié)果如表3所示, 其中V3=V4=V5=0, 也就是說該股票的最優(yōu)交易天數(shù)為2天.
表3 交易時(shí)長與交易量分配
為捕捉交易期長度的日間自相關(guān)現(xiàn)象, 考慮相鄰交易日交易時(shí)刻向量間的映射關(guān)系, 利用神經(jīng)網(wǎng)絡(luò)模型建立式(3)所示的一元映射.
Q:xt,k→xt+1,k,t=1,2,…,167,k=1,2,…,48,
(3)
表4 預(yù)測的交易時(shí)間點(diǎn)
表中的“09:36:15” 表示當(dāng)天第一個(gè)交易期的截止時(shí)間點(diǎn), 即9點(diǎn)30分到9點(diǎn)36分15秒為該交易日的第一個(gè)交易期.
4.2.1 VWAP算法預(yù)測市場交易量
考慮到不同交易區(qū)間的記憶周期存在明顯的區(qū)別, 若用常規(guī)的交易量加權(quán)平均價(jià)格算法來預(yù)測日內(nèi)交易量, 可能會(huì)產(chǎn)生較大的偏差, 故采用基于自回歸的分時(shí)VWAP算法, 分別對每個(gè)交易期內(nèi)的總成交量Vt,k進(jìn)行時(shí)間上的自回歸分析.
首先利用Mathematica中的UnitRootTest檢驗(yàn)時(shí)間序列的平穩(wěn)性, 確認(rèn)歷史數(shù)據(jù)適用于自回歸模型.利用STATA中的ac圖像與pac圖像, 結(jié)合Mathematica中TimeSeriesModelFit函數(shù)給出的模型結(jié)果, 判斷出股票可以使用具有3階時(shí)滯的AR模型Vt,k=a0+a1Vt-1,k+a2Vt-2,k+a3Vt-3,k進(jìn)行擬合.利用STATA回歸擬合并檢驗(yàn), 保留影響顯著的參數(shù)后得到股票交易量的自影響機(jī)制,見式(4).
Vt,k=10342.8+0.241Vt-1,k+0.296Vt-2,k+0.0762Vt-3,k.
(4)
利用歷史數(shù)據(jù), 對9月25日后兩個(gè)交易日的每個(gè)交易期的交易量進(jìn)行初步預(yù)測, 得到的交易量分布如表5所示.
表5 預(yù)測的總交易量
表中的 “34004” 表示在表4所示的第一個(gè)交易期中市場上關(guān)于”SH601398” 的交易量為34004手.
4.2.2 確定機(jī)構(gòu)投資者預(yù)期出售量
基于投資者的出售行為總是理性的假設(shè), 當(dāng)市場交易量大時(shí)拋售更多的股票、市場交易量小時(shí)出售較少的股票, 可以遵循市場的波動(dòng)規(guī)律, 減少自身行為造成的價(jià)格下降.可以考慮在每個(gè)交易期內(nèi)的拋出量占所有股數(shù)的比例與該交易期內(nèi)該股的成交量占該股全天總成交量的比例相同.
股票的短期價(jià)格往往會(huì)圍繞其當(dāng)期總體平均水平上下浮動(dòng), 而長期的價(jià)格走勢很大程度上會(huì)受到市場交易情況的影響.9月25日之前股票價(jià)格的持續(xù)走高, 很可能是市場中熱度不斷提高的股票買賣交易造成的.若不考慮其他外部因素的影響, 從9月26日開始的價(jià)格水平下跌, 則是因?yàn)樵摴竟善睊伿坌袨閷?dǎo)致的瞬時(shí)和永久性價(jià)格沖擊.所以資產(chǎn)清倉開始時(shí)的股票價(jià)格應(yīng)為短期內(nèi)的上限, 并在后續(xù)幾日內(nèi)呈整體下降的走勢.若要確定不受市場交易情況影響時(shí)的股票成交價(jià)格, 只需分析一定時(shí)期內(nèi)股票價(jià)格情況的變化規(guī)律, 即從真實(shí)的成交價(jià)格中刨除由于公司拋售股票(并可能引發(fā)更多投資者跟風(fēng)拋售)造成的價(jià)格變動(dòng)部分.
使用期權(quán)定價(jià)公式, 即帶有漂移項(xiàng)的布朗運(yùn)動(dòng)模型dP(t)=at+dB(t)對9月25日之前的股票價(jià)格數(shù)據(jù)進(jìn)行擬合.去除因?yàn)槿舾赏獠坎豢蓽y因素帶來的價(jià)格走勢升高(即正向漂移項(xiàng)部分), 剩下的隨機(jī)運(yùn)動(dòng)部分表示價(jià)格的波動(dòng)狀況.分別選用不同的布朗運(yùn)動(dòng)方程分別對48個(gè)交易期的日間規(guī)律進(jìn)行刻畫, 即Pk(t+1)=Pk(t)+akt+dBk(t).
考慮到預(yù)測模型本身也帶有不確定性, 參考Kalman濾波, 對于選定的第k=k0交易期, 首先使用期權(quán)定價(jià)公式與第t天的信息, 計(jì)算第t+1天第k0交易期的初始成交價(jià)格預(yù)測值, 再用第t+1天市場成交真實(shí)價(jià)格對該模型進(jìn)行修正.
某交易期的成交均價(jià)實(shí)際為一個(gè)隨機(jī)變量, 假設(shè)其皆服從均值為μt、方差為σt的正態(tài)分布。股票價(jià)格的歷史數(shù)據(jù)實(shí)際上是真實(shí)水平與隨機(jī)因素疊加后的結(jié)果,可將已知數(shù)據(jù)視作服從正態(tài)分布的隨機(jī)變量q(t)=xt+e,e~N(0,r)的抽樣,其均值xt為真實(shí)的價(jià)格水平, 方差r的大小則代表數(shù)據(jù)的準(zhǔn)確程度.但不論如何, 歷史數(shù)據(jù)的可信程度應(yīng)當(dāng)高于由預(yù)測模型推導(dǎo)得到的結(jié)果, 即滿足σt 確定價(jià)格預(yù)測模型dP(t)=at+dB(t), dP(t)=P(t-1)+a(t-1)+dB(t),dB(t)~N(0,q),P(t-1)~N(μt-1,σt-1). 通過公式可得第t天的價(jià)格分布的期望μt=μt-1+a(t-1)和方差σt=σt-1+q. 過去的成交價(jià)格q(t)=cyt+e,c=1, 是價(jià)格真實(shí)水平y(tǒng)t和隨機(jī)因素e,e~N(0,r)的疊加, 故q(t)~N(yt,r). 在原始的預(yù)測模型中納入了精度更高的歷史交易數(shù)據(jù), 通過原模型得到的價(jià)格的期望要根據(jù)歷史數(shù)據(jù)進(jìn)行相應(yīng)調(diào)整.因?yàn)橐阎畔⒏? 故可相應(yīng)提高預(yù)測結(jié)果的精度, 即最終得到的價(jià)格分布的方差相應(yīng)減小.價(jià)格分布的期望調(diào)整為 其方差相應(yīng)地調(diào)整為 故在對全部歷史數(shù)據(jù)進(jìn)行上述操作后, 即可得到較為精準(zhǔn)的價(jià)格預(yù)測模型 P(t)=P(t-1)+a(t-1)+dB(t),dB(t)~N(0,q),P(t-1)~N(μ,σ). 再通過之前的交易數(shù)據(jù), 對9月25日后兩個(gè)交易日中48個(gè)交易期內(nèi)的初始的成交價(jià)格進(jìn)行預(yù)測, 結(jié)果如表6所示. 表6 初始價(jià)格預(yù)測 表中 ”5.97” 表示在表4所示的第一個(gè)交易期中市場上關(guān)于”SH601398” 的交易價(jià)格為5.97元. 仿照以上步驟, 依次修正后續(xù)k-2個(gè)交易期的成交價(jià)與成交量, 得到最終的價(jià)格和交易量分布. 利用MATLAB編寫程序, 實(shí)現(xiàn)上述價(jià)格、市場成交量與投資者拋售量的調(diào)整過程.選取中等程度的風(fēng)險(xiǎn)容忍程度系數(shù)a=0.5.計(jì)算得到最終的價(jià)格和交易量分布, 并給出表7所示的程序化交易策略. 表7 程序化交易策略 表7的交易時(shí)間和價(jià)格和前面表中的含義一致, 交易量為該機(jī)構(gòu)在每個(gè)交易期拋售的股票數(shù)量.例如在第一個(gè)交易日的第一個(gè)交易期該機(jī)構(gòu)拋售的股票數(shù)量為1105手. 最終計(jì)算得到股票的交易成本為1173500元. 為了驗(yàn)證建模方法的合理性, 基于前166天(1月3日至9月24日)的數(shù)據(jù)給出第167天(9月25日)的預(yù)測, 并用預(yù)測結(jié)果與真實(shí)數(shù)據(jù)進(jìn)行比對.各部分的比對情況見圖1. 圖1 自動(dòng)化交易策略的有效性檢驗(yàn) 對比分析發(fā)現(xiàn), 歷史真實(shí)數(shù)據(jù)與制定策略下的交易時(shí)刻與價(jià)格情況大致吻合, 說明此策略具有一定的合理性, 即依此策略售股的投資者可期望得到最大的現(xiàn)金收益. 此處的自動(dòng)化交易策略雖然是在一定的假設(shè)條件下給出的, 并且離應(yīng)用在股票市場上還有一段不小的距離, 但是為資產(chǎn)清倉算法提供了一種新思路.將神經(jīng)網(wǎng)絡(luò)和傳統(tǒng)方法相結(jié)合, 操作簡便, 計(jì)算機(jī)易于執(zhí)行的神經(jīng)網(wǎng)絡(luò)替換掉了傳統(tǒng)方法中一部分復(fù)雜的計(jì)算, 使得算法的自動(dòng)化程度更高.此外, 還綜合考慮了總清倉時(shí)間以及日內(nèi)清倉的具體交易策略, 更加貼近機(jī)構(gòu)清倉大額資產(chǎn)時(shí)的實(shí)際情況.今后的研究目標(biāo)是在現(xiàn)有基礎(chǔ)上逐步放寬模型的假設(shè)條件, 使其更加貼近或幾乎近似股票交易市場的實(shí)際情況.4. 4 調(diào)整成交價(jià)格與數(shù)量
4.5 自動(dòng)化交易策略
5 自動(dòng)化交易策略的有效性檢驗(yàn)
5 結(jié) 論