本文是科普文,對之前個人所寫的量化投資相關的文章進行了一些整理,方便初次接觸量化的朋友進行學習。
如果你已經看過我之前關于量化的文章,并且已經走在了量化的路上,為了節省您的時間,那么本文可以不用繼續往下看了。
量化投資,可以按照字面分成兩部分,分別是“量化”和“投資”?!巴顿Y”是指我們把錢投出去,而“量化”指的是投資之前需要做的準備工作。
為什么量化?
量化是什么?
怎么學量化?
要注意什么?
下面,我將會從這幾個方面對量化進行展開,當你弄清楚這些問題之后,就可以快速上手量化投資了。
1 為什么要學習量化?
最近兩年,網絡上的量化平臺如雨后春筍一般涌現出來。
就算你沒有接觸過量化投資,也或多或少從別人那聽說過。
就算你沒有聽說過,也至少知道alphaGo戰勝了李世石、戰勝了柯潔的新聞。
機器人可以戰勝人類,這不再是一件新鮮事。
在可以預見的未來,投資也會如此。
1.1 量化可以給我們帶來更高的收益
對于常常和數字打交道的投資領域,量化能夠發揮出什么樣的光彩呢?
詹姆斯·西蒙斯[1]是量化投資的先行者,也是最早的一批人之一,更是其中最厲害的一個。
他在1988年3月成立的大獎章基金。在1989-2009年期間,大獎章基金給客戶的平均年回報率高達35%。
如果不考慮高達44%的提成,大獎章基金的年收益率實際上要超過60%。
詹姆斯·西蒙斯給投資界樹立了一個標桿,告訴了人們通過量化的方式,可以獲得遠遠超出平均水平的收益。
了解過詹姆斯·西蒙斯的人可能知道,他在進行量化投資之前,是一個數學家。
而我們大部分人都是普通人,他的那套“彈指神通”我們可以學得會嗎?
我不是專業學習數學的,也是普羅大眾的一員。
同樣作為量化的初學者,我的一些經驗或許能夠給你提供一些參考。
之前,我寫了一篇文章《曾經,我找到了投資的圣杯》[2],介紹小市值策略在過去能夠達到的程度:
投資將近10年,收益6841.38倍,有沒有被這樣的收益率驚到?
驚嘆過后,我馬上就用于實盤,下圖是joinquant模擬盤至今的結果:
實盤是從2016年6月6日開始的,一年多一點的時間里,獲得了年化14.02%的收益。
去年6月份也正好是重組新政開始的時候,在這樣嚴峻的環境下,能夠獲得這樣的收益也還算不錯了。
當然,我實際上并沒有緊跟這個模擬盤,因為中間對小市值未來存疑,我在2017年4月24日開始更換策略,就是我之前發布過的動態因子策略:
所以實盤的結果是,從2016年6月6日至2017年7月13日,實現了24.49%的收益,折算成復合年化收益是21.95%。
熊途漫漫,能夠獲得這樣的收益我已經比較滿足了。
對于一些牛人來說,量化的模擬盤可能是這樣的:
也可能是這樣的:
1.2 可以免受情緒的干擾
如果你交易過股票,肯定會有這樣的感受,在決策的時候,常常容易糾結。
買了是否還會跌呢?
賣了是否還會漲呢?
每當我們下定了決心,價格的變化,又將我們打回原形。
既浪費了時間,又消耗了精力,還對我們長期地投資結果沒有什么影響。
明明是一種撿芝麻丟西瓜的行為,很多人也清楚這個道理,但是常常就是忍不住。
我們的投資決策,常常會受到情緒的干擾,這源于人性,很難解決。
通過量化,其實可以很好地繞開這個干擾。
在制定好量化策略之后,策略會根據市場的情況,對標的進行輪動。
如果不進行同樣的計算,我們在當天往往不知道交易的股票是什么,甚至不清楚是否需要交易。
以我個人為例,我設置的策略交易時間為14:50。
在這之后,我了解到需要輪換的股票,并進行交易。先是賣出,然后買入,最多的時候,需要進行20筆。
因為后面三分鐘是深交所集合競價時間,實際上交易的時間只有不到10分鐘。
在這么段的時間里,我常常弄得手忙腳亂,有時候甚至沒有完全輪換完畢。
你說,這樣的情況下,還有心思去糾結嗎?
1.3 可以節省出很多時間
功課應該在投資之前就做好。
但是這樣的功課,往往需要花費大量的時間和精力。
剛剛學習完價值投資,我就有這樣的感覺。
每投資一家企業,我們都需要看它的年報,了解它的財務狀況。
我們還需要了解公司的商業邏輯,分析其競爭環境。
每投資一家公司,就需要付出一份時間和精力的。
在剛開始還不熟悉的時候,常常需要花費十天半月的時間,才能研究好一個公司,并且這個公司還不一定適合投資。
成本是放棄了的最大代價,我們在投資上多投入一份精力,就會在工作上少花費一份精力。
也不怪有人會說,年輕人最重要的是投資自己。
因為本金比較少,通過這樣的方式投資,往往得不償失。
量化投資,其實很好地解決了這樣的問題。
在制定了一個策略之后,我們只需要花費很少的時間進行維護,付出的成本比價值投資要低得多。
如果你是一個上班族,想要獲得不錯的收益,又不想在投資上花費太多的精力,量化就是一個非常好的選擇。
如果你是一個價值投資者,同樣也應該學習量化。
因為通過量化,你可以節省很多采集數據的時間[3],讓自己專注于定性方面的研究和分析。
1.4 可以快速地檢驗自己的想法
對于投資,不知道你有沒有一些自己的看法?
我剛剛接觸投資的時候,想法不多,只求通過抄作業得到一個標準的答案。
但是隨著研究和理解的深入,我發現作業抄得再好,你也很難超越寫作業的人。
同時你能夠抄到的作業,別人自然也能夠抄到,這就會有那么一些風險。
然后我就不滿足于抄作業,也有了一些自己的想法。
第一次出現了問題,是對港股牛熊證的投機。
之前看到別人分享的方法論,勝率挺高的,并且實現起來也不困難。
然而我在實盤的時候,卻發現不是這個樣子,除了一開始稍有盈利,后面一直在虧損。
還好當時總投入的金額并不多,并且在虧損之后也沒有繼續出現想要回本的賭徒心態。
不過這樣的損失,其實是可以避免的。
在那之后,我通過量化的方式,使用歷史的數據進行了簡單的回測,結果是:短期能夠獲益,長期是要虧損的。
問題的主要原因是出在手續費和滑點上面。
很多投資策略,都可以先通過量化的方式進行回測驗證。
策略回測效果很好實盤效果不一定會很好,但策略的回測效果都不好,我們很難相信實盤會擁有良好的效果。
例如我覺得技術指標效果不是很好[4],然后我就統計了果仁網所有現成的技術指標數據:
在經過回測之后你會發現,單獨使用的技術指標,大部分都跑不贏指數,勝率也不高。
當然,也許經過一定的組合可能獲得更好的效果,不過那是另外一回事了,需要進一步的驗證。
又例如,之前聽說在節假日前,市場一般都會上漲[5],我就忍不住去驗證了一下:
發現還真有這回事。
通過歷史的數據,你可以看到這些節假日前一天的上漲的概率都大于50%。
再例如,我們說中國大部分都是散戶[6],怎么樣驗證這個說法呢?
我們可以對比新增投資者(開戶)數量和指數點位的變化趨勢:
我們可以對比交易投資者的數量和指數點位的變化趨勢:
2 量化是什么?
簡單來看,量化其實是對數據的統計。
量化的工具我們在工作和生活中,或多或少應該都有用到過——Excel。
據說雪球大V持有封基,用了十年的Excel,量化十年賺了十倍。
在雪球有一個策略很出名,叫做蛋卷斗牛二八輪動。
第一次看到的是這個模型的2.0版本[7]:
每周五(或者本周的最后一個交易日)臨近收盤時,將滬深300指數和中證500指數切換到周線狀態,分別查看兩者過去四周的累計漲幅。如果過去四周漲幅大的那個指數在四周中能夠獲得正回報,那么就在收盤前買入對應的ETF持有一周,直至下一次的切換;但是如果過去四周漲幅大的那個指數在四周中依然是虧損的,那么就選擇空倉,直至下一次切換。
其實這個策略實現起來非常簡單,下面我就告訴你一個5分鐘內就可以實現的方法:
第一步:打開通達信軟件,輸入代碼000300(滬深300),切換到周線,然后導出數據到Excel;
第二步:類似地將000905(中證500)的數據導出
第三步:數據拷貝到同一個表格中
第四步:計算四周漲幅(D6=B6/B2-1)
第五步:計算單周漲幅(F6=B6/B5-1)
第六步:根據四周漲幅,選擇單周漲幅(H7=IF(D6>E6,F7,G7))
第七步:添加漲幅小于零的止損(I7=IF(MAX(D6:E6)>0,H7,0))
第八步:根據漲跌幅計算投資凈值(J7=J6*(1+F7))
第九步:拉表格,插入折線圖
橙色的曲線就是該策略的實現效果。
之前我還在這個基礎之上,進行了些擴展,做了一個多指數輪動的策略,這是回測結果:
所以我們沒有必要將量化看成很高深的東西。
3 怎么學習量化?
使用excel量化,需要導出數據,也需要編寫一些簡單的公式。
很多人對量化敬而遠之,其實是因為對編程的學習存在遲疑。學習需要花費巨額的時間,卻并且不一定能產生相應的價值,這是很多人望而卻步的原因。
但是現在有很多量化平臺,例如果仁網、優礦、京東量化平臺、聚寬,都會提供一些現成的指標,我們連這一步都可以省掉。
甚至很多策略在這些量化平臺上,都已經實現了,我們直接拿來使用就可以了。
所以,我覺得“使用”是第一步,也是最重要一步。
我們之所以學了時間英語,卻不能和外國人正常交流,原因是什么你想過嗎?
但如果你立刻就開始使用的話,就不會存在這樣的問題。
我們可以直接找到一個應用的切入點,例如拷貝別人的代碼,然后改成自己想要的樣子。
學習量化,我就是這樣開始的。
拿之前發布的動態因子策略[8]舉例,這個策略真正編程的時間只有半天。
為什么可以這么快?因為里面大量地復用了別人的代碼。
首先是回測部分,如果你看前面幾行,還能發現別人的版本標識:
其次是研究部分,代碼也是來源于別人的文章《【研究】量化選股-因子檢驗和多因子模型的構建》[9]。
老實說,在一開始的時候,文章的很多內容,我都看不懂。
但沒有關系啊,我逐行去執行代碼,把每一個疑問都研究清楚。
最終,我在別人代碼的基礎上,進行了一些微調,得到了自己想要的結果。
所以實際上,我只是代碼的搬運工。
一開始我對DataFrame一竅不通,因為數據統計的需要,就學會了數據的批量操作,周二到周六分享的基金回測數據,就是使用得到的結果。
一開始我對matplotlib一竅不通,因為曲線展現的需要,就學會了如何繪圖,周二到周六分享的上證指數溫度計圖片,就是使用得到的結果。
通過這樣的方式學習量化,學習編程,你不會覺得枯燥,因為你沒走一步,都在應用。
根據自己的需要,不斷地去使用就好。也不用強求自己一開始就能做得很好,日拱一卒就夠。
使用的需要,會給我們指引前進方向的。
4 量化的注意事項
量化的時候,有些東西[10]你是需要特別注意的:
未來數據
邊界條件
有效樣本
未來數據是指那些對于過去的過去而言,已經發生的數據。例如前天的回測不應該用到昨天的數據。
邊界條件一般是指那些我們不能達成或者很難達成交易的情況。例如停牌,例如漲跌停。
有效樣本[11]來源于樣本規模和樣本代表性。
樣本的規模和策略中規則觸發的頻次有關。觸發次數只有關鍵的幾次,很可能這些規則就是過度擬合[12]數據的結果,得到的樣本自然就是無效的。
樣本的代表性指的是數據量,數據量太小,不足以涵蓋市場類型和交易時間,這樣形成的策略,同樣也是不可信的。
附
文章中涉及到的一些內容:
[1]:與橫掃華爾街數學家的珍貴對話
[2]:曾經,我找到了投資的圣杯
[3]:有了這幾個工具,我研究公司花費的時間下降了80%
[4]:看K線,賺大錢。
[5]:又是一年五一節了
[6]:跌跌不休,什么時候是個頭?
[7]:二八輪動模型升級至2.0版,更簡單更賺錢
[8]:動態因子策略,圣杯?
[9]:【研究】量化選股-因子檢驗和多因子模型的構建
[10]:是什么,讓你對自己的策略確信無疑?
[11]:投資10年300倍,你相信嗎?
[12]:量化的實盤效果為什么總是不如回測?