量化投資基礎(一)之常見金融數據讀取方式(端口)

點贊、關注再看,養成良好習慣
Life is short, U need Python
初學Python,快來點我吧
在這裏插入圖片描述


1. 前言

作爲投資者,尤其是量化投資者,時常聽到的一句話是“不要把雞蛋放入同一個籃子中”,即所謂的分散投資策略。於是,從中可以看出分散投資可以降低投資風險,但是,投資者面對幾千種各式各樣的籃子,選擇哪一個籃子,然後每個籃子該放多少個雞蛋,大多數投資者僅僅憑自己的感覺或者一時衝動;另外,即使投資者選對籃子且雞蛋數量也控制的很好,可是何時把手裏的雞蛋換成超額收益又是跟着感覺走。針對上述種種問題,量化投資破殼而出,專門解決上述問題的一種工具。

衆所周知,金融數據是量化投資的基礎和前提,投資者制定的量化投資策略都是建立在對金融數據分析的基礎上。本文博主將帶領大家嘗試如何利用Python實現金融數據的獲取。

據博主所知,目前在線編程量化投資平臺衆多,而且各種在線策略平臺都支持Python語言(而且大多策略平臺僅支持Python語言,且對應的Python課程資源以及策略案例衆多,社區非常活躍),例如JoinQuant(聚寬量化交易平臺)、BigQuant(點寬量化交易平臺)、UQER(優礦量化交易平臺)、WQ(萬礦量化交易平臺)等,這也是博主推出Python量化投資基礎系列的原因。但是,本文不再涉及利用Python調取這些平臺端口的金融數據(因爲這些平臺需要註冊,且每天流量有限制,速度有點慢)。

2. 雅虎網

(1)官網https://www.yahoo.com/

(2)安裝 pandas-datareader

(3)讀取數據

import pandas_datareader.data as pdr 

# 讀取標普500
sp500 = pdr.DataReader(name='^GSPC',data_source='yahoo',start='1/1/2020',end='2/26/2020)   
# 查看數據前5行
sp500.head()
# 輸出數據
sp500.to_csv('sp500.csv')

或者

import pandas_datareader.data as pdr 

# 讀取標普500
sp500 = pdr.get_data_yahoo('^GSPC',start='1/1/2020',end='20/2/2020') 
# 查看數據前5行
sp500.head()
# 輸出數據
sp500.to_csv('sp500.csv')

在這裏插入圖片描述

3. TuShare

TuShare是一個免費、開源的python財經數據接口包。
主要實現對股票等金融數據從數據採集、清洗加工 到 數據存儲的過程,能夠爲金融分析人員提供快速、整潔、和多樣的便於分析的數據,爲他們在數據獲取方面極大地減輕工作量,使他們更加專注於策略和模型的研究與實現上。

考慮到Python pandas包在金融量化分析中體現出的優勢,TuShare返回的絕大部分的數據格式都是pandas DataFrame類型。

(1)官網http://tushare.org/

(2)安裝 tushare

(3)讀取數據

import tushare as ts 

# 讀取中國平安(601318)數據
zgpa = ts.get_hist_data('601318', start='2019-01-01', end='2019-02-20')
# 查看數據前5行
zgpa.head()
# 輸出數據
zgpa.to_csv('zgpa.csv')

或者

import tushare as ts 

# 讀取中國平安(601318)數據: ktype='D'/'W'/'M'(日/周/月); 默認日線數據
zgpa = ts.get_hist_data('601318', start='2019-01-01', end='2019-02-20', ktype='D')
# 查看數據前5行
zgpa.head()
# 輸出數據
zgpa.to_csv('zgpa.csv')

在這裏插入圖片描述

4. BaoStock

(1)官網http://baostock.com/baostock/index.php

(2)安裝baostock

(3)讀取數據

import pandas as pd
import baostock as bs     
       
lg = bs.login(user_id="anonymous", password="123456")  # 無需註冊,直接輸入此行代碼即可

# 讀取浦發銀行數據(600000):frequency="d"/'w'/'m'(日/周/月)
fields ="date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,\
peTTM,pbMRQ,psTTM,pcfNcfTTM,isST"
rs = bs.query_history_k_data("sh.600000",fields,start_date='2019-01-01', end_date='2019-02-20', frequency="d", adjustflag="3")   
data_list = []
while rs.next():
    data_list.append(rs.get_row_data()) 
pfyh = pd.DataFrame(data_list, columns=rs.fields)
# 查看數據前5行
pfyh.head()
# 輸出數據
pfyh.to_csv('pfyh.csv')

在這裏插入圖片描述

  • date(日期);code(代碼);open(開盤價);high(最高價);high(最高價);low(最低價);close(收盤價);preclose(前收盤價);volume(成交量);amount(成交額);adjustflag(復權狀態:1-後復權2-前復權3-不復權);turn(換手率);tradestatus(交易狀態:1-正常0-停盤);pctChg(漲跌幅);peTTM(動態市盈率);pbMRQ(市淨率);psTTM(市銷率);pcfNcfTTM(市現率);isST(是否ST:1-是0-否)

  • 寫作不易,切勿白剽
  • 博友們的點贊關注就是對博主堅持寫作的最大鼓勵
  • 持續更新,未完待續…

下一篇:量化投資基礎(二)之 Markowitz模型

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章