金融量化学习---Python, MySQL, Pandas

这里用来记录一些在金融领域,尤其是银行相关的资金、债券、票据中应用到的数据管理与分析, 编程等心得或笔记,以及个人的一点小小兴趣(易经八卦、藏密禅修)等

导航

pyhon可用在线金融数据汇总

一、数据源

Tushare

Tushare社区门户(https://waditu.com),点击右上角“注册”,
获取token,登录成功后,点击右上角->个人主页->“用户中心”中点击“接口TOKEN”->复制token
注意:token是Tushare调取数据的唯一凭证,请妥善保管,如发现别人盗用,可在本页面点击“刷新”操作,之前的token将失效。
安装:pip install tushare

1.导入tushare

import tushare as ts
ts.set_token('your token here')
#以上方法只需要在第一次或者token失效后调用,完成调取tushare数据凭证的设置,正常情况下不需要重复设置。也可以忽略此步骤,直接用pro_api('your token')完成初始化
pro = ts.pro_api()   #初始化pro接口

如果上一步骤ts.set_token('your token')无效或不想保存token到本地,也可以在初始化接口里直接设置token:
pro = ts.pro_api('your token')

2.数据调取
以获取交易日历信息为例:

df = pro.trade_cal(exchange='', start_date='20180901', end_date='20181001', fields='exchange,cal_date,is_open,pretrade_date', is_open='0')
或者
df = pro.query('trade_cal', exchange='', start_date='20180901', end_date='20181001', fields='exchange,cal_date,is_open,pretrade_date', is_open='0')
调取结果:

    exchange  cal_date    is_open pretrade_date
0          SSE       20180901        0      20180831
1          SSE       20180902        0      20180831
2          SSE       20180908        0      20180907
3          SSE       20180909        0      20180907

Tushare提供的数据类型:https://waditu.com/document/2?doc_id=148

AKSHARE

GITHUB:https://github.com/jindaxiang/akshare
AKSHARE: https://www.akshare.xyz/
https://www.akshare.xyz/zh_CN/latest/
一般安装
pip install akshare

pip install akshare -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host=mirrors.aliyun.com --upgrade
使用范例:

import akshare as ak
hist_df = ak.stock_us_daily(symbol="AMZN")  # Get U.S. stock Amazon's price info
print(hist_df)
#Output

               open       high        low      close     volume
date                                                           
1997-05-15    29.25    30.0000    23.1300    23.5000  6013000.0
1997-05-16    23.63    23.7500    20.5000    20.7500  1225000.0
1997-05-19    21.13    21.2500    19.5000    20.5000   508900.0

gopup 开源数据库

项目的地址为:
https://github.com/justinzm/gopup

GoPUP数据
指数数据:微博指数数据,百度指数数据,百度搜索数据,百度资讯指数,百度媒体指数,百度需求图谱,百度人群画像年龄分布,百度人群画像性别分布,百度人群画像兴趣分布;算数数据:算数指数数据,算数相关性分析,算数地域分析,算数城市分析,算数年龄分析,算数性别分析,算数用户阅读兴趣分类,谷歌指数数据,谷歌指数数据,谷歌事实查证;宏观数据:中国宏观数据,中国宏观杠杆率数据,货币汇率数据;利率数据:Shibor数据,Shibor报价数据,Shibor均值数据,LPR数据;新经济公司:千里马公司,独角兽公司,倒闭公司,商业特许经营公司;信息数据:新闻联播文字稿;生活数据:中国油价数据,汽柴油历史调价信息,调价日的地区油价历史数据;诗词数据:唐代诗人,唐诗数据;影视数据:实时电影票房数据,单日电影票房数据,单日影院票房数据,实时电视剧播映指数,实时综艺播映指数,艺人商业价值,艺人流量价值;全国高校:全国普通高等学校名单,全国成人高等学校名单,全国高等学校详情数据;疫情数据:网易疫情数据,丁香园疫情数据……

安装方法:pip install gopup
使用文档:gopup-cookbook http://www.gopup.cn/login
当前版本:v0.3.0
https://github.com/cqkenuo/gopup

Quandl (部分免费)

https://data.nasdaq.com/
旧名:https://www.quandl.com/
先注册,后使用
quandl.get("ABMI/INT_RATE_SPREAD_2YRVS10YR_CHN", authtoken="******") #token自己申请

CurrencyScoop

最新报价数据-免费账号每月限量访问 5000 次
https://currencyscoop.com/
使用方法:https://currencyscoop.com/api-documentation
Currencyscoop provides a simple REST API with real-time and historical exchange rates for 168 world currencies. We deliver currency pairs and data in universally usable JSON format - compatible with any programming languages and any of your applications.

Our real-time and historical exchange rate data is retrieved from several major forex data providers, central banks and various commercial vendors in real-time, validated, processed and delivered in seconds within the market window.

By providing the most representative forex market value available ("midpoint" value) for every API request, our API powers currency converters, mobile applications, financial software components and back-office systems all around the world.

Central banks and currency traders define the rates at which they are willing to buy/sell a specific currency. The real-time mid-market rate is the midpoint between demand and supply at any point in time, making it the most accurate rate. The mid-market rate is the rate you will find on independent sources such as Yahoo Finance, Google Finance, Xignite and XE.

yfinance

Install yfinance using pip:
pip install yfinance --upgrade --no-cache-dir

源地址:https://github.com/ranaroussi/yfinance
Yahoo提供了丰富的金融市场数据,可以当作API来调用。
支持代理取数:If you want to use a proxy server for downloading data, use:

import yfinance as yf

msft = yf.Ticker("MSFT")

msft.history(..., proxy="PROXY_SERVER")
msft.get_actions(proxy="PROXY_SERVER")
msft.get_dividends(proxy="PROXY_SERVER")
msft.get_splits(proxy="PROXY_SERVER")
msft.get_capital_gains(proxy="PROXY_SERVER")
msft.get_balance_sheet(proxy="PROXY_SERVER")
msft.get_cashflow(proxy="PROXY_SERVER")
msft.option_chain(..., proxy="PROXY_SERVER")

证券宝baostock

http://baostock.com/
证券宝www.baostock.com是一个免费、开源的证券数据平台(无需注册)。

提供大量准确、完整的证券历史行情数据、上市公司财务数据等。
通过python API获取证券数据信息,满足量化交易投资者、数量金融爱好者、计量经济从业者数据需求。
返回的数据格式:pandas DataFrame类型,以便于用pandas/NumPy/Matplotlib进行数据分析和可视化。

同时支持通过BaoStock的数据存储功能,将数据全部保存到本地后进行分析。
支持语言:目前版本BaoStock.com目前只支持Python3.5及以上(暂不支持python 2.x)。
持续更新:BaoStock.com还在不断的完善和优化,后续将逐步增加港股、期货、外汇和基金等方面的金融数据,为成为一个免费金融数据平台努力。
分享优化:请通过微信、网站博客或者知乎文章等方式分享给大家,使它能在大家的使用过程中逐步得到改进与提升,以便于更好地为大家提供免费服务。
平台麦克:证券宝BaoStock.com从发布到现在,已经帮助很多用户在数据方面减轻了工作量,同时也得到很多用户的反馈。它将一如既往的以免费、开源的形式分享出来,希望给有需要的朋友带来一些帮助。
联系方式:服务QQ群:873161321(发布维护、量化投资讨论);EMail:baostock@163.com。

下载安装
方式1:pip install baostock

必盈数据

https://www.biyingapi.com/
API文档:https://ad.biyingapi.com/apidoc.html
数据分类标准:https://www.biyingapi.com/licencelt.html

第一步 申请证书
为保证用户隐私,申请必盈数据licence证书无需注册用户可直接申请,必盈数据licence接口证书分为免费版、包月版、包年版、黄金版、白金版、钻石版共计6个版本,各个版本的详情说明请至证书获取页面查阅申请。

第二步 查看API文档
您需要根据自己对于数据接口的实际需求,查阅对应的API文档,了解API接口的说明、规则、链接,以及API接口所提供的数据字段说明情况。您可以在PostMan软件中测试接口,亦可直接在谷歌浏览器中测试所有API接口。

第三步 接入API
您需要根据自己的实际开发需求,对照API开发文档,接入自己的应用即可。

二、宏观数据

  提供银行和政府公布的利率数据,日度更新。目前主要数据有以下几种:

利率数据

Shibor利率

官方数据:www.shibor.org

import tushare as ts
ts.set_token('your token here')
pro = ts.pro_api()
df = pro.shibor(start_date='20180101', end_date='20181101')

#数据样例

     date      on      1w      2w      1m      3m      6m      9m      1y
0    20181101  2.5470  2.6730  2.6910  2.6960  2.9760  3.2970  3.5040  3.5500
1    20181031  2.3700  2.7150  2.7300  2.6890  2.9630  3.2980  3.5040  3.5500
2    20181030  1.5660  2.5980  2.6400  2.6630  2.9570  3.2950  3.5010  3.5500

LPR贷款基础利率

pro = ts.pro_api()
df = pro.shibor_lpr(start_date='20180101', end_date='20181130')
#数据样例
     date       1y
0    20181130  4.31
1    20181129  4.31
2    20181128  4.31

Libor利率

pro = ts.pro_api()
df = pro.libor(curr_type='USD', start_date='20180101', end_date='20181130')
#数据样例
     date     curr_type       on       1w       1m       2m       3m       6m  \
0    20181130       USD  2.17750  2.22131  2.34694  2.51006  2.73613  2.89463   
1    20181129       USD  2.18275  2.22881  2.34925  2.51125  2.73813  2.88519   
2    20181128       USD  2.18250  2.22450  2.34463  2.49500  2.70663  2.88663

Hibor利率

df = pro.hibor(start_date='20180101', end_date='20181130')
#数据样例

     date       on       1w       2w       1m       2m       3m       6m  \
0    20181130  1.52500  1.10125  1.08000  1.20286  1.83030  2.03786  2.32821   
1    20181129  0.76143  0.95643  1.01036  1.12357  1.80493  2.01018  2.31643   
2    20181128  0.66786  0.95607  0.99929  1.10964  1.77104  1.97643  2.30143

宏观数据

货币供应量

df = pro.cn_m(start_m='201901', end_m='202003')
#获取指定字段
df = pro.cn_m(start_m='201901', end_m='202003', fields='month,m0,m1,m2')
#数据样例
#
    month        m0 m0_yoy m0_mom         m1 m1_yoy m1_mom          m2 m2_yoy m2_mom
0   202003  83000.00  10.80  -5.90  575100.00   5.00   4.05  2080900.00  10.10   2.47
1   202002  88200.00  10.90  -5.36  552700.00   4.80   1.32  2030800.00   8.80   0.38
2   202001  93200.00   6.60  20.73  545500.00   0.00  -5.30  2023100.00   8.40   1.84

GDP数据

pro = ts.pro_api()
df = pro.cn_gdp(start_q='2018Q1', end_q='2019Q3')
#获取指定字段
df = pro.us_tycr(start_q='2018Q1', end_q='2019Q3', fields='quarter,gdp,gdp_yoy')
#数据样例

    quarter          gdp gdp_yoy          pi pi_yoy           si si_yoy           ti ti_yoy
0    2019Q4  990865.1000    6.10  70466.7000   3.10  386165.3000   5.70  534233.1000   6.90
1    2019Q3  712845.4000    6.20  43005.0000   2.90  276912.5000   5.60  392927.9000   7.00
2    2019Q2  460636.7000    6.30  23207.0000   3.00  179122.1000   5.80  258307.5000   7.00

居民消费价格指数(CPI)

pro = ts.pro_api()
df = pro.cn_cpi(start_m='201801', end_m='201903')
#获取指定字段
df = pro.us_cpi(start_q='201801', end_q='201903', fields='month,nt_val,nt_yoy')
#数据样例
     month  nt_val nt_yoy nt_mom nt_accu town_val town_yoy town_mom town_accu cnt_val cnt_yoy cnt_mom cnt_accu
0   201903  102.30   2.30  -0.40  101.80   102.30     2.30    -0.40    101.90  102.30    2.30   -0.30   101.80
1   201902  101.50   1.50   1.00  101.60   101.50     1.50     1.00    101.60  101.40    1.40    0.90   101.50

工业生产者出厂价格指数(PPI)

pro = ts.pro_api()
df = pro.cn_ppi(start_m='201905', end_m='202005')
#获取指定字段
df = pro.cn_ppi(start_m='201905', end_m='202005', fields='month,ppi_yoy,ppi_mom,ppi_accu')
#数据样例
    month ppi_yoy ppi_mom ppi_accu
0   202005   -3.70   -0.40    -1.70
1   202004   -3.10   -1.30    -1.20
2   202003   -1.50   -1.00    -0.60

三、债券数据

债券基础信息

和讯网银行间债券数据

http://bond.money.hexun.com/quote/bondtype/gzyh.aspx

和讯网交易所市场债券数据

http://bond.money.hexun.com/quote/bondtype/gzsh.aspx

个债资料

http://bond.money.hexun.com/all_bond/030004_gz.shtml


AKSHARE获取债券市场数据

1. 现券市场报价行情(AKSHARE)

  1. 现券市场报价行情
    接口: bond_spot_quote
    https://www.akshare.xyz/zh_CN/latest/data/bond/bond.html
    目标地址: http://www.chinamoney.com.cn/chinese/mkdatabond/
    描述: 提供中国外汇交易中心暨全国银行间同业拆借中心-市场数据-市场行情-债券市场行情-现券市场报价行情
    限量: 单次返回所有数据
bond_quote = ak.bond_spot_quote()
print(bond_quote)


             债券简称    报价机构       买入/卖出净价(元)      买入/卖出收益率(%)
0        17附息国债04    上海银行  101.26 / 103.01  3.1717 / 2.8601
1        20附息国债11    中金公司    99.51 / 99.97  2.9500 / 2.6550
2        19附息国债15  摩根大通银行    98.17 / 99.61  3.3700 / 3.1800
3        20附息国债03  摩根大通银行    98.47 / 98.91  2.9700 / 2.7600
4        19附息国债16  摩根大通银行   99.36 / 100.37  3.2400 / 3.0500

这个结果可读性不高,而且数字没有分离,我自己写了以下代码重构一个bond_quote_new 代替bond_quote

price_buy = []
price_sell = []
for i in bond_quote['买入/卖出净价(元)']:
    data=i.split('/')
    if data[0].strip() == '---':
        price_buy.append('')
    else:
        price_buy.append(float(data[0].strip()))
    if data[1].strip() == '---':
        price_sell.append('')
    price_sell.append(float(data[1].strip()))

yield_buy = []
yield_sell = []
for i in bond_quote['买入/卖出收益率(%)']:
    data=i.split('/')
    if data[0].strip() == '---':
        yield_buy.append('')
    else:
        yield_buy.append(float(data[0].strip()))
    if data[1].strip() == '---':
        yield_sell.append('')
    else:
        yield_sell.append(float(data[1].strip()))

bond_quote_new = bond_quote[['债券简称','报价机构']]
bond_quote_new['买入净价']=price_buy
bond_quote_new['卖出净价']=price_sell
bond_quote_new['买入收益率']=yield_buy
bond_quote_new['卖出收益率']=yield_sell

注意处理bond_quote空值'---':

bond_quote_new[bond_quote_new['买入收益率']=='']
Out[]: 
             债券简称  报价机构   买入净价   卖出净价 买入收益率 卖出收益率
3798  18建元21A2_bc  中金公司  60.82  64.82  

最终得到:

bond_quote_new
Out[51]: 
             债券简称  报价机构    买入净价    卖出净价   买入收益率   卖出收益率
0          19农发08  上海银行  100.68  101.26    3.49   3.375
1     20光大银行CD121  开发银行   98.14   98.21  2.8498  2.5506
2     20交通银行CD062  开发银行   97.86   97.97    2.95  2.6507
3     20交通银行CD051  开发银行   97.99   98.08  2.9099  2.6106
4     20交通银行CD046  开发银行   98.06   98.14  2.8999  2.6005
          ...   ...     ...     ...     ...     ...
4843  20华夏银行CD404  第一创业   97.68   97.96    3.16    2.66
4844  20光大银行CD275  第一创业   97.68   97.96    3.16    2.66
4845  20华夏银行CD408  第一创业   96.85   97.26  3.2401    2.74
4846  20华夏银行CD433  第一创业   96.85   97.27    3.24    2.74
4847  20中国银行CD092  第一创业   97.68   97.96  3.1499    2.65

2. 现券市场成交行情(AKSHARE)

接口: bond_spot_deal
目标地址: http://www.chinamoney.com.cn/chinese/mkdatabond/
描述: 提供中国外汇交易中心暨全国银行间同业拆借中心-市场数据-市场行情-债券市场行情-现券市场成交行情
限量: 单次返回所有即期数据

bond_deal = ak.bond_spot_deal()
print(bond_deal)

              债券简称 成交净价(元) 最新收益率(%)  涨跌(BP) 加权收益率(%) 交易量(亿)
0         20附息国债12  100.44   3.7850   -1.50   3.7917   None
1         20附息国债16  100.40   3.2225   -0.69   3.2189   None
2           20农发06   99.70   2.6700    0.01   2.6700   None
3           20国开10   95.34   3.6800   -0.25   3.6761   None
4         20附息国债13   99.99   3.0200   -1.50   3.0233   None

米筐量化债券数据规范:

https://www.ricequant.com/
RQSDK 安装及配置:
RQSDK使用文档链接(必读):https://www.ricequant.com/doc/rqsdk
请参考以上文档安装RQSDK并配置许可证(License Key)。RQSDK默认包含RQData组件,无需额外安装及配置。 您可以根据需求进一步安装RQFactor、RQAlpha Plus及RQOptimizer,详见使用文档。请放心,安装过程非常简便快捷。
如何使用RQSDK产品的丰富功能:
以RQData为例,在您完成RQSDK的安装配置后,通过以下语句初始化RQData:

import rqdatac
rqdatac.init()

快速参考链接:

  1. RQData Python API文档:www.ricequant.com/doc/rqdata/python/
  2. RQOptimizer API文档:www.ricequant.com/doc/rqoptimizer/api/
  3. RQFactor使用文档:www.ricequant.com/doc/rqfactor/manual.html
  4. RQFactor API文档:www.ricequant.com/doc/rqfactor/api.html
  5. RQAlpha Plus使用教程:www.ricequant.com/doc/rqalpha-plus/tutorial.html
  6. RQAlpha Plus API文档:www.ricequant.com/doc/rqalpha-plus/api/

四、监管公开数据

1.文件名称:银行业金融机构法人名单**

数据源:银保监会官网
查询方法:登录 http://www.cbirc.gov.cn/ , 搜索框输入‘银行业金融机构法人名单’
http://www.cbirc.gov.cn/cn/view/pages/index/jiansuo.html?keyWords=银行业金融机构法人名单
数据样例:

2.外汇交易中心成员名单**

人民币外汇做市商
人民币外汇尝试做市机构
人民币外汇会员
外币对会员
外币货币市场会员
集中办理人民币购售名单
人民币外汇即期会员
人民币外汇远期会员
人民币外汇掉期会员
人民币外汇货币掉期会员
人民币外汇期权会员
债券通香港结算行
数据源:中国外汇交易中心
http://www.chinamoney.com.cn/chinese/mtmemfxmk/
数据样例:

3.中国票据交易系统参与者名单汇总表**

数据源:上海票据交易所
查询方法:登录 http://www.shcpe.com.cn , 搜索框输入‘系统参与者名单汇总表’
http://www.shcpe.com.cn/content/shcpe/index/search.html?keyword=系统参与者名单
数据样例:

4.《中国银行间市场金融衍生产品交易主协议(2009年版)》协议备案名单

数据源:中国银行间市场交易商协会
http://www.nafmii.org.cn/zlgl/scjy/xymd/201207/t20120706_80771.html

数据样例:

《票据交易主协议(2016年版)》
数据源:中国银行间市场交易商协会
http://www.nafmii.org.cn/zlgl/scjy/xymd/201701/t20170120_80773.html
数据样例:

5.中国公历/农历数据,年份(1901-2100)

数据来源:香港天文台
https://www.hko.gov.hk/tc/gts/time/conversion1_text.htm#

五、其他数据

大数据导航: https://hao.199it.com/
开放广东: https://gddata.gd.gov.cn/index

posted on 2021-02-11 19:00  chengjon  阅读(1099)  评论(0编辑  收藏  举报