官术网_书友最值得收藏!

3.1 技術指標來源

傳統的直觀的建模方法是規則型或者條件型的,滿足一系列條件就買(賣),不滿足就不進行買(賣)。這些條件都是由人腦主觀構造的,但由于市場變化莫測,各種情況千差萬別,很難用一些過于精確的條件來描述價格的變化。

3.1.1 建模背景介紹

舉一個類似的例子,如自動駕駛。要教會一輛汽車自動駕駛,如果依靠規則系統,比如告訴它看見紅燈就減速,看見綠燈就啟動等,這些還算比較簡單;但如果是看見前面的車就剎車、看到旁邊的車就變道、看到后面的車就加速等,則會比較復雜,整套規則體系過于龐雜也不便系統化地研究,很多規則都是一些較為特殊的情況,并且規則之間多有重疊性,如何泛化又是一個問題。因此,如果順著這種規則型、專家型的思路,很難進行系統化的研究。

20世紀80年代最流行的模型是神經網絡,也有人用神經網絡的方法研究自動駕駛,可惜那時候不是很成功。神經網絡的一個很大問題在于過度擬合,這主要是由模型參數過多而訓練數據太少導致的。比如估計一個參數的數值,數據量每擴大100倍,精度可以提高10倍;而如果估計的參數非常多,類似于一個高維統計問題,數據點則會更多地分布在樣本空間的邊緣地帶,從而嚴重影響參數估計的效果。詳細的討論可以參考《Elements of Statistical Learning second edition》第二章,這里不做展開。

如果數據量足夠大,在樣本空間內部各種取值都有,參數估計則更為準確。當年神經網絡的模型在今天重新運用都取得了很好的成果,但因為神經網絡的名聲不是很好,所以現在的研究者把它命名為深度學習。

現在回到汽車駕駛的問題。我們可收集非常長的駕駛記錄作為訓練數據,然后把可以想象到的指標如車速、前車車速、后車車速、車距等作為因子,然后用復雜的深度學習模型,例如卷積神經網絡,就可以訓練出很好的自動駕駛系統。事實上,人類學習駕駛也是通過觀察別人駕駛,然后有個較為模糊的印象,而不是通過一條一條精確的規則來駕駛,這跟卷積神經網絡類似,如果駕駛途中一條一條規則去套,顯然反應不過來,容易出車禍。

因此,知道預測模型的威力之后,我們不再使用規則型的系統,在交易中也一樣。本章主要討論預測因子,下一章再討論預測模型。

因子的來源有很多種,其實更多依賴數據的來源。如果只有行情數據,那么可以做的工作非常有限。更進一步地說,如果是持倉3、5天的中低頻策略,那么過于高頻的分筆數據用處不大,還要先整理成5分鐘K線,然后在5分鐘K線的基礎上構建預測因子,這樣可以變換的方式并不多見。

如果是持倉時間更長的策略,比如2~4周,那么一般需要用日線數據建模,可以使用很多基本面的數據。國內很多信息提供商會提供商品基本面的數據,比如有上游、中游、下游三種,數據有日頻、周頻、月頻等,可以用來建模。但很多時候數據質量是一個問題,比如數據更新不及時,數據修正缺乏歷史記錄等,就會導致用這些數據建立的模型沒說服力。行情數據雖然簡單,但最起碼數據質量是有保證的。如果數據質量沒有保證,機器學習就會稱之為垃圾進垃圾出(garbage in,garbage out),得不到有意義的結果。因此,我們這里只研究行情數據和5分鐘K線。

我們以螺紋鋼(rb)為例來說明。本地數據中rb的合約有如下幾個:

我們可以用rb1701作為例子:

圖3-1 螺紋鋼1701合約

具體的價格趨勢如圖3-1所示,黑線部分是所有的價格,紅線部分是該合約作為主力合約時的時間段。由此可以看出,每個合約都只有其上市時的一部分時間作為主力合約存在,其他都是作為非主力合約存在。一般來說,只有主力合約的流動性足夠好,才能夠用來交易趨勢類策略,因此,我們這里構造因子也只針對主力合約進行。

