策略輸出可以說是量化投資中最終要的一個部分,但是在開發(fā)策略的時候,我們往往容易掉進一些“開發(fā)坑”之中,以下具體談一談策略開發(fā)中的“坑”。
前言
從高頻到低頻
機器學(xué)習(xí)在高頻量化策略上應(yīng)用更加容易。
從線性到非線性
機器學(xué)習(xí)下的非線性比線性更能榨取數(shù)據(jù)的價值,但也更容易過度擬合,因此需要合理使用。
從單次分析到推進分析
推進分析更加符合實盤狀態(tài)下盤后更新模型的實際情況。
從分類到回歸
回歸經(jīng)常能優(yōu)于簡單的分成兩類。
預(yù)測值相關(guān)
好的預(yù)測值不一定帶來好的交易信號。
標(biāo)準(zhǔn)神經(jīng)網(wǎng)絡(luò)回歸大盤擇時策略
1.1. 設(shè)想和目標(biāo)
運用機器學(xué)習(xí)對過去的模式進行識別,并預(yù)測未來。也即,用當(dāng)前實時數(shù)據(jù)與過去所有數(shù)據(jù)進行模式匹配,若過去模式顯示會大概率上漲下跌,則相應(yīng)做多做空,否則不做操作。原本該模型是為日內(nèi)策略設(shè)計的,也就是收盤平倉,但由于目前平今倉手續(xù)費昂貴,所以改為第二天開盤平。
1.2. 理論、方法及數(shù)據(jù)源
和所有量化策略相似,研究假設(shè)過去發(fā)生的事情未來會重復(fù)發(fā)生(也即挑戰(zhàn)市場弱有效的假設(shè))。另一重要假設(shè)是指數(shù)現(xiàn)貨和指數(shù)期貨之間相關(guān)性很高,接近1。這個假設(shè)是合理,因為在流動性充足的市場,如果現(xiàn)貨和期貨之間的任何偏差都可以造成套利機會。故可以用現(xiàn)貨做期貨。方法為傳統(tǒng)的深度學(xué)習(xí)方法。數(shù)據(jù)源來自天軟、萬得,主要是中證500指數(shù),滬深300指數(shù),以及對應(yīng)的期貨主力合約。
1.3. 交易成本與策略執(zhí)行
在此策略的歷史數(shù)據(jù)回測中,成交成本假設(shè)為日內(nèi)單邊千分之一,隔日單邊萬分之3。也即在成交中假設(shè)1.5個指數(shù)點的沖擊成本。這樣的假設(shè)充分包含了目前股指期貨低流動性的現(xiàn)實。
1.4. 算法和模型
該算法共有7個模型,分別對應(yīng)10:00,10:30,11:00,13:00,13:30,14:00,14:30的決策時間點。每個模型的本質(zhì)是相似的,唯一的不同只在于越向后的模型,所能擁有的供機器決策數(shù)據(jù)越多。例如在10:30做決策會比10:00做決策多出半小時的數(shù)據(jù)。每個模型本身都是監(jiān)督式學(xué)習(xí)。用價量指標(biāo)來預(yù)測收益。若基于機器學(xué)習(xí)的預(yù)測值觸及多頭開倉閾值,則做多;若基于機器學(xué)習(xí)的預(yù)測值觸及空頭開倉閾值,則做空。反之維持原來倉位。
1.5. 結(jié)論
在日內(nèi)單邊千分之一,隔日單邊萬分之3的成交假設(shè)下,策略表現(xiàn)如下:
夏普:3.55
最大回撤:17.05%
勝率:62.69
盈虧比:1.31
年化:80.36%
.jpg)

1.6. 策略因子歸因
用前述的策略因子歸因方法,可以看出一些非常重要的特點。
可以從圖中看到,開盤的前一個小時行情數(shù)據(jù)產(chǎn)生的因子和收盤最后一個小時行情數(shù)據(jù)產(chǎn)生的因子是非常重要的,如14:30到15:00的收益。這與人的主觀經(jīng)驗是一致的,開盤前一小時交投最活躍,基本能反應(yīng)當(dāng)天的市場情緒和主導(dǎo)全天的走勢。而收盤最后一小時由于經(jīng)常是對第二天情緒的猜測,所以從它的走勢經(jīng)常能推斷出第二天市場的方向。
另外,盤中兩個小時交投最不活躍,隨機性也越大。單獨用盤中兩個小時作為因子去預(yù)測未來收益相對來說效果會差一些。

