當前位置:首頁 » 行情解析 » 量化交易之路用python做股票量化分析
擴展閱讀
股票代碼000721 2025-09-15 08:33:06
中國中鐵最新股票走勢圖 2025-09-15 06:40:53

量化交易之路用python做股票量化分析

發布時間: 2022-06-08 21:07:37

❶ 使用python做量化交易策略測試和回驗,有哪些比較成熟一些的庫

量化交易大多用在股票交易上,量化是指將某隻股票或者摸個行業的數據進行量化,在更具各家機構自己的量化公式進行選擇,量化交易只是選擇,並不涉及交易
程序化交易也是一種量化交易,但是是更具已有的數據進行,比如各種行情指標,MACD KDJ等,無法像量化交易那樣把能涉及到的所有數據進行量化,程序化交易更側重交易的自動進行,沒有認為干預,且模型編寫簡單,個人用戶也可以進行!

❷ 怎麼學習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,按照指示掃描二維碼,綁定微信,就能微信接收交易信號了。

❸ Python和金融分析的關系量化交易內容深度

Python是一種腳本語言,就是程序員用的代碼語言。
Python的功能不可以說不大,在金融數據分析裡面有著很方便的應用。
但是需要你專門去學Python,不然看到一堆代碼只會懵逼。

❹ 作為Python程序員 怎樣入門量化交易

量化交易大多用在股票交易上,量化是指將某隻股票或者摸個行業的數據進行量化,在更具各家機構自己的量化公式進行選擇,量化交易只是選擇,並不涉及交易,程序化交易也是一種量化交易,但是是更具已有的數據進行,比如各種行情指標,MACD KDJ等,無法像量化交易那樣把能涉及到的所有數據進行量化,程序化交易更側重交易的自動進行,沒有認為干預,且模型編寫簡單,個人用戶也可以進行

❺ 用Python怎麼做量化投資

本文將會講解量化投資過程中的基本流程,量化投資無非這幾個流程,數據輸入------策略書寫------回測輸出
其中策略書寫部分還涉及到編程語言的選擇,如果不想苦惱數據輸入和回測輸出的話,還要選擇回測平台。
一、數據
首先,必須是數據,數據是量化投資的基礎
如何得到數據?

Wind:數據來源的最全的還是Wind,但是要付費,學生可以有免費試用的機會,之後還會和大家分享一下怎樣才Wind里摘取數據,Wind有很多軟體的借口,Excel,Matlab,Python,C++。
預測者網:不經意間發現,一個免費提供股票數據網站 預測者網,下載的是CSV格式
TB交易開拓者:Tradeblazer,感謝@孫存浩提供數據源
TuShare:TuShare -財經數據介麵包,基於Python的財經數據包,利用Python進行摘取
如何存儲數據?
Mysql
如何預處理數據?

空值處理:利用DataFrame的fill.na()函數,將空值(Nan)替換成列的平均數、中位數或者眾數
數據標准化
數據如何分類?
行情數據
財務數據
宏觀數據
二、計算語言&軟體

已經有很多人在網上詢問過該選擇什麼語言?筆者一開始用的是matlab,但最終選擇了python
python:庫很多,只有你找不到的,沒有你想不到,和量化這塊結合比較緊密的有:
Numpy&Scipy:科學計算庫,矩陣計算
Pandas:金融數據分析神器,原AQR資本員工寫的一個庫,處理時間序列的標配

Matplotlib:畫圖庫
scikit-learn:機器學習庫
statsmodels:統計分析模塊
TuShare:免費、開源的python財經數據介麵包

Zipline:回測系統
TaLib:技術指標庫
matlab:主要是矩陣運算、科學運算這一塊很強大,主要有優點是WorkSpace變數可視化

python的Numpy+Scipy兩個庫完全可以替代Matlab的矩陣運算
Matplotlib完克Matlab的畫圖功能
python還有很多其他的功能
pycharm(python的一款IDE)有很棒的調試功能,能代替Matlab的WorkSpace變數可視化
推薦的python學習文檔和書籍
關於python的基礎,建議廖雪峰Python 2.7教程,適合於沒有程序基礎的人來先看,涉及到python的基本數據類型、循環語句、條件語句、函數、類與對象、文件讀寫等很重要的基礎知識。

涉及到數據運算的話,其實基礎教程沒什麼應用,python各類包都幫你寫好了,最好的學習資料還是它的官方文檔,文檔中的不僅有API,還會有寫實例教程
pandas文檔
statsmodels文檔
scipy和numpy文檔
matplotlib文檔

TuShare文檔
第二,推薦《利用Python進行數據分析》,pandas的開發初衷就是用來處理金融數據的
三、回測框架和網站
兩個開源的回測框架
PyAlgoTrade - Algorithmic Trading

Zipline, a Pythonic Algorithmic Trading Library

❻ 做量化交易選擇什麼語言好呢

量化交易,就是把人能夠識別的信息變成數字,輸入給計算機程序處理,輔助或者代替人類的思考和交易決策。

初學者碰到的第一個問題就是工具的選擇。首先大部分交易員本來不會寫程序,選擇任何一個語言進行策略開發,都有不小的學習成本。更重要的是,選擇了一門語言,接下來開發環境、人員招聘、數據介面與平台、甚至同類人群之間的交流、遇到問題後的支持,都跟著被「套牢」。所以從一開始就必須慎重對待。