一般來說,傳統的技術指標并不多,下面我們逐個進行分析。

3.1.2 R自帶的TTR庫

我們可以先看看R的TTR(Technical Trading Rules)包里面的函數:

函數有64個之多,用它們構造技術指標應該是足夠的。

例如我們可以先看第一個ADX。考察一個因子好壞的一個簡單方法是看它自身與未來收益的相關性是否穩定。正負并不重要,因為只需要加個負號就可以改變。

如果一個指標,在不同的合約上,跟未來的收益率都是正相關,或者都是負相關,那么這個指標是比較穩定的;但如果一個指標在一半合約上正相關,另一半合約上負相關,那么它就不是十分穩定。另外,考察穩定性還可以用均值/標準差的方法,類似于Z-score的概念。這里這個數值是-0.266,只從數值上我們很難分辨它是高還是低,可以結合其他因子一起來看。

由此可見,這個指標的數值是0.45,而且15個合約中有11個是正的,比之前的指標更為穩定,因此,我們認為這個指標更好。

這個指標僅僅用到買賣盤后,表現弱一些,因為買賣盤后跟未來80分鐘的價格變化關系不大,但是跟未來短時間的價格變化關系比較密切。因此,同樣一個指標,針對不同的預測周期,會有非常不一樣的效果。

也許很多人會問,這種利用過去行情信息預測未來的方法,是否違反市場弱有效的假說?其實,這個問題可以這么考慮:首先,市場弱有效本來就是個假說,有事實支持它,也有事實反駁它。其次,每個人分析信息的能力不一樣,同樣的信息不可能同一時間反映到行情中,有人快有人慢,信息處理能力強的人會獲得一定優勢,畢竟他們也支付了更多的成本(腦力、勞力),因此理應獲得更高的收益。最后,大多數投資大師都反對市場弱有效假說,甚至有很多小幽默調侃它,比如“資助商學院教市場弱有效假說方便自己賺錢”,但對市場保持敬畏之心還是有必要的。總之,我覺得正確的態度是相信市場存在無效的時候,同時也認可挖掘市場無效不是那么容易的事情。

我們接下來考察其他因子:

這個因子表現更加穩定。有人會問構造這些因子的過程是否復雜,我個人的觀點是沒必要在構造因子上花太多的時間,原因在于因子本質上起著向量基的作用,但是在同一個線性空間下面,目標向量(因變量)確定后,用不同的基去表示本質上是一樣的;其次,現在有boosting等各種ensemble方法,復雜的因子可以通過一定的方法由簡單的因子合成,所以沒必要去人工構造;最后,在信息源不變的情況下,構造的因子很多是高度相關的,如果精心構造一個因子,或許會過于復雜,預測效果反而不好,還不如把精力放在這些簡單的因子上。綜上所述,本人不會把太多精力放在構造因子上。這些因子都是運用R語言自帶的函數稍加整理即可,一般只有一行代碼(one liner)。

也有些人會問,如果把這些因子都公開了,會不會對其不利。事實上,既然認為特征工程不重要,自然也就不會認為這些因子有多重要。量化建模是一個龐大的系統過程,并不存在哪塊特別重要之說,本人覺得各個環節都挺重要的,而且本人也一直處于不斷進步中,期貨中低頻也未必是本人未來主要研究的方向。

另外,從單個因子來看,即便相關性不是很一致,但很多個因子結合起來,預測效果就會好很多,這就是把幾個弱指標合成一個強指標的意義。總之,沒必要在單個指標上花太多時間。

好了,關于TTR的指標就闡述到這里,剩下的內容大家可以自己嘗試著練習一下。

3.1.3 一些技術指標的書籍