1.7. 風(fēng)險點及未來的改進方向
風(fēng)險點主要有:
(1)期貨和現(xiàn)貨突然性的暫時偏離(在當(dāng)前負基差的情況下和低成交量下,尤其可能發(fā)生)
(2)市場結(jié)構(gòu)發(fā)生了深刻的變化(投資者類型,投資者風(fēng)險偏好等等),導(dǎo)致過去的數(shù)據(jù)不再能預(yù)測未來。例如去年股災(zāi)期間國家隊的大規(guī)模救市。
(3)市場流動性不足,導(dǎo)致成交需要付出巨大成本或者無法成交。以中證500為例,本模型單筆收益大約在千分之三左右,如果買賣價差長期超過5個指數(shù)點,將對策略的盈利能力造成毀滅性的打擊。目前股指期貨受限以來買賣價差大約為1-2個指數(shù)點。
(4)沒有合適的報撤單邏輯。如果出現(xiàn)單邊市場,簡單的用限價單的報撤會導(dǎo)致以最不利的價格成交。
從低頻到高頻
為了比較高頻分鐘線與日線策略的區(qū)別,我們也設(shè)計了一個日線策略。這個策略是基于傳統(tǒng)技術(shù)指標(biāo)做特征,例如昨日收盤價相對于過去幾日的均線的位置,以及高開低開情況等等。去預(yù)測未來的一日的收益。
2.1. 算法和模型
該算法每日決策一次,每個模型本身都是監(jiān)督式學(xué)習(xí)。用價量指標(biāo)來預(yù)測收益。若基于機器學(xué)習(xí)的預(yù)測值觸及多頭開倉閾值,則做多;若基于機器學(xué)習(xí)的預(yù)測值觸及空頭開倉閾值,則做空。反之維持原來倉位。
2.2. 結(jié)論
在日內(nèi)單邊千分之一,隔日單邊萬分之3的成交假設(shè)下,策略表現(xiàn)如下:
夏普:0.68
最大回撤:36.92%
勝率:53.21
盈虧比:0.99
年化: 19.02%



1.3. 高頻背后的一些邏輯
2.3.1. 數(shù)據(jù)
通常來說,對機器學(xué)習(xí)模型,數(shù)據(jù)量越大越好。在假設(shè)能反映出目前市場的前提下,盡可能多的增加訓(xùn)練集的長度,對機器學(xué)習(xí)的模型算法收斂和模型穩(wěn)定性是大有裨益的。假設(shè)是日線,以每年250個交易日為例,那么2010年到2017年就是大約1700個數(shù)據(jù)點。但如果是分鐘線,同樣是每年250個交易日,每個交易日240根分鐘線,那么一共就有1700*240=408,000的數(shù)據(jù)點。顯然后者就比前者多了好幾個數(shù)量級。
但是并不是數(shù)據(jù)量的增加可以無限的,數(shù)據(jù)量的增加會收到其他客觀條件所約束,如運算速度和交易成本。
2.3.1.1. 運算速度
舉例期貨的例子來說,交易所每500毫秒推送一個tick,所以理論上,2010年到2017年就可以有49,000,000個數(shù)據(jù)點。如果假設(shè)交易策略是簡單的每500毫秒預(yù)測一次,那么數(shù)據(jù)點的增加在實盤中就并沒有什么用處。因為在CPU下,神經(jīng)網(wǎng)絡(luò)的計算用時不太可能在500毫秒之內(nèi)。所以在一個決策時間點內(nèi)沒有算完,就已經(jīng)進入了下一個決策時間點,實盤當(dāng)中根本交易不到。
2.3.1.2. 交易成本
同樣上一個期貨的例子。如果是非做市類策略,那么算上沖擊成本后的交易成本通常雙邊至少要達到千分之一。在500毫秒乃至更長一些的時間尺度,由于時間時間尺度偏短,波動很難非常大,所以這是一個非常難覆蓋交易成本。
2.3.1.3. 日內(nèi)消息面
國內(nèi)股市實行每日交易時間是四份小時。四個小時內(nèi)出現(xiàn)基本面新消息的概率較小。而隔日的話,各種消息面容易打破股價自身的運行規(guī)律。使得預(yù)測的準(zhǔn)確性大幅降低。
2.3.1.4. 行為金融
人的行為在短期內(nèi)是比較固定的。比如日內(nèi)短線的追漲殺跌等等,這些都是由人性所決定的。但是隨著時間的拉長,特別是兩個交易日之間,人會冷靜下來,情緒會淡化。
從線性到非線性
為了比較線性模型與非線性模型的區(qū)別,我們也設(shè)計了一個線性模型。這個策略是基于傳統(tǒng)線性核函數(shù)的支持向量機回歸,使用標(biāo)準(zhǔn)的神經(jīng)網(wǎng)絡(luò)回歸策略一樣的因子和預(yù)測目標(biāo)。
3.1. 算法和模型
算法與模型基本和標(biāo)準(zhǔn)的神經(jīng)網(wǎng)絡(luò)回歸策略一樣,不同的是,神經(jīng)網(wǎng)絡(luò)被替換成了線性核函數(shù)的支持向量機回歸。
3.2. 結(jié)論
在日內(nèi)單邊千分之一,隔日單邊萬分之3的成交假設(shè)下,策略表現(xiàn)如下:
夏普:0.95
最大回撤:29.71%
勝率:49.64
盈虧比:1.23
年化:17.67%




