A. 做量化交易選擇什麼語言好呢
量化交易,就是把人能夠識別的信息變成數字,輸入給計算機程序處理,輔助或者代替人類的思考和交易決策。
初學者碰到的第一個問題就是工具的選擇。首先大部分交易員本來不會寫程序,選擇任何一個語言進行策略開發,都有不小的學習成本。更重要的是,選擇了一門語言,接下來開發環境、人員招聘、數據介面與平台、甚至同類人群之間的交流、遇到問題後的支持,都跟著被「套牢」。所以從一開始就必須慎重對待。
先給出答案:對於還沒有確定一套固定量化環境的,建議用Python。
量化交易員面臨的大致選擇有:C/C++/java/C#/R/Matlab/excel等。我們從以下幾個方面考慮簡單做個對比。
注意:這里假設你團隊規模在50人以下。
1 學習成本和應用的廣泛性
C、C++的特點是速度最快,但要想用好,必須對計算機底層架構、編譯器等等有較好的理解,這是非計算機專業的人很難做到的,對於做量化交易來說更是沒有必要。
Java本來是SUN的商業產品,有學習成本和體系的限制,也不適合。
Excel面對GB級別的數據無能為力,這里直接排除。
Python、R和Matlab學起來都簡單,上手也快,可以說是「一周學會編程」。但R和Matlab一般只用來做數據處理,而Python作為一門強大的語言,可以做任何事,比如隨時寫個爬蟲爬點數據,隨時寫個網頁什麼的,更何況還要面對處理實時行情的復雜情況。
2 開始做量化分析後,哪個用起來碰到問題最少,最方便省事?
用歷史數據的回測舉例。假設我們有2014年所有股票的全年日線,現在我們想看看600001的全年前10個最高股價出現在什麼時候。python世界有個強大的pandas庫,所以一句話就解決問題:
dailybar[dailybar [『code』]==『600001』].sort_values([『close』].head(10)
R/Mathlab等科學語言也可以做到。
C/C++沒有完備的第三方庫。如果為了做大量的計算,要自己實現、維護、優化相應的底層演算法,是一件多麼頭疼的事。
Python從一開始就是開源的,有各種第三方的庫可以現成使用。這些底層功能庫讓程序員省去了「造輪子」的時間,讓我們可以集中精力做真正的策略開發工作。
3 現在我們更進一步,要做實時行情分析和決策
以A股的入門級L1數據為例,每3秒要確保處理完3000條快照數據,並完成相應的計算甚至下單。這樣的場景,C和C++倒是夠快了。所以行情軟體比如大智慧、同花順等客戶端都是使用高效率的語言做的,但像客戶端那樣的開發量,絕大部分量化交易機構沒能力也沒必要去做吧。
python的速度足夠對付一般的實時行情分析了。其底層是C實現的,加上很多第三方的C也是C實現,盡管其計算速度比不上原生C程序,但對我們來說是足夠啦。
4 quant離職了,他的研究成果怎麼辦
Python是使用人群最多、社區最活躍的語言之一,也是最受quant歡迎的語言之一。如果你是老闆,你能更容易地招聘到優秀人材,享受到python社區帶來的便利。
附幾個量化中常用的python庫:
- Pandas:
天生為處理金融數據而開發的庫。幾乎所有的主流數據介面都支持Pandas。Python量化必備。
- Numpy:
科學計算包,向量和矩陣處理超級方便
- SciPy:
開源演算法和數學工具包,與Matlab和Scilab等類似
- Matplotlib:
Python的數據畫圖包,用來繪制出各類豐富的圖形和報表。
PS: Python也是機器學習領域被使用最多的語言之一。像tensorflow、scikit-learn、Theano等等對python都有極好的支持。
B. 怎麼學習python量化交易
下面教你八步寫個量化交易策略——單股票均線策略
1 確定策略內容與框架
若昨日收盤價高出過去20日平均價今天開盤買入股票
若昨日收盤價低於過去20日平均價今天開盤賣出股票
只操作一隻股票,很簡單對吧,但怎麼用代碼說給計算機聽呢?
想想人是怎麼操作的,應該包括這樣兩個部分
既然是單股票策略,事先決定好交易哪一個股票。
每天看看昨日收盤價是否高出過去20日平均價,是的話開盤就買入,不是開盤就賣出。每天都這么做,循環下去。
對應代碼也是這兩個部分
definitialize(context):
用來寫最開始要做什麼的地方
defhandle_data(context,data):
用來寫每天循環要做什麼的地方
2 初始化
我們要寫設置要交易的股票的代碼,比如 兔寶寶(002043)
definitialize(context):
g.security='002043.XSHE'#存入兔寶寶的股票代碼
3 獲取收盤價與均價
首先,獲取昨日股票的收盤價
#用法:變數=data[股票代碼].close
last_price=data[g.security].close#取得最近日收盤價,命名為last_price
然後,獲取近二十日股票收盤價的平均價
#用法:變數=data[股票代碼].mavg(天數,『close』)
#獲取近二十日股票收盤價的平均價,命名為average_price
average_price=data[g.security].mavg(20,'close')
4 判斷是否買賣
數據都獲取完,該做買賣判斷了
#如果昨日收盤價高出二十日平均價,則買入,否則賣出
iflast_price>average_price:
買入
eliflast_price<average_price:
賣出
問題來了,現在該寫買賣下單了,但是拿多少錢去買我們還沒有告訴計算機,所以每天還要獲取賬戶里現金量。
#用法:變數=context.portfolio.cash
cash=context.portfolio.cash#取得當前的現金量,命名為cash
5 買入賣出
#用法:order_value(要買入股票股票的股票代碼,要多少錢去買)
order_value(g.security,cash)#用當前所有資金買入股票
#用法:order_target(要買賣股票的股票代碼,目標持倉金額)
order_target(g.security,0)#將股票倉位調整到0,即全賣出
6 策略代碼寫完,進行回測
把買入賣出的代碼寫好,策略就寫完了,如下
definitialize(context):#初始化
g.security='002043.XSHE'#股票名:兔寶寶
defhandle_data(context,data):#每日循環
last_price=data[g.security].close#取得最近日收盤價
#取得過去二十天的平均價格
average_price=data[g.security].mavg(20,'close')
cash=context.portfolio.cash#取得當前的現金
#如果昨日收盤價高出二十日平均價,則買入,否則賣出。
iflast_price>average_price:
order_value(g.security,cash)#用當前所有資金買入股票
eliflast_price<average_price:
order_target(g.security,0)#將股票倉位調整到0,即全賣出
現在,在策略回測界面右上部,設置回測時間從20140101到20160601,設置初始資金100000,設置回測頻率,然後點擊運行回測。
7 建立模擬交易,使策略和行情實時連接自動運行
策略寫好,回測完成,點擊回測結果界面(如上圖)右上部紅色模擬交易按鈕,新建模擬交易如下圖。 寫好交易名稱,設置初始資金,數據頻率,此處是每天,設置好後點提交。
8 開啟微信通知,接收交易信號
點擊聚寬導航欄我的交易,可以看到創建的模擬交易,如下圖。 點擊右邊的微信通知開關,將OFF調到ON,按照指示掃描二維碼,綁定微信,就能微信接收交易信號了。
C. 量化投資用什麼編程語言研發策略好呢
么以下我就以程序語言的角度來回答
當然如果已經會了某些語言,那你可以使用熟悉的語言去找網上的學習資源會比較快
如果沒有特別熟悉的語言,或者是願意多學一種非常好用的語言
我的建議是學習Python
我從以下幾點來分別說明
平台資源
國內外使用Python做雲端回測以及運算的免費平台相當的多,例如有 寬客在線,發明者量化,優礦, 等等不勝枚舉,可以使用平台的支持以及社區的互相幫助來學習
容易學習
綜合以上所說,"目前的環境底下" 我推薦Python.(推薦直接下載 Anaconda的集成開發環境)
D. 作為Python程序員 怎樣入門量化交易
量化交易大多用在股票交易上,量化是指將某隻股票或者摸個行業的數據進行量化,在更具各家機構自己的量化公式進行選擇,量化交易只是選擇,並不涉及交易,程序化交易也是一種量化交易,但是是更具已有的數據進行,比如各種行情指標,MACD KDJ等,無法像量化交易那樣把能涉及到的所有數據進行量化,程序化交易更側重交易的自動進行,沒有認為干預,且模型編寫簡單,個人用戶也可以進行
E. 想學量化交易的C++編程,有沒有比較好的參考書可看
下面這個可以參考一下,具體還要看個人的情況。
我覺得應該根據你的工作需要或者說你的發展方向而定。基本上兩大類吧:C/C++和Java。比如,如果你要做企業級應用的你應該學習Java和C#;如果你想做嵌入式,那麼應該學好C語言;其他情況下,在你不知道要做什麼之前你可以選擇學習C/C++。學會這兩大類中的一類,對於你學習其他語言都將是比較輕松,包括腳本語言,動態語言„„呵呵,這里想就自己的學習經歷和情況給大家一個建議,僅供參考。
1、我的入門是從學習C語言開始的(其實課程是C++),這是我們學校的公共課,我上課比較認真(雖然老師講得很差,而且一段時間後,我就發現自己的基礎掌握比她好,當然理解深度沒她好),因此,我認為對於完全沒有基礎的人而言,聽別人講比較容易入門。當時的教材是學校自己編的,挺爛的。
建議一(以C/C++為例),對於剛想進入編程的人(就是從來都沒有接觸過編程的人),最好是聽課的方式(自己看的話估計要很慢,而且很痛苦),可以找視頻或者培訓等。C語言推薦入門教材:譚浩強的C語言,最新版是第三版,不過第二版應該也可以了(藍色的)。說明一下:堅決不同意直接看K&R的《The C programming language》,這本書絕對不是初學者可以看懂的,裡面講語法的並不多,語法都是合在程序裡面講。不過這本書非常好,入門以後一定要看的一本書。
當然可以從C++直接入門,C++之父強烈推薦從C++直接入手。C++推薦入門教材:錢能的C++(紅色的,清華大學出版),這本書第一版不是ISO C++,不過比較經典,作者現在也出了第二版了,第二版好像不是太好。國外的最好的入門教材據說是:《Acclerated C++》作者是Koenig和Moo夫婦,非常厲害。他們的著作還有《c陷阱與缺陷》《c++沉思錄》。《Acclerated C++》這本入門的書我沒有看過,我覺得還是先找本國內的書好好看,看的差不多了,國外的經典書籍隨便看就會覺得很有味道,否則你可能會很受打擊。入門的書至少要看兩三遍(要徹底理解哦 ):)。如果是C++,我建議後面類的部分至少要理解三到五遍。說明一下,c++模板的部分可以先不用看,如果有興趣的話,等把c++學的差不多了,我覺得可以把模板、STL、泛型編程結合起來學習,這個又是一個很大的工作量了,又得下很大的功夫。所以說,C++博大精深啊。
建議二、學習過程中要結合簡單的演算法,像冒泡還有類似c語言程序百例這樣的小例子做做;更進一步應該做點大一點的項目,最好是控制台程序。或者你已經著手學習win32、MFC或linux,你也可以結合平台做點小的項目。
2、第一階段是最苦的,接下來相對就知道應該怎麼去學習了。這時候假設你已經有了扎實的c++基礎。這是你可以選擇也應該選擇發展方向了,做企業級應用,還是系統開發,嵌入式設計或者游戲開發„„ 那時我其實並沒有考慮那麼多,因為我不是學計算機的,因此我就把參加一些計算機之類的考試當作學習目標。我當時其實C++語言基礎已經很不錯了,但是上機實踐很少(那時我沒有電腦),因此參加省計算機二級,全國計算機三級和全國計算機四級考試,結果上機都沒有通過。我很郁悶,二級的時候是我不知道怎麼樣進那個DOS界面把題目調出來,三級的時候是很快就編好了,也通過運行了,可是成績出來卻不及格,四級的時候是編好了,可能是我那題目比較難,好像用了兩次循環,結果那破機器竟然承受不了。後來一亂就毀了(當然主要是上機太少了)。不過我那些上機都沒有去補考。二級和三級的時候是自恃水平已經遠遠超過考試要求了,四級的時候則因為自己已經通過高級程序員考試,覺得補考上機好像沒必要。(我高程和四級都是在2003年考的)。
建議三:定位學習方向,並好好學習計算機基礎知識。在你還不確定學習方向,或者你還在大學本科期間,那麼我認為應該先把計算機的基礎知識好好學習一下。我認為計算機必學的基礎課程而且要精學——首先是數據結構,其次是操作系統、軟體工程,資料庫。這四門課不管你將來想從事哪個方向的基本上都會用到。當然,有時間的話,其他基礎課都是應該掌握的,離散數學、組成原理、體系結構、網路、編譯原理甚至跨學科的。方向是很重要的,因為知識其實是無限的,一個小小的領域就夠你研究很久了。本科生可能還沒有什麼方向的感覺,但是到了研究生你一定要清楚自己到底想要做什麼,要往哪個方面發展,不要盲目學,瞎學亂學,否則最後可能看似什麼都會,其實什麼都不會。
我也曾經學習過Java一段時間,這篇文章既然是談編程語言的入門學習,我也簡單說一說。因為有了比較C++扎實的語言基礎,所以Java學起來比較輕松。我先找了國內一本薄薄的教材很快看了一遍(幾乎都理解,但是只看了一遍),空閑的時間配合清華張孝詳老師的java視頻。以後其實才算我真正要開始入門JAVA的學習,我用了是《core java》中文第六版(本來想用候捷翻譯的第二版的《Thinking in Java》,發現被同學弄丟了),這本書我差不多用了20天才把裡面的知識都搞懂,當然包括程序風格的模擬,最重要的時我把有關GUI編程的那三章裡面的程序例子幾乎可以默寫出來(當然,那是因為我理解了,其實這樣就變成了我的知識了),裡面的API我也記得差不多了。(說明:Java裡面的GUI編程沒什麼用處了,建議大家先跳過,GUI不是Java的長處,如果以後需要的話再查手冊或者再記憶學習)。
其實學習了C++以後,學習Java是比較容易了,但是建議不要兩種都學啦,他們的用途是不一樣的,你應該熟悉其中一種,更重要的是熟悉其應用領域所需要的專業知識甚至平台,以及使用他們的企業,有創業計劃的還應該考慮一下他們的應用領域,最重要的是思考他們的潛在的應用領域。
對於初級的學習就講到這里,接下去的學習其實都是高級部分,先不介紹了,因為:一、我自己都還沒有學懂,這里亂吹會誤人子弟。 二、高級東西的學習很多,有很多選擇,又需要很多繁瑣的知識,可能也一下子沒辦法講清楚。
F. 用python做量化交易要學多久
5個月。
python憑借其突出的語言優勢與特性,已經融入到各行各業的每個領域。一般來說,python培訓需要脫產學習5個月左右,這樣的時長才能夠讓學員既掌握工作所需的技能,還能夠積累一定的項目經驗。當然如果你想要在人工智慧的路上越走越遠,則需要不斷的積累和學習。
python培訓的5個月時間里,有相當大一部分時間是在實戰做項目,第一階段是為期一個月學習python的核心編程,主要是python的語言基礎和高級應用,幫助學員獲得初步軟體工程知識並樹立模塊化編程思想。學完這一階段的內容,學員已經能夠勝任python初級開發工程師的職位。
(6)股票交易寫量化學什麼語言擴展閱讀:
Python開發基礎課程內容包括:計算機硬體、操作系統原理、安裝linux操作系統、linux操作系統維護常用命令、Python語言介紹、環境安裝、基本語法、基本數據類型、二進制運算、流程式控制制、字元編碼、文件處理、數據類型、用戶認證、三級菜單程序、購物車程序開發、函數、內置方法、遞歸、迭代器、裝飾器、內置方法、員工信息表開發、模塊的跨目錄導入、常用標准庫學習,b加密 e正則logging日誌模塊等,軟體開發規范學習,計算器程序、ATM程序開發等。
G. 編寫股票分析軟體需要學會哪些計算機語言
編寫股票分析軟體需要學會的計算機語言是C++、Java、Java Script 、 VB 、Visual Foxpro 語言。
股票分析軟體准確稱為是證券決策分析系統,它是在普通行情軟體的基本功能整加了一些特定的功能,如一些分析大盤的指標、公式,新聞資訊,預警系統,選股系統,盤後分析,信息實時發布系統,研究報告,贏富數據等。" 股市有風險,投資需謹慎",廣大股民朋友要根據自己的需求選擇合適自己的股票軟體,而後結合一定的分析理論和自己的炒股經驗,形成一套自己的、行之有效炒股模式。股票分析軟體實質是通過對股市行情數據的統計,按照一定的分析模型和交易模型匯總成一系列的報表,指標圖形,實時資訊,讓廣大股民朋友更加清晰直觀的從基本面、技術面分析大盤和個股,即時方便的掌握股市的動向。股票分析軟體是炒股的工具,所以請廣大股民朋友要靈活運用。
H. 金融工程,量化投資學什麼軟體好Python還是Matlab
這真的非常難說。。總的來看美 國大部分用python,國 內可能用matlab的比較多(因為盜版什麼的問題呵呵)。我個人是覺得python有更好的靈活性,比如可以和C鏈接等等,很多美國的hedge fund等公司都在從matlab轉到python。matlab的好處是:收錢的東西質量有保證。所以matlab在optimization等方面的toolbox寫得非常棒!總的來說就是簡單好用。問題就是它的syntax非常惡心(這點和R類似。。)。另外速度比較慢(當然R更慢)。。我個人是比較喜歡python多一點,但是很多時候搞量化分析偷懶就會用matlab和R,因為很多東西都是現成的。。
I. python量化交易半個月可以學會嗎
python量化交易半個月可以學會的。
如果已經有了Python基礎,半個月可以入門的,如果沒有Python基礎,就先學Python,學一兩個月有了基礎後,再結合量化交易的模型,邊學Python語言,邊學以Python實現量化模型,上手也會很快的。
大家可能覺得搞量化的人就是整天和大量數據打交道,用一行行代碼寫出復雜的模型,然後沒完沒了地Run,在回測和優化中掙扎,沉浸在數學和統計海洋里的一群人。
實際上,這只是表面現象。雖然每個搞量化的人必須會寫代碼,也必須具備扎實的數學功底,在開發策略的過程中,的確需要分析大量數據,不斷做回測和優化,但是,這一切的背後是強大的金融思維和對金融市場的深刻理解在支撐的。
換句話說,如果你沒有經濟、金融的完整知識體系和工作經驗,或者沒有正確的、科學的思維方式,無論數學多麼地好,也很可能在做無用功;即便編程多麼在行,也只能淪為碼農一枚(沒有歧視程序員的意思哦)。
反過來說,如果你具備科學的思維和邏輯,並發現了經濟、金融的某些規律,想做Quant就不難了。接下來,你只需花點時間學習編程工具,好好利用數據和代碼為你實現自己的想法。
J. 國外股票程序化交易中所用的程序是用什麼語言編輯的
國外的交易軟體基本都是程序化交易系統。編寫的語言很多,又分散戶和投資機構用。無論哪種語言編輯,執行都是c++