matlab做量化投資分析,怎麼學?


http://www.matlabsky.com/


一般來說,開發一個完整的量化交易策略主要有幾個步驟:閃現靈感——獲取數據——數據清理——建模分析——回測模型表現——反覆優化與論證——模擬盤檢驗——實盤交易。

所以其實做量化投資分析無非就是圍繞這一主線進行的,所以本質上不過是使用Matlab一步一步實現這整個開發過程,新手一上來不要想一口氣吃成大胖子想一上手就做出成熟穩定的策略,我建議可以先實現一些最基本的、簡單的策略,然後再慢慢做更複雜的。

下面分點說:

1、獲取數據與數據清理

這是個看上去簡單實際上有時會特別噁心的大坑。簡單的時候一般都是有現成的、數據供應商處理好了的數據(或者直接跟IT部門提要求讓他們處理。。),這時候只需要直接調取就可以(xlsread、csvread、h5read及各種read,或者使用database函數訪問資料庫)。但是,有時沒有現成的數據你就只能自己去搜集,這就是個很煩人的過程了,這可能就需要你熟悉爬蟲、正則表達式這類函數及語句(urlread、regexpi、regexp)去網上抓取相關信息了。其實我覺得這個過程對於quant還是挺關鍵的,因為當你有更多不同維度的、別人沒有注意到的信息的時候,這可能就會成為你的策略的獲利點。

然後是數據清理,這也是一個很煩人的坑,因為你拿到的raw data 可能由於數據源的原因會有缺失、異常或者多出一些你不想要的東西,有時你還得去復權股票價格、期貨主力合約換月也是個超煩人的東西。。更不要說期權合約的處理了。雖然很煩人!但是必須要把數據洗乾淨!不然低質量的數據可能會讓你的策略分析是完全錯誤的。數據處理的函數主要就是一些矩陣操作,這就很考驗quant的編程效率了。有的人可能for循環里套for循環跑個N小時,有的人可能就用arrayfun、cellfun幾行十分鐘就能搞定。對數據和矩陣的操作都是matlab的最基本功,這個可得熟練,不然別說量化分析,別的也做不成,畢竟matlab核心就是矩陣。

2、建模分析

這個部分就比較開放了,每個人有自己的演算法,各不相同。有人用技術分析算個指標啥的,有人用HMM的,也有人用deeplearning學一發。這都取決與quant的靈感到哪了。我覺得對於新手來說可以先看看那些券商研報里的模型,先找幾個簡單的練練手,做出一些小結果畫出來讓自己有點小成就感,這樣就更有動力學下去。同時這一部分也是整個策略開發的核心部分,對quant的數學有一定要求,不懂的演算法要結合相關paper再在matlab上一步一步實現(當然大多數常用演算法matlab都有現成的函數,畢竟matlab是一個除了生娃啥都能幹的神奇存在= =...)。

3、回測與優化

這一部分就比較規矩,回測這部分一般不會出現什麼大幺蛾子問題,畢竟沒什麼演算法問題,只是可能效率上也會有差距,大規模回測時有的可能跑幾天幾夜,有的效率高同樣的人物只要幾小時。但是對於剛入門的盆友來說,用個for循環,定義幾個資金、倉位、收益率相關變數寫出來一個粗略的回測框架還是不難的,可以作為一個練手的小項目。

至於優化,這個也是個蠻討厭的東西- -,你要對你的模型里的參數進行考量,是否有提升的空間,優化也講究度,會不會有過擬合的嫌疑之類的,當然這都是下一個階段要考慮的問題,反正當時我最開始剛學matlab做量化的時候跑出一個凈值曲線我都挺有成就感了。。至於後面這些問題都是在各個模塊熟練後在走向下一個台階。

4、模擬盤與實盤

這已經是策略開發的尾聲了。這一部分會用到的功能有時會涉及到第三方的介面。比如國內的話一般是用wind提供的行情介面,包括他們也提供了模擬交易和實盤交易功能(實盤的要額外交錢。。)當然現在matlab也提供了trading toolbox,可以接上IB的介面進行全球範圍內的資產配置。其實我個人不建議把matlab作為直接進行交易的軟體埠,因為相較於C++等語言,matlab還是比較慢的- -,把matlab拿來做分析啥的都沒問題,但是在速度要求較高的交易上來說,還是算了吧- -。。

Tips:

