美文网首页
基于Python的指数基金量化投资——指数数据获取

基于Python的指数基金量化投资——指数数据获取

作者: 小将前行 | 来源:发表于2021-11-12 17:09 被阅读0次

做基金的量化,最最重要的是要有数据,所以指数的数据是所有分析的源头。

Baostock就提供比较全面的指数数据,具体可以参考《基于Python的指数基金量化投资 - 股票数据源baostock》

指数数据也提供了相应的接口可供调取,通过API接口获取指数(综合指数、规模指数、一级行业指数、二级行业指数、策略指数、成长指数、价值指数、主题指数)K线数据,用户可以指定起始日期和截至日期。

调用的参数包含5个参数,code, fields, start, end, frequency,分别表示股票代码、返回包含的数据列、开始日期、结束日期和k线更新频率。

code:股票代码,sh或sz.+6位数字代码,或者指数代码,如:sh.601398。sh:上海;sz:深圳。此参数不可为空;

fields:指示简称,支持多指标输入,以半角逗号分隔,填写内容作为返回类型的列。详细指标列表见历史行情指标参数章节。此参数不可为空;

start:开始日期(包含),格式“YYYY-MM-DD”,为空时取2015-01-01;

end:结束日期(不包含),格式“YYYY-MM-DD”,为空时取最近一个交易日;

frequency:数据类型,默认为d,日k线;d=日k线、w=周、m=月、5=5分钟、15=15分钟、30=30分钟、60=60分钟k线数据,不区分大小写;指数没有分钟线数据;周线每周最后一个交易日才可以获取,月线第月最后一个交易日才可以获取。

调用的方式很简单:

rs=bs.query_history_k_data_plus("sh.000001","date,code,open,high,low,close,preclose,volume,amount,pctChg",start_date='2017-01-01',end_date='2017-06-30',frequency="d")

上面这段代码就是表示查看sh.000001指数的数据,开始日期为2017-01-01,结束日期为2017-06-30,k先数据按日进行输出,返回数据包含date, code, open, high, low, close, preclose, volume, amount, pctChg

返回数据分别表示:

返回的具体形式如下:

通过获得指数后画出来的指数走势如下:

下面是具体的代码实现过程:

import baostock as bs

import pandas as pd

import datetime

import matplotlib.pyplot as plt

time_end =(datetime.datetime.now()).strftime('%Y-%m-%d')

print(time_end)

# 登陆系统

lg = bs.login()

# 显示登陆返回信息

time_end = '2021-10-30'

name_index = 'sh.000933'

rs = bs.query_history_k_data_plus(name_index,

   "date,code,open,high,low,close,preclose,volume,amount,pctChg",

   start_date='2000-01-01', end_date=time_end, frequency="d")

# 打印结果集

data_list = []

while (rs.error_code == '0') &rs.next():

    #获取一条记录,将记录合并在一起

   data_list.append(rs.get_row_data())

result = pd.DataFrame(data_list,columns=rs.fields)

# 结果集输出到csv文件

result.to_csv("./exportfile/indexDataAll/"+ name_index + ".csv", index=False)

# index_info =pd.read_csv('./exportfile/indexDataAll/' + view_name + '.csv')

all_data_index =pd.read_csv('./exportfile/indexDataAll/' + name_index + '.csv')

data_index_p =all_data_index['close'].values[0:len(all_data_index['close']):1]

plt.figure()

plt.rcParams["axes.grid"] = True

plt.rcParams['font.sans-serif'] =['Microsoft YaHei']

plt.rcParams['axes.unicode_minus'] = False

plt.rcParams["grid.linestyle"] =(3, 5)

plt.plot(data_index_p, color='tomato',linewidth=3)

plt.show()

# 登出系统

bs.logout()

如需代码里面用到的指数估值数据或者有疑问,大家可以留言,欢迎拍砖^_^

课程参考:网易云课堂  基于Python的量化指数基金投资

相关文章

网友评论

      本文标题:基于Python的指数基金量化投资——指数数据获取

      本文链接:https://www.haomeiwen.com/subject/mkrozltx.html