除了R語言自帶的指標以外,還有一些技術指標方面的書籍大家可以參考學習一下,這里推薦一本書:《The Encyclopedia of Technical Market Indicators》,作者為Robert W. Colby。推薦這本書并不是因為這本書里面的技術因子有多厲害,而是因為這本書包含的因子數目非常多,一共有800多頁,從A排到Z,有數百個因子,因此不需要自己思考,直接把上面的因子拿來用即可。這本書網上有電子版,里面的技術指標很多也包含在R的TTR包里,如果沒有包含,自己簡單仿照著寫也不困難,這里不再贅述。

另外一些是基于日本蠟燭圖(即K線圖)的預測因子,可以參考這本書《日本蠟燭圖技術》(史蒂夫·尼森著,丁圣元譯)。這些更像是一些技術形態,把它們翻譯成技術指標還需要一些工夫。

如著名的烏云蓋頂:

可以看出,這類信號的返回值只有TRUE和FALSE兩種,并不是具體的數值,因此很難直接拿來使用。這些更適合傳統的規則型策略,不大適合拿來用在機器學習上。

還有穿刺的形態:

另外還有啟明星的形態:

有人會問這些K線形態的自動識別是不是就是我們常說的“模式識別”?其實,模式識別一詞更多是針對圖像分析領域,比如手寫數字的識別,但運用的方法還是傳統的統計模型,如logistic regression。現在也有人使用更復雜的深度學習模型,在手寫數字的識別上,誤差率又大為降低。但這類都是標準的機器學習模型,不是那種通過語言描述一種模式(比如先漲一段回調一點再漲起來)然后用計算機去識別的模式。很多人工炒手轉量化失敗就是因為嘗試著去用計算機語言描述這些狀態,然后回測驗證,這個是失敗的模式。畢竟炒手主觀交易很多時候也是模糊的邏輯,類似開車,而統計學習這類復雜模型也沒有太清晰的邏輯,本質上也是這種模糊的思路,反而能更好擬合。

因此,這類K線形態或許不能直接拿來使用,這也是量化研究跟技術分析的一大區別,技術分析更多是基于這些形態使用的。

美國WorldQuant公司的老板寫了一本書《Finding Alphas: A Quantitative Approach to Building Trading Strategies》,里面介紹了構建預測因子及測試的基本步驟,還給出了很多具體因子的例子,讀者可以參考。

3.1.4 常見的論文

除了這些書籍以外,還有一些常見的論文介紹了預測因子,如《Automated Trading With Boosting and Expert Weighting》,作者是German Creamer和Yoav Freund,其中Yoav Freund是adaboost的發明者,boosting領域的頂級研究者,而boosting是機器學習領域很常見的概念。

這篇文章使用了boosting的方法來研究交易,即把一些較弱的預測因子合成為較強的預測因子,然后再構建模型,另外還給出了風險管理、投資組合優化等方法,附錄給出了全部因子的公式,這些都可以作為構建因子的素材。

另外一篇比較著名的論文是《101 Formulaic Alphas》,里面列舉了101個因子的公式,大多數適用于股票,但很多時候用在期貨也是可以的。一般來說,用于股票的因子涉及全市場股票之間的相關關系,因此有很多基于排序(rank)的指標,而期貨的因子一般只在單一品種上根據價量構建,不需要這么復雜。

主站蜘蛛池模板: 平乡县| 新和县| 彭山县| 晴隆县| 枣阳市| 和顺县| 岱山县| 莎车县| 祁门县| 永安市| 太保市| 伊宁市| 无棣县| 新密市| 门源| 和静县| 呼玛县| 固安县| 当阳市| 广灵县| 大安市| 彭州市| 五寨县| 盐城市| 岳西县| 洪湖市| 嘉鱼县| 恩施市| 安远县| 邹平县| 资中县| 巴塘县| 巧家县| 富宁县| 泸定县| 格尔木市| 瑞丽市| 藁城市| 长武县| 田阳县| 合肥市|