量化金融分析師(簡稱AQF,Analyst of Quantitative Finance)由量化金融標(biāo)準(zhǔn)委員會(Standard Committee of Quantitative Finance,SCQF)主考并頒證,是代表量化金融領(lǐng)域的專業(yè)水平證書。
.png)
課程適合人群:
金融工程/數(shù)學(xué)專業(yè)背景的同學(xué)/工作人士,希望進一步學(xué)習(xí)Python編程以及在量化投資的實戰(zhàn)應(yīng)用;
非金融工程專業(yè)背景的同學(xué)/工作人士,希望迅速成為寬客;
金融相關(guān)人員,希望學(xué)習(xí)如何系統(tǒng)的做量化策略;
個人投資者,希望系統(tǒng)學(xué)習(xí)掌握量化投資相關(guān)的實務(wù)技能,從模型開發(fā),回測,策略改進,搭建穩(wěn)定的量化交易系統(tǒng)。
.jpg)
(點擊上圖了解課程詳情)
量化金融分析師AQF核心課程體系:
1、《量化投資基礎(chǔ)》
主要涵蓋了量化投資領(lǐng)域的必備知識,包括:基本面分析、技術(shù)分析、數(shù)量分析、固定收益、資產(chǎn)組合管理、權(quán)益、另類投資等內(nèi)容。
2、《Python語言編程基礎(chǔ)》
包含了Python環(huán)境搭建、基礎(chǔ)語法、變量類型、基本函數(shù)、基本語句、第三方庫、金融財務(wù)實例等內(nèi)容。旨在為金融財經(jīng)人提供最需要的編程方法。
3、《基于Python的經(jīng)典量化投資策略》
包含了最富盛名,最基本的量化交易思想和交易策略。例如:海龜交易模型、Logistics模型、配對交易模型、波動擴張模型、Alpha模型、機器學(xué)習(xí)(隨機森林模型、主成分分析)、深度學(xué)習(xí)(人工神經(jīng)網(wǎng)絡(luò))等內(nèi)容。
4、《量化交易系統(tǒng)設(shè)計》
旨在學(xué)習(xí)量化交易系統(tǒng)的具體知識,包括過濾器,進入信號,退出信號,倉位管理等詳細內(nèi)容,并指導(dǎo)學(xué)員設(shè)計涵蓋個人交易哲學(xué)的量化交易系統(tǒng)。
5、《量化實盤交易》
旨在為解決實際量化交易策略搭建過程中的一些問題提供較優(yōu)解決方案。
掌握Python及量化投資技能,我們能做什么?
1、熟悉中國主要金融市場及交易產(chǎn)品的交易機制;
2、熟知國內(nèi)外期貨交易、股市交易的異同點和內(nèi)在運行機制;
3、掌握經(jīng)典量化交易策略細節(jié)及其背后的交易哲學(xué);
4、掌握金融、編程和建模知識基礎(chǔ),擁有量化交易實盤操作能力;
5、具備獨立自主地研發(fā)新量化交易策略的能力;
6、掌握量化交易模型設(shè)計的基本框架,以及風(fēng)險管理和資產(chǎn)組合理論的實際運用;
7、掌握從策略思想——策略編寫——策略實現(xiàn)餓完整量化投資決策過程;具備量化投資實戰(zhàn)交易能力。
3.3. 非線性背后的一些邏輯和討論
3.3.1. 金融市場大概率是非線性的
金融市場大概率是非線性的,舉例而言,業(yè)內(nèi)研究發(fā)現(xiàn),不是高開幅度越大,當(dāng)日的后續(xù)走勢就越向上。如果當(dāng)日高開0~0.5%左右,那么當(dāng)日大概率是上揚的,但是如果高開的過大,當(dāng)日就容易高開低走。
3.3.2. Bias-VarianceTrade off


