量化投資與算法交易(二)
· 當我嘗試用計算機科學去做股票分析的時候,我知道我的路走窄了,但是真的很賺錢; ---西蒙斯(數學家)
術語與概念
本來是直接開講回測系統(backtest),但是線下有朋友反應很多術語以及概念不是很清楚,這樣直接開講回測系統的搭建就比較尷尬,所以為了更快的讓大家知道怎么搞量化投資與算法交易,我將費點口舌一一介紹;
金融交易術語
1,超額收益:我們一般叫alpha,就是你超出大盤的收益,舉個demo:大盤1個月上漲17%,而你1個月上漲5%,表面上看上去你賺錢了,其實你是個憨憨,你虧了12%,也就是說,你的alpha是-12%。。。
2,最大回撤:用來描述買入產品后可能出現的最糟糕的情況。后面會慢慢細說這個指標,很多公司會把這個題目當做算法題,有興趣的同學可以去寫個代碼算一下收益曲線的最大回撤;
3,夏普比率:1單位風險所獲得的收益,這個比較普遍;
4,市價單:以市場價進行買入的一筆合約;
5,限價單:以低于市場價格掛在市場上的合約;
6,一手:就是100個股票;
7,前復權:復權就是對[股價]和[成交量]進行權息修復,按照股票的實際漲跌繪制股價[走勢圖],并把成交量調整為相同的[股本]口徑。[股票除權]、[除息]之后,股價隨之產生了變化,但實際成本并沒有變化。如:原來20元的股票,十送十之后為10元,但實際還是相當于20元。從K線圖上看這個價位看似很低,但很可能就是一個歷史高位。(很多人看上面這句話都不知道在說啥,一臉懵逼,沒事,我詳細給你解釋一下:假設原來你有20個錘子,每個錘子1塊錢,突然你會魔法,又變出20個錘子,但是,錘子對于這個世界來說,所有的加起來就值20快,所以,相當于你一個錘子變成0.5塊了,但是實際你的總價值還是20塊)
8,后復權:復權后價格=復權前價格×(1+流通股份變動比例)+[現金紅利]
9,K線圖:就是統計學上的箱線圖,沒有任何區別,通過K線圖可以知道當前時間過的最高價,最低價,成交量等信息;
金融宏觀術語
牛市:市場總體偏好,就是大盤漲,持續時間長的那種時候的市場;
熊市:和上面的相反;
對沖:狹義的講:在兩個同樣標的的不同市場,比如螺紋鋼A期貨和螺紋鋼A股票,一個做多,一個做空,這樣叫對沖,背后的數學物理意義如下
1,假設在未來,股票市場市漲的,那么常識來講,期貨市場應該漲的稍微緩慢一點;所以,如果我股票市場做多(低買高賣)賺到的錢應該大于我期貨市場做空(借貨物,用未來某個價格買入貨物,歸還貨物,如果期貨是漲的,相當于我本來的貨物20元能買到,但是我愚蠢的花了未來的24元買了這些貨物,虧了4元)上述的情況,可以任意組合,你應該回發現對沖對于降低風險的意義;
配股:股票復制,價格不變,一般需要消費者出錢;
高送轉:股數增加,股價變小,總票面價值不變;
拆股:將股票股數復制N倍;
沖擊成本:自己的交易行為對自己的損失;
做空:希望貨物在未來便宜,所以現在借貨物,賣掉,未來用市場價買入,再歸還貨物;
做多:希望低買高賣;
算法和策略
任何可以讓金融衍生產品增值的哲學,在沒有形成系統的數量化之前,都叫策略,在有高級數學表示的時候,我們稱為算法;所以,我們接下來為了方便術語的統一,要明確一點,我們的標的是A股市場;
我們必須明確一點:所有算法和策略的時效性市非常短暫的,這個是常識,應該放棄我們在學自然科學的那套理論,在和人類打交道的時候,隨機性已經大于傳統算法的穩定性要求了;
所有算法和策略在歷史上是可以有限程度的復現的,具體受限于歷史復現不能影響歷史價格,歷史復現不能體現沖擊成本;
算法交易屬于量化投資的一個branch,算法交易并不是超高頻交易;(很多人理解錯誤)
如何體現算法/策略的靠譜程度
引入回測系統的概念
剛才已經明確說了,算法/策略是可以有限的在歷史上復現,那么這個復現需要科學的系統和數據的統一,這就是我們所說的回測系統:
回測系統一句話總結:?在回測當時日期的時候,不能出現任何當時日期之后的數據,而且,回測系統必須保持高復用性能; 在一個handle_bar的時間段內,我們需要一直調度我們的算法,讓他產生在每一個bar的某個時刻,對某個股票的交情況;舉個例子: 回測日期選擇的是2018年1月1號至2020年1月1號,交易頻率選擇的是日級別開盤交易: 那么我們的所有數據就一定是日級別的,對應的邏輯應該調整為日級別的,一個回測系統應該包含:盤前處理,盤中處理,盤后處理;
華為FinanceGo內測版本回測系統的邏輯架構
1,數據層,結構化的所有關于股票的數據,熱壓縮,bcolz;
2,盤前,盤中,盤后的事件驅動框架,也就是注冊機制;也要做到和事實數據的對接;
3,計算層,對portfolio的計算,包括對收益等指標的每日結算;
4,交易日志層,包括每一個bar的交易狀態;
5,仿真層:交易規則,稅務處理原則等
一個策略在回測的表現的意義
可以有限的表現當前策略在歷史上的虛擬表現,一般要除以2,代表踢出產生的所有成本(沉沒成本 沖擊成本 滑點 等)
可以給基金管理人一個真實的導向,排錯,升級策略,制作更完善的風控;
可以作為研究,給整個基金提供完整的收益導向;
策略舉例子
我將解釋一下一個標準策略的demo,用于解釋整個回測系統要做的事情:
[回測系統將在第三節種慢慢講]
from?financego?import?*? __config__?=?{設置回測開始結束,回測標的,回測資金,回測頻率等等} def?before_bar(init): ?????#?處理開盤前的邏輯,比如計算選哪些股票當做股票池 ??????pass def?handle_bar(init): ?????#?處理信號的推理?比如在股票池中選什么股票,買/賣多少,持有多久,怎么做風控; ??????pass def?after_bar(init): ??????#?處理盤后,用于第二天集合競價的時候需要做的事情,或者選擇第二天需要選擇的股票池,在模擬交易中,意義比較大; ??????pass def?schedule_algo(period="2week"): ??????#?每兩周做一個事情,你自己選擇需要處理啥; ??????pass run(__config__) """我們上述帶有bar的函數,在每一個回測頻率都會執行一次"""
量化交易包含什么步驟(哲學武器)
1,量化選股
使用任何算法,去選出你的股票池(可能會交易的股票的列表,注意只是可能)
這個任何算法已經說的很透了;你甚至
2,量化擇時
使用任何算法,用回測當前所在日期之前的所有數據,選擇股票什么時候買,什么時候賣,賣/買多少手,等等;
3,風控
是附加規則,發生什么情況的時候,止損;止盈;
4,回測
使用1,2,3開始回測,形成必要的調試,記住一點:你的調試必須合乎市場邏輯,否則一定是過擬合,市場會教你做人,千萬不要自欺欺人;
4,模擬盤
在回測達到滿意的效果的時候,對虛擬賬戶,采用實時數據進行交易,并通過這個穩定運行幾個周期,稍微調整算法和策略;
5,小盤實盤
在模擬盤穩定的情況下,可以開始用小額資金上實盤交易;并在這個關鍵點發現自己的策略是否能夠合乎自己的市場邏輯;
6,正式發布產品
小盤實盤可以的情況下,經過專家的風險評估,正式發布產品;
幾種算法哲學
1,模式識別,價格的表現由N種因素造成,但是歸根到底都會反應在價格上,因此市場上出現了很多模式識別學派;實驗證明這個是可以的;包括深度學習,機器學習;
2,根因識別,價格是有幾種因素造成的,那么通過特征工程可以找到相對應的因子,所以這個一定是有效果的,因此多因子打分派別誕生了;【google搜索關鍵詞,多因子打分即可獲得一些啟發】
3,價值挖掘,有人認為股票價格是由公司前景決定的,因此會從財務指標的角度,長期持有某些股票;
4,高頻差價學派:只要我速度夠快就可以找到價差,從而達到低買高賣;實驗證明這個也是可以的;
后續我們有非常具體的例子逐一對上述算法做剖析;
人工智能
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。