推薦一份資料 《 N分鐘學會MATLAB(60&

還有一本書《 量化投資:以MATLAB為工具 》 也是他的作品,也是相當nice 對量化分析有興趣的看看肯定很有收穫。

初學者多用百度 有啥問題直接百度,80%的問題都有現成的答案。

多琢磨help文檔里的例子。

第一次答,水平有限,有誤之處還請各種大神多指教~也歡迎各路做量化的筒子們一起交流~一起進步~


使用Matlab學習量化的道路大概是這樣的,我拋磚引玉請大神補充。

  • Matlab基礎知識的學習:主要是矩陣這一塊,各種矩陣運算和變形的方法爛熟於心。與數據相關的一些知識也應該了解,比如數據導入導出、正則表達式、圖形等。這一階段的學習主要是看書,關於Matlab基礎知識的書網上N多,大同小異,可以多看基本與量化聯繫比較緊的章節。
  • Matlab中Toolbox的學習:與量化相關的工具箱有統計工具箱、金融工具箱、計量工具箱等,此外與機器學習相關的工具箱也要選擇性的學習一下。這一階段的學習可以做一些小的案例,不一定是與量化投資相關的,與數據科學、數學建模、金融研究相關的小項目都可以做。
  • 使用Matlab做一些簡單的量化工作。比如編寫常用的技術指標,畫一根bars,爬取金融數據,做一個簡單的GUI。這些小東西都可以玩,玩的面盡量廣一點。
  • 使用Matlab對一些經典策略進行研究。這個階段是模仿,主要對擇時和選股中的經典策略進行Matlab編寫。一些券商研報中這些策略都很多,你可以按照他的思路做一下,並且與他的結果做比對。
  • 使用Maltab建立量化研究的框架。這個時候你已經能對單個策略進行編寫了,你需要編寫一個完整的研究框架。這個研究框架包括資料庫、數據介面、回測系統以及API介面。
  • 當你覺得Matlab已經不夠你的量化研究需求時,新的一波學習之路又要開始了。Python、C++等高級語言等待著你的臨幸~~~


量化投資區別於定性投資的鮮明特徵就是模型 ,量化投資分析離不開構建策略模型,描述一下構建策略的基本步驟:

第一、 用公式表達策略

首先有一些交易的思路,不許能夠把它說出來,在紙上變成明確的交易邏輯,有很多人用盤感下單,有些人每次下單的原因都不一樣,每次都可以找出不同的交易進出場決定。但是,如果你是想做程序化交易,就必須要有明確且具體的買賣點操作邏輯,可以被完全量化。

第二、 使用matlab語言寫成策略腳本

交易規則要合乎邏輯,比如只有買進沒有賣出的邏輯就是無法構成一個完整的交易策略。使用matlab按照一些常用的規則不如構造指標,寫入買賣邏輯,進行整合交易策略。這個就可以使用Auto-Trader編寫,寫入代碼就是純matlab代碼,只有一些調用的API。都是純matlab語言,並不難。

第三、 回測回放

編寫好一個策略之後,我們需要拿到歷史上某段時間段,某一指定頻率的測試。這裡有兩個目的:第一個看是否程序與我們一開始的操作邏輯一致;第二個是看這個策略操作的表現如何,這只是進入下一步之前對於策略有一個大致的了解。必須看起來還可以,比如曲線往上行,或者損失並沒有損失非常多的錢,如果回撤非常巨大就要進入分析最大回撤段的原因。這個可以在策略分析模塊有比較詳盡的分析。

第四、 多品種多周期與優化測試

把該策略在多個品種、周期上測試,查看績效表現。採用組合優化選取參數,交叉驗證,分樣本外樣本內檢驗。可以使用各種優化目標進行優化挑選參數。最優化這一部分必須非常小心,容易出現過度擬合的情形,這個是整個策略開發非常重要的一步,一般會採用walk forward 分析,重抽樣技術來做一些策略過擬合檢驗。觀察分析在不同的市場結構裡面策略的表現情況,這一部分後面會有更為詳盡的敘述,當然本人是不建議進行優化操作的。

第五、模擬交易

在決定策略以後,選取的參數是否有過度擬合的嫌疑,就需要拿到實際行情裡面,觀察策略的績效表現。對比模擬交易與回測中的差別,在不同市場行情下表現與回測是否具有一致性。

第六、 實時交易

在眾多繁蕪複雜的測試之後,最後就是要把你最強大的策略開始使用在市場上,然而這個並非容易的事情,因為成功的策略是非常多,但成功的程序化交易策略倒是少之又少,為什麼?心態的問題,你是否相信你自己的策略邏輯。

第七、 評估績效與改進策略

根據實時交易的情況,與回測校驗對比,這部分非常重要,你需要知道你的策略失效條件,根據實盤的反饋進而修復改進策略,不斷的注意改進每個細節,你將不斷提高你的策略水平,接下來你會慢慢找到你最穩定的程序化策略,在簡單與複雜之間找到平衡。如果仍是存在過擬合的問題,根據情況可以放棄該策略,重新再啟程。

另外,打個小廣告,社區策略服務目前提供上百個免費的MATLAB策略源碼下載,地址:策略資源 | DigQuant 專業量化研究社區


一個是工具,一個是技術。沒技術工具有卵用。


找個公司實習,經理告訴你一個idea,給個答辯時間,做不出來或者受不了,自己滾蛋。能堅持下去就能學會


受教了


效果怎樣?


做了2年半程序化,開發了一套適用多品種多周期的趨勢策略,靠自己摸索。tb加matlab開發,很多問題答案網上是找不到的


推薦閱讀:

還有沒有類似傅里葉變換那麼有用的正交變換?
卷積神經網路如何應用在彩色圖像上?
matlab如何讀入混合變數格式的dat文件?
如何實現多維數組的行 / 列按照 index 訪問都得到連續內存?
matlab有類似c語言struct又能用tabulate處理的類型嗎?

TAG:MATLAB | 投資分析 | 量化交易 |