如上圖所示,被舍棄的神經(jīng)元用X表示出來了。所有指向它和從它發(fā)出的有向箭頭都被斬斷。
3.3.3. 人的理解方式經(jīng)常是線性的
正向線性思維的特點是,思維從某一個點開始,沿著正向向前以線性拓展,經(jīng)過一個或是幾個點,最終達到思維的正確結(jié)果。舉例而言,經(jīng)常有人會認(rèn)為,如果過去100年平均每年的生產(chǎn)力提升是一千億,那么未來一年統(tǒng)計上的期望生產(chǎn)力提升也是一千億。這里就犯了一個常見錯誤。人類生產(chǎn)力的提升經(jīng)常是指數(shù)級別上升的,所以未來一年統(tǒng)計上的期望生產(chǎn)力提升應(yīng)該不止一千億。
正是因為人的思維方式是線性的,在理解非線性的時候會直觀上比較困難。為了增加讀者對非線性的直觀理解,我們將在下一篇中重點闡述。
從單次分析到推進分析
4.1. 算法和模型
算法與模型基本和標(biāo)準(zhǔn)的神經(jīng)網(wǎng)絡(luò)回歸策略一樣,不同的是,我們這次要比較第一篇報告中寫了單次分析和推進分析。
下面是單次分析的常見方法:
上圖給了一個單次分析的實例。實際上單次分析就是把整個樣本分為互不重疊的兩個部分。白色的是樣本內(nèi),灰色的是樣本外。首先用樣本內(nèi)的數(shù)據(jù)訓(xùn)練機器學(xué)習(xí)模型,然后用這個建立好的機器學(xué)習(xí)模型直接放入樣本外數(shù)據(jù)進行檢驗,如果在樣本外的數(shù)據(jù)依然說明該模型效果很好,那么在一定程度上說明該模型可以處理實際的問題而推進分析的樣本內(nèi)外常常變化。

上圖是一種推進分析的方法。推進分析有個最為明顯的特點,就是樣本外的交易長度僅為一個交易周期。同樣的,首先用樣本內(nèi)的數(shù)據(jù)訓(xùn)練機器學(xué)習(xí)模型,然后用這個建立好的機器學(xué)習(xí)模型直接放入樣本外數(shù)據(jù)進行檢驗。在T1時刻,用0~T1的數(shù)據(jù)訓(xùn)練模型,然后在T1~T2的數(shù)據(jù)去檢驗?zāi)P?在T2時刻,用0~T2的數(shù)據(jù)訓(xùn)練模型,然后在T2~T3的數(shù)據(jù)去檢驗?zāi)P?在T3時刻,用0~T3的數(shù)據(jù)訓(xùn)練模型,然后在T3~T4的數(shù)據(jù)去檢驗?zāi)P?,以此類推。最后將所有灰色框?nèi)的檢驗結(jié)果匯總,就是推進分析下總的樣本外結(jié)果。
4.2. 結(jié)論
在日內(nèi)單邊千分之一,隔日單邊萬分之3的成交假設(shè)下,策略表現(xiàn)如下:
夏普:2.66
最大回撤:17.24%
勝率:57.56
盈虧比:1.22
年化:56.38%




4.3. 單次分析和推進分析的邏輯討論
在邏輯上,推進分析更接近實盤。因為在實盤中,經(jīng)常地,模型會每日在盤后更新。所以如果是這樣,在回測時候,也應(yīng)該假定,在T日末,模型會被重新訓(xùn)練,也即是站在T日的模型和站在T+1的模型也應(yīng)當(dāng)是不一樣的。這樣做的顯著好處是,不論是回測還是實盤,每個模型都能用到站在當(dāng)前時點上最新的數(shù)據(jù)。壞處也很顯著,在回測時候,對歷史上的每一天都要建立一個模型,這樣的計算量是巨大的。
另外推進分析也有不同的方法。

