量化投資與數據:模型未動,數據先行

2022-01-24 私募工場

第十屆量化投資國際峰會報名須知

量化投資,數據是基礎

量化投資的理念現在越來越被人熟知,不論是在學校還是在職場,對量化投資感興趣,想要一試身手,甚至是將Quant定為職業目標的人也越來越多。不過許多朋友現在還只是臨時搜羅有限的數據,做一些零星的研究、測試和計算。與其這樣沒有明確目標地小打小鬧,不如著手建立一個比較完善的「量化投資研究系統」,下面我將和朋友們分享一下我在這方面嘗試的心得。

中國有句古話叫做「兵馬未動,糧草先行」,對於量化投資研究而言應該改為「模型未動,數據先行」,高質量的數據是出色研究的基礎。需求決定功能,我們要做哪方面的量化投資研究,決定了我們需要哪些數據。

我所理解的量化投資研究大致包括3塊內容:

學術化的研究工作,例如金融時間序列分析,這一塊研究主要集中在各種金融產品的交易數據上,例如股票、期貨、期權的價格,基金淨值等等;

構建交易策略或投資組合,這一塊研究需要交易數據、宏觀經濟指標和公司財務數據等等;

策略回測,這一塊研究需要大量歷史交易數據,用來測試評估交易策略和投資組合。

「天下沒有免費的午餐」,為了獲得數據,要麼付出金錢成本,購買數據終端(例如Wind終端);要麼付出時間成本,自己動手搭建維護一個金融資料庫。如果沒有機會擺弄萬得、彭博,還是毛主席那句話——「自己動手,豐衣足食」。

資訊時代,最大的數據源就是網際網路,而且在絕大部分情況下,網際網路可以提供公開免費的數據。所以我們要搭建的資料庫實際上是依賴「網絡爬蟲」獲取網際網路上的數據。不過在討論如何獲取數據之前,為了確保將來的工作簡單高效,先要「約法三章」:

儘量以下載文件,而不是抓取網頁內容的方式獲得數據;

儘量減少抓取網頁的次數,換言之,一張網頁上的數據要儘可能的多;

儘量抓取靜態網頁內容,而不是動態網頁。(有一個簡單的規則區別靜態和動態網頁,如果網頁內容變化之後,地址欄裡的URL連結跟著變化,就是靜態網頁,反之則是動態的。)

尋找金融數據源

廢話不多說,下面正式討論如建立自己的金融資料庫(目前只限於股票和基金數據)。