先給出答案:對於還沒有確定一套固定量化環境的,建議用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都有極好的支持。

❼ python的量化代碼怎麼用到股市中

2010 ~ 2017 滬深A股各行業量化分析

在開始各行業的量化分析之前,我們需要先弄清楚兩個問題:

  • 第一,A股市場上都有哪些行業;

  • 第二,各行業自2010年以來的營收、凈利潤增速表現如何?

  • 第一個問題
    很好回答,我們使用JQData提供的獲取行業成分股的方法,輸入get_instries(name='sw_l1')
    得到申萬一級行業分類結果如下:它們分別是:【農林牧漁、採掘、化工、鋼鐵、有色金屬、電子、家用電器、食品飲料、紡織服裝、輕工製造、醫葯生物、公用事業、交通運輸、房地產、商業貿易、休閑服務、綜合、建築材料、建築裝飾、電器設備、國防軍工、計算機、傳媒、通信、銀行、非銀金融、汽車、機械設備】共計28個行業。

    第二個問題
    要知道各行業自2010年以來的營收、凈利潤增速表現,我們首先需要知道各行業在各個年度都有哪些成分股,然後加總該行業在該年度各成分股的總營收和凈利潤,就能得到整個行業在該年度的總營收和總利潤了。這部分數據JQData也為我們提供了方便的介面:通過調用get_instry_stocks(instry_code=『行業編碼』, date=『統計日期』),獲取申萬一級行業指定日期下的行業成分股列表,然後再調用查詢財務的數據介面:get_fundamentals(query_object=『query_object』, statDate=year)來獲取各個成分股在對應年度的總營收和凈利潤,最後通過加總得到整個行業的總營收和總利潤。這里為了避免非經常性損益的影響,我們對凈利潤指標最終選取的扣除非經常性損益的凈利潤數據。

    我們已經獲取到想要的行業數據了。接下來,我們需要進一步分析,這些行業都有什麼樣的增長特徵。

    我們發現,在28個申萬一級行業中,有18個行業自2010年以來在總營收方面保持了持續穩定的增長。它們分別是:【農林牧漁,電子,食品飲料,紡織服裝,輕工製造,醫葯生物,公用事業,交通運輸,房地產,休閑服務,建築裝飾,電氣設備,國防軍工,計算機,傳媒,通信,銀行,汽車】;其他行業在該時間范圍內出現了不同程度的負增長。

    那麼,自2010年以來凈利潤保持持續增長的行業又會是哪些呢?結果是只有5個行業保持了基業長青,他們分別是醫葯生物,建築裝飾,電氣設備,銀行和汽車。(註:由於申萬行業在2014年發生過一次大的調整,建築裝飾,電氣設備,銀行和汽車實際從2014年才開始統計。)

    從上面的分析結果可以看到,真正能夠保持持續穩定增長的行業並不多,如果以扣非凈利潤為標准,那麼只有醫葯生物,建築裝飾,電氣設備,銀行和汽車這五個行業可以稱之為優質行業,實際投資中,就可以只從這幾個行業中去投資。這樣做的目的是,一方面,能夠從行業大格局層面避免行業下行的風險,繞開一個可能出現負增長的的行業,從而降低投資的風險;另一方面,也大大縮短了我們的投資范圍,讓投資者能夠專注於從真正好的行業去挑選公司進行投資。

「2010-2017」投資於優質行業龍頭的收益表現

選好行業之後,下面進入選公司環節。我們知道,即便是一個好的行業也仍然存在表現不好的公司,那麼什麼是好的公司呢,本文試圖從營業收入規模和利潤規模和來考察以上五個基業長青的行業,從它們中去篩選公司作為投資標的。

3.1按營業收入規模構建的行業龍頭投資組合

首先,我們按照營業收入規模,篩選出以上5個行業【醫葯生物,建築裝飾,電氣設備,銀行和汽車】從2010年至今的行業龍頭如下表所示:

結論

通過以上行業分析和投資組合的歷史回測可以看到:

  • 先選行業,再選公司,即使是從2015年股災期間開始投資,至2018年5月1號,仍然能夠獲得相對理想的收益,可以說,紅杉資本的賽道投資法則對於一般投資者還是比較靠譜的。

  • 在構建行業龍頭投資組合時,凈利潤指標顯著優於營業收入指標,獲得的投資收益能夠更大的跑贏全市場收益率

  • 市場是不斷波動的,如果一個投資者從股災期間開始投資,那麼即使他買入了上述優質行業的龍頭組合,在近3年也只能獲得12%左右的累計收益;而如果從2016年5月3日開始投資,那麼至2018年5月2日,2年時間就能獲得超過50%以上的收益了。所以,在投資過程中選擇時機也非常重要。

出自:JoinQuant 聚寬數據 JQData

❽ 用python怎麼做量化投資

我目前也在學習量化,現在在學習Python,還有一些具體的模型,太多了!沒事可以多交流

❾ python對股票分析有什麼作用

你好,Python對於股票分析來說,用處是很大的
Python,用數據軟體分析可以做股票的量化程序,因為股票量化是未來的一種趨勢,能夠解決人為心理波動和沖動下單等不良行為,所以學好python量化的話,那麼對股票來說有很大很大幫助

❿ python炒股可行嗎

非常不可行,還是靠人工吧,人工才是真正能夠理解人的心理的,炒股本來就是一個心理的游戲。。