上圖是另一種推進分析的方法(Rolling)。與之前推進分析的方法不同,在T2時刻,用0~T2的數(shù)據(jù)訓(xùn)練模型,然后在T2~T3的數(shù)據(jù)去檢驗?zāi)P?在T3時刻,我們并不像之前一樣,用0~T3的數(shù)據(jù)訓(xùn)練模型,而是用T1~T3的數(shù)據(jù)訓(xùn)練模型,然后同樣的在T3~T4的數(shù)據(jù)去檢驗?zāi)P?,以此類推。最后將所有灰色框?nèi)的檢驗結(jié)果匯總,就是推進分析下總的樣本外結(jié)果。
使用全樣本做推進分析和使用過去n期樣本做推進分析之間沒有優(yōu)劣之分。選擇時候大體上要遵循兩個基本原則,一個是數(shù)據(jù)要具有對當(dāng)前市場狀態(tài)的代表性,另一個數(shù)據(jù)量要盡可能多。使用過去n期樣本通常能對當(dāng)前市場狀態(tài)的代表性,使用全樣本做推進分析。
從分類到回歸
5.1. 算法和模型
算法與模型基本和標(biāo)準(zhǔn)的神經(jīng)網(wǎng)絡(luò)回歸策略一樣,不同的是,預(yù)測目標(biāo)不再是某段時間的收益,而是一個二分類。也即,大于0的時候是上漲分類,小于0的時候是下跌分類。
5.2. 結(jié)論
在日內(nèi)單邊千分之一,隔日單邊萬分之3的成交假設(shè)下,策略表現(xiàn)如下:
夏普:1.66
最大回撤:25.30%
勝率:49.72%
盈虧比:1.39
年化:30.91%




5.3. 分類與回歸的邏輯討論
分類的邏輯是,市場的狀態(tài)是離散可分的。如果按照上例,漲0.1%和漲10%都會歸結(jié)到上漲一欄。但是事實上,漲0.1%和漲10%是截然不同的,前者很可能是隨機擾動,而后者一定是市場情緒的體現(xiàn)。但是隨機擾動與市場情緒的分界點是很難確定的,漲0.1%是隨機擾動,但是漲0.5%是不是隨機擾動呢?所以分類有個天生的問題,以什么標(biāo)準(zhǔn)來劃分類,如何劃分類?我們也曾經(jīng)嘗試過劃分成5類,7類,但是由于劃分的類過多,效果也不及二分類。
預(yù)測值相關(guān)
6.1. 算法和模型
算法與模型基本和標(biāo)準(zhǔn)的神經(jīng)網(wǎng)絡(luò)回歸策略一樣。在標(biāo)準(zhǔn)神經(jīng)網(wǎng)絡(luò)回歸,我們只有當(dāng)大于一個閾值的時候,做多。小于一個閾值的時候做空。但是在該策略中,再算出預(yù)測值后,直接預(yù)測值大于0就做多,小于0就做空。
6.2. 結(jié)論
在日內(nèi)單邊千分之一,隔日單邊萬分之3的成交假設(shè)下,策略表現(xiàn)如下:
夏普:2.17
最大回撤:26.05%
勝率:46.68%
盈虧比:1.75
年化:43.92%




6.3. 預(yù)測值相關(guān)的邏輯
預(yù)測值可以從上述的回測看到,預(yù)測值如果按照簡單的大于0,小于0交易,效果并不是特別出色。目前業(yè)內(nèi)比較公認(rèn)的結(jié)論是,預(yù)測值的強度代表方向的概率。舉例而言,如果一個預(yù)測值是0.1%,一個是1%,那么后者實際上漲的概率大于前者。因此,選擇一個合適的閾值變的至關(guān)重要??赡艿拇_定閾值的方法可以是,歷史上預(yù)測值的平均數(shù)加上一個歷史上預(yù)測值的標(biāo)準(zhǔn)差作為看多閾值;歷史上預(yù)測值的平均數(shù)減去一個歷史上預(yù)測值的標(biāo)準(zhǔn)差作為看空閾值。
一個絕對值較大的預(yù)測閾值容易漏掉一些真正的上漲機會(統(tǒng)計上的Type II error),而一個絕對值比較小的預(yù)測閾值容易錯誤的開多倉(統(tǒng)計上的Type I error)。同時,絕對值預(yù)測閾值越小,越容易達到閾值,越容易觸發(fā)交易,交易頻率就越高,交易成本就越高。反之交易就越不頻繁,交易成本就越低。
.png)
更多內(nèi)容推薦閱讀:
Wind、Excel和Python三大金融技能兼修,下一個金融分析大神就是你
金程推薦: AQF培訓(xùn) AQF培訓(xùn)機構(gòu) AQF是什么意思
AQF考友群:760229148
金融寬客交流群:801860357