首先來到上交所和深交所的網站,目的是找到股票代碼和指數代碼列表。深交所以文件下載的方式提供股票和指數代碼(業界良心),上交所則是以網頁形式提供。天天基金網以網頁的形式提供了基金代碼列表(網址http://www.1234567.com.cn/allfund.html)。

基金代碼(天天基金網)

接下來看股票和指數的交易數據,要想獲得這些數據,一個最自然的想法就是到主流門戶網站上去找。事實上網易、新浪、和訊和東方財富等門戶網站都以網頁的形式提供每日交易數據。不過網易這一次成為了業界良心,網易提供數據下載服務,可以下載csv文件獲得股票和指數的歷史交易數據,以及股票最近一周的高頻交易數據。網易提供的數據甚至包括除權調整過的昨收數據(媽媽再也不用擔心我計算收益率了,真是業界良心啊)。

歷史交易數據(平安銀行)

成交明細(平安銀行)

和交易相關的另一種重要數據是「復權因子」,可惜提供復權因子數據的網站並不多,新浪這一次成為了業界良心,新浪以靜態網頁的形式提供每日的復權因子。

復權因子(平安銀行)

基金淨值數據,和股票跟指數一樣,門戶網站大多以網頁的形式提供歷史淨值數據,不過和訊這一次做了業界良心,和訊在基金的歷史淨值網頁上展示了該基金所有的歷史淨值數據。

基金淨值(華夏成長)

一些基本資料層面的數據,例如上市公司的基本資料,基金的基本資料等,對於這些數據,網站之間的大同小異區別不大。

最後看上市公司的財務數據,有些類型的量化投資特別需要研究公司財務數據,尤其是量化選股,需要大量財務數據構造因子,用來對股票估值和預測未來收益率。不過對比多家網站之後,不幸地發現不同網站提供的財務數據格式不盡相同,數據內容也是有出入。這一部分數據的搜集比想像的要複雜得多,將來會專門寫一篇文章討論這個問題,暫時擱置一下。

開始搭建金融資料庫

通過上面的文章,數據源已經基本確定了,接下來就要「修渠引水,匯入水庫」。水庫的話,就選擇最常用的資料庫MySQL;水渠的話,這裡用R語言。

前面講過了,整個資料庫依賴網絡爬蟲獲得數據,所以修水渠之前要先掌握下面幾個方面的基本知識:

R的語法,以及如何使用RCurl、XML、xml2等R包設計爬蟲;

網頁的基本結構,以及如何利用FireFox瀏覽器的FireBug插件或Chrome瀏覽器研究網頁結構;

正則表達式;

XPath語法,以及使用XPath提取html文件中的特定節點。

看起來需要很多的知識準備,不過以我個人的經驗,每個方面只要掌握最基本的知識就可以利用R做出一個靠譜的爬蟲。如果想要集中時間系統化的學習上述知識,這裡推薦兩本書《Automated Data Collection with R》、《XML and Web Technologies for Data Sciences with R》和一篇網絡教程《55分鐘學會正則表達式》。

接下來用一個實例演示如何獲得數據。

首先,到交易所網站手工收集整理A股的股票代碼和指數代碼列表,分別保存在文件SH.A.list.txt、SH.IDX.list.txt、SS.A.list.txt、SS.IDX.list.txt中。用R函數readLines讀取稱為相應的字符串向量,接著構造「市場代碼向量」用來標識股票和指數對應的市場,滬市記為0深市記為1,將這些向量組合成數據框(data.frame,R中常用的數據結構,類似excel表格)A.list和IDX.list。

第二步,找到包含所需信息的網頁,解析網頁連結的模式。以平安銀行為例,現在想要獲得股票的首次上市日。網易平安銀行的網頁連結是http://quotes.money.163.com/1000001.html,1000001中開頭的1是市場代碼,000001是股票代碼。在Chrome中打開網頁,按F12打開網頁分析工具,找到「首次上市」節點,右鍵複製XPath,即「/html/body/div[2]/div[22]/div[2]/p[9]」。

在R中運行下面的語句:

# 加載xml2和stringr包

library(xml2)

library(stringr)

# 連結

url <- "http://quotes.money.163.com/1000001.html"

# 讀取網頁

html <- read_html(url)

# XPath

path <- "/html/body/div[2]/div[22]/div[2]/p[9]"

# 找到「首次上市」節點

date <- xml_find_all(html, xpath = path)

# 轉化成文本

date <- xml_text(date)

date

# 如果亂碼,修改編碼

Encoding(date) <- "UTF-8"

date

# 用正則表達式提取日期

date <- str_extract(date,                    "[0-9]{4}-[0-9]{2}-[0-9]{2}")

date

最後得到date=」1991-04-03」,正是想要的首次上市日期。

如果是下載文件的話,先要通過瀏覽器獲得下載地址,例如

其中藍色的是市場代碼,紅色的是股票代碼,綠色的是日期,紫色的是數據項。

R中的download.file函數可以用於下載文件,或是藉助RCurl中的getBinaryURL函數,並配合使用writeBin函數。在R中運行下面的語句:

url <- "http://quotes.money.163.com/service/chddata.html?code=1000001&start=19910403&end=20150629&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;TURNOVER;VOTURNOVER;VATURNOVER;TCAP;MCAP"

# 方法一

download.file(url, destfile = "000001.csv")

# 方法二

file <- getBinaryURL(url)

writeBin(file, con = "000001.csv")

就可以下載平安銀行的歷史交易數據。

在成功獲得數據,並保存到若干csv、txt文件之後,最後一步就是導入資料庫MySQL。藉助R包RMySQL,可以實現R和MySQL的連接,在R環境中直接操作MySQL資料庫。

# 載入RMySQL包

library(RMySQL)

# 建立資料庫連接

conn <- dbConnect(MySQL(),                  dbname = "資料庫名",                  username = "用戶名",                  password = "密碼")

# 啟動非嚴格模式

dbSendQuery(conn, "SET @@sql_mode=ANSI;")

# win7環境下如果漢字亂碼,就運行這條命令

dbSendQuery(conn, "SET NAMES GBK")

將文件中的數據導入資料庫可以使用下面的R命令:

sql <- "load data infile 『文件名』

into table 表名

character set GBK

fields terminated by ','

lines terminated by '\r\n';"

dbSendQuery(conn, sql)

至此,金融資料庫從無到有。未來資料庫的維護工作可以安排在周末,利用一個下午的時間,運行R程序獲取這一周新增的數據,並導入MySQL。在實際操作中,建庫和維護會遇到很多瑣碎的細節問題,比如說網頁編碼、股票退市、新發股票、網站出現故障、表的設計等等,這裡不能展開來講,只能在動手的過程中自己摸索,具體問題具體分析具體解決。

【私募工場平臺介紹】

私募工場是目前國內最具有凝聚力的投顧培養平臺,堅持以資產配置為核心投資理念,開展覆蓋量化投資及對衝基金領域的權威培訓、FOF/MOM業務,目前已吸引上萬家優秀私募及數百家金融孵化機構入駐。

 

【「阿基米德」:投顧入駐計劃】

私募工場聯合各大期貨公司、證券公司、FOF專業管理機構,為優秀私募優先提供充足資金(優先或管理型),為有潛力私募提供產品孵化、場地支持、股權融資等服務,如果您是一家私募公司,不論是股票型還是期貨型,不論是量化型還是主觀型,不論是套利型還是對衝型.,請點擊公眾號底部菜單:私募平臺/投顧入駐或者直接聯繫微信15034081448加入私募工場投顧庫。

 

【「阿基米德」:資方入駐計劃】

如果您是劣後投資方、自帶劣後投顧、企業資金方,或者是能提供優先資金的銀行、FOF、信託、期貨公司及券商……,請點擊公眾號底部菜單:私募平臺/資金方入駐或者直接聯繫微信15034081448加入私募工場資方庫。

 

【「阿基米德」:保殼借殼】

不論您是急需保殼,還是期望借出已有的私募殼,均可以點擊公眾號底部菜單:私募平臺/殼資源交換或者直接聯繫微信15034081448諮詢。

 

【Quant求職】

私募工場立足對衝基金、量化投資專業領域,已有上萬家頂級優秀私募入駐,更有數百家專注量化研究的私募加盟,如果您在量化投研方面有自己的特色和優勢,請點擊公眾號底部菜單:私募平臺/Quant求職或者按照「姓名+專業+期望的職位」直接發給15034081448(微信),同時將個人簡歷發至郵箱506743560@qq.com。

【私募求才】

如果您對量化策略研究及交易人才,或者其他人才有需求,請點擊公眾號底部菜單:私募平臺/私募求才或者直接聯繫15034081448留下您的需求信息。

【私募工場社群系列】

私募工場專業投研社群系列

私募工場業務交流社群系列

私募工場專家顧問群

私募工場綜合交流2000人付費大群

私募工場FOF/MOM研究

山西量化投資學會群

私募工場市場熱點交流

私募工場業務交流群

私募工場私募合規討論

私募工場期權線上培訓

私募工場期權量化群

私募工場期權線下培訓

私募工場套利量化群

私募工場機構群:期貨

私募工場資產組合群

私募工場機構群:券商

私募工場風險管理群

私募工場基金銷售群

私募工場高頻交易群

私募工場機構群:私募

私募工場技術指標量化群

私募工場技術研發群

私募工場統計建模量化群

私募工場私募運營實務培訓群

私募工場高級量化創新交流群

私募工場線上活動會務組

私募工場大宗商品投研群

私募工場論壇會務組

私募工場大數據專題群

私募工場京滬深寬客沙龍

私募工場德州撲克與博弈論交流群

私募工場媒體交流群

私募工場社群歡迎您的加入,請在公眾號後臺對話框提交您的名片,並文字發送「姓名+微信號+機構+職位」,稍後會有客服專員邀請您加入相應社群,由於申請者眾多,邀請會有延遲,請您靜待。由於公眾號後臺留言保存時間僅有48小時,所以請您務必留下您的微信號,並嚴格按照格式發送相關信息,私募工場會竭誠為您提供更優質更專業的服務。


內容合作:果果(15034081448)

商務合作:果果(15034081448)

投稿郵箱:506743560@qq.com(註明投稿)

私募工場歷史文章(回復後面括弧中內容獲取系列全文)

精選精華文章(精華) | 《私募相關法規》系列(fg) | 金融模型·量化投資系列(lhtz) | 算法理論&代碼(sfdm) | SVM系列(svm) | 用R語言做數據分析(r) | 金融時間序列連載(jrsjxl) | 機器學習系列連載(jqxx) | 人工智慧系列(AI)| 傅立葉分析系列連載(fly) | 《宏觀經濟研究》系列(hgyj) | 《微觀經濟學》系列(wgjj) | 《大數據與金融業》資訊系列(dsj) | 國家戰略權威評論(zlpl) | 世紀大救市觀察系列(sjdjs) | 賭博與投資系列(dbytz) | 投資時鐘系列(tzsz) | 期貨講堂(qhjt) | 套利系列(套利系列) | 各交易所程序化交易細則徵求意見稿(cxhjyxz) | 索羅斯公開課系列(sls) | 量化投資付費問答(自動問答;自動提問;付費提問) | FOF/MOM系列(FOF) | 國家隊的前世今生(國家隊) | 美國金融工程專業申請指南(美國金融工程專業申請)

點擊「閱讀原文」進入可查看私募工場歷史公開課

相關焦點

  • 《量化投資:以MATLAB為工具》書籍源碼&數據下載
    基礎篇部分通過Q&A的方式介紹了MATLAB的主要功能、基本命令、數據處理等內容,使讀者對MATLAB有基本的了解。高級篇部分分為14章,包括MATLAB處理優化問題和數據交互、繪製交易圖形、構建行情軟體和交易模型等內容,通過豐富實例和圖形幫助讀者理解和運用MATLAB作為量化投資的工具。
  • 一文看懂量化投資經典,隱馬爾科夫模型
    伴隨2010年滬深300股指期貨的問世,中國量化投資時代揭開帷幕,並在三年後實現快速增長。2015年股指期貨因政策方面的限制,流動性驟降,使得量化對衝策略的基礎工具受到動搖。同時監管部門為防範程序化交易對於市場波動的放大,於2015年停止了私募、信託等產品接入券商交易埠。
  • 華訊投資:基金收費推薦股票?大數據量化選股基金怎麼樣?
    華訊投資發現,隨著2014年廣發基金與百度公司聯合發行國內首隻將網際網路基因融入投資實踐中的大數據基金——百發100指數基金以後,不少投資者對於基金收費以及基金如何選擇大數據推薦股票產生濃厚的興趣,華訊投資將為大家八一八。
  • python量化投資(一):量化投資的基本流程
    這篇文章是寫給正在成長的自己以及正走在量化投資這條路上的知友,希望大家都能變得更好。
  • 金絲路量化科技研究院乾貨合集 量化投資全解析
    量化投資的定義 對量化投資的定義是:量化投資是一種系統化方法,它利用現代金融,計算機,數學,以及其他相關行業的知識和方法,包括行為學、心理學等,把投資理念,科學理論和實際數據量化為客觀的數理模型,使用計算機技術完成全部或部分的投資。
  • 什麼是數據分析的漏鬥模型?
    本文主要談談漏鬥模型的本質、漏鬥模型案例分析以及如何繪製漏鬥模型。漏鬥模型關於漏鬥模型,我認為本質是分解和量化。為什麼這麼說,這裡以營銷漏鬥模型舉慄。百科給出的解釋:營銷漏鬥模型指的是營銷過程中,將非潛在客戶逐步變為客戶的轉化量化模型。營銷漏鬥模型的價值在於量化了營銷過程各個環節的效率,幫助找到薄弱環節。
  • 體育贊助的新時代:數據驅動、高效、可量化投資
    這並不意味著整個行業形態會是一成不變的,事實上,數據和分析、創新、衡量、內容營銷以及創造力已經被認為是贊助行業未來發展最為重要的五項技能。ESA主席安迪·韋斯特萊克(Andy Westlake)認為,贊助商仍然是行業中最為積極的部分,有跡象表明,那些先進的品牌將繼續在贊助領域進行投資。
  • FOF投資的量化分析:資產配置模型
    本文介紹了資產配置中最常用的三個量化模型:均值方差模型、Black-Litterman模型和風險平價模型。我們將具體介紹三個模型的配置思想、輸入的參數、輸出的結果、優缺點、適用條件、實現的算法。  在科學、合理地預測出各類資產的收益、風險和資產間的相關性後,我們可以運用多種量化模型得出最終的資產配置比例。
  • 融合大數據,FollowQuant開創量化交易新時代
    Followme作為國內持續追求創新的交易社區,為了打造基於用戶數據的量化策略開發平臺,不惜耗資千萬,潛心鑽研700日,深入挖掘和分析社區上億交易數據,打造了一個震撼行業的創新性產品 -- FollowQuant。作為全球大數據智能量化交易解決方案,FollowQuant的誕生,是外匯交易史上一個重要的裡程碑,將開創一個全新的量化交易時代。
  • 到底什麼是多因子量化投資?
    同樣,量化投資的核心是經濟/金融模型,數學也只是工具。用鐵鏟子去挖金子,能否挖到金子不確定,但鐵鏟肯定不會自動變成金子。   愛因斯坦強大之處在於其思想,數學則是其建模工具。同樣,量化投資的核心是經濟/金融模型,數學也只是工具。用鐵鏟子去挖金子,能否挖到金子不確定,但鐵鏟肯定不會自動變成金子。
  • 量化數據解讀國家救市!
    量化數據解讀國家救市!從6月30日管理層出利好消息開始到目前為止,雖然從股指的角度來看,市場繼續出現大幅震蕩的走勢。
  • 谷歌發布最新元學習框架「DVRL」,用強化學習量化模型中每個數據點...
    由於這些場景的普遍存在,準確量化訓練樣本的值對於提高真實數據集上的模型性能具有很大的潛力。 例如,什麼類型的附加數據最有利,並可用於更有效地構建大規模的訓練數據集,或者使用標籤作為關鍵字進行網絡搜索,過濾掉不太有價值的數據。 量化數據的價值 對於給定的機器學習模型,並不是所有的數據都是相等的。
  • 微軟亞洲研究院發布「微礦Qlib」:AI量化投資開源平臺
    【環球網科技綜合報導】12月11日報導,近日,微軟亞洲研究院正式發布了業內首個 AI 量化投資開源平臺「微礦 Qlib」。據了解,與傳統量化投資工具不同,Qlib 涵蓋了量化投資的全過程,而且從底層構造開始就專為 AI 而打造。從數據處理到計算力支撐,再到模型的訓練與驗證,都為基於 AI 的量化投資提供了全方位的框架支持。
  • 量化,數據與公式.
    一切都要以數據說話,公式說話。倘若不加以量化,可能就會不夠精確和嚴謹,如果能夠量化,那麼會最大程度的客觀。比如某個商品的估值問題,倘若搜集到各種需要的數據,有估值公式,計算一下當下和未來的該商品的價值,再對比一下現在的市場價格,就很清楚市場對該商品的估值高低,是低估還是高估了。
  • 數據建模中分類與預測模型
    因此,利用量化平臺對多元化的數據進行提取,按照自身的分析模式搭建合理化的分析框架,自動化的得到針對基本面、技術面的分析結果的分析方法也開始逐漸火熱起來,這個結果根據需求既可以是定量的,也可以是定性的,目前這種量化建模的方式也已經在眾多私募、券商等中應用已久,但是對於大多數個體投資者而言,還是一個十分陌生的領域。
  • 原油量化研究系列:基於「繁微數據」的原油多周期擇時預測
    市場極端環境衝擊量化模型結果不能完全代表未來1原油基本面量化的方法:從基本面數據到預測模型原油價格無論對於產業鏈企業還是金融投資機構都是的焦點問題,本文將建立基本面量化模型對原油、汽油等油類的價格進行預測。原油產業鏈遍及全球,產業鏈數據涉及產油、煉油、運輸、庫存、消費多個環節,此外原油作為重要的大宗商品期貨還產生了大量相關的衍生數據,Brent原油期貨合約和WTI原油期貨合約是全球原油價格的重要標杆。
  • 工行河南省分行成功舉辦量化投資論壇 讓個人投資更好使用「量化...
    為進一步提升私人銀行客戶服務,提高客戶對量化投資的了解程度,11月18日,工商銀行河南省分行採取「現場 直播」的方式,成功舉辦「美好偕行智享無限」——工銀私人銀行量化投資論壇活動。量化投資近年來在國內方興未艾,受到越來越多投資者的關注,但是從誕生之日起,量化投資就以高深的數學模型為基礎,披上了神秘的面紗,使很多個人投資者望而卻步。本次量化投資論壇活動秉持開放、專業、創新的理念,邀請了工銀理財、工銀瑞投、中金財富、百瑞信託量化投資領域的知名專家參與探討,讓更多的個人投資者全面了解量化投資。
  • 區塊鏈數字貨幣投資智能量化分析引擎「QUBE」介紹
    其核心是對日均 5.6017T(目前)海量數據進行處理,包括區塊鏈數據、各類交易平臺數據,網絡信息輿情數據等,通過人工智慧技術體系下的一系列算法模型訓練,最終對數字貨幣市場各類博弈行為進行模型預測和數據量化。
  • 量加APP,打造簡易好懂的全民量化投資
    近年來,量化投資在國內逐漸興起。  量化投資的厲害之處,就在於可以克服人性的弱點,如貪婪、恐懼、僥倖心理,也可以克服認知偏差,使每一個決策都有理有據。同時因為它具備強大的信息處理能力,可以幫你捕捉更多的投資機會。  不論你是否了解,量化投資在二級市場裡早就不是新名詞了。非但如此,「量化」這個詞的出現總是和一些傳說捆綁在一起的。
  • 「量化自我」——從數據化個體的角度重新審視「大數據」
    交易數據、金融財務數據、稅務與社保數據   存款、股票、資產、投資、信用卡記錄、電子消費記錄、納稅與社保記錄