12行代码在优矿上获取所有可转债历史数据

如何用12行代码获取到所有可转债的历史数据呢?

老实说,我之前为了拿到可转债的历史数据可以说是翻遍了全网,居然都没有看到一个讲具体操作的,也罢,求人不如求己,就自己来吧。

分析过程
编写代码首先要理清楚思路。获取可转债历史数据其实可以分为以下几个步骤,这里又要安利一波优矿,每个步骤都有对应的api可以直接拿来用。

1,获取历史上的每个交易日;

cal=DataAPI.TradeCalGet(exchangeCD=u"XSHG",beginDate=start_date,endDate=end_date,isOpen=u"1",field=u"calendarDate",pandas="1")['calendarDate']

2,获取每个交易日的可转债指数组成,也就是每个可转债的名称;

bond=DataAPI.IdxConsGet(ticker=u"000832",intoDate=date,field=u"",pandas="1")['consID']

3,根据可转债名称获得对应的信息。

cb=DataAPI.MktConsBondPerfGet(beginDate=date,endDate=date,secID=tmp_ID,tickerBond=u"",tickerEqu=u"",field=u"",pandas="1")

然后把这三部分组合起来就好了,是不是很简单。

为了方便大家学习,还是把完整代码列出来,其实写出来一共也就12行,我已经写了注释,很简单易懂。

import pandas as pd
def get_bond(date):# 获取某日可转债指数000832所有成分
bond=DataAPI.IdxConsGet(ticker=u"000832",intoDate=date,field=u"",pandas="1")['consID']
tmp_ID=list(bond.values)
cb=DataAPI.MktConsBondPerfGet(beginDate=date,endDate=date,secID=tmp_ID,tickerBond=u"",tickerEqu=u"",field=u"",pandas="1") 
print(cb)          
def get_tradeDate(start_date,end_date):# 获取开始和结束日期中的交易日  
cal=DataAPI.TradeCalGet(exchangeCD=u"XSHG",beginDate=start_date,endDate=end_date,isOpen=u"1",field=u"calendarDate",pandas="1")['calendarDate']
for date in cal:
    print(date)
    get_bond(date)     
cal=get_tradeDate('20220722','20220722')# 开始和结束日期 


但是很可惜,优矿的可转债历史数据项目不如集思录的数据丰富,有些正股相关的数据需要进一步编写代码才能获得。
以下是优矿可以直接得到的数据字段:
可转债通用交易代码
可转债简称
正般通用交易代码
正股简称
交易日期
发行额(亿元)
剩余规模(亿元)
转债价格
转股价格
正股价格
赎回价格
可转债今日涨跌
可转债最近一周涨幅
转股溢价率
纯债价值
纯债溢价率
特别向下修正条款
到期赎回条款
有条件赎回条款

今年的数据2分钟就能跑完,想获取其他时间的数据只需要更改最后一行的起始日期就可以了。
拿到数据之后可以做的事情就多了,可以拿来随心所欲搭建各种策略并回测。
0

dhzwcnm1000c

赞同来自:

感谢分享,用 cal.to_csv('archive') 保存数据,会显示AttributeError: 'NoneType' object has no attribute 'to_csv' 请问要怎么解决,万分感谢
2023-03-23 16:32 来自浙江 引用

要回复问题请先登录注册

发起人

问题状态

  • 最新活动: 2023-03-24 15:41
  • 浏览: 4708
  • 关注: 47