美文网首页
基于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