可转债(英文翻译:convertible bond、convertible debenture或convertible note)。指公司发行的含有转换特征的债券。在招募说明中发行人承诺根据转换价格在一定时间内可将债券转换为公司普通股。转换特征为公司所发行债券的一项义务。可转换债券的优点为普通股所不具备的固定收益和一般债券不具备的升值潜力。
可转债具有债权和股权的双重特性。债权特性:与其他债券一样,可转换债券也有规定的利率和期限,投资者可以选择持有债券到期,收取本息。这也意味着购买可转债哪怕可转债下跌,也可以持有到期,实现保底。股权性:在转换成股票之前是纯粹的债券,但转换成股票之后,原债券持有人就由债权人变成了公司的股东,可参与企业的经营决策和红利分配,这也在一定程度上会影响公司的股本结构。这意味着如果股价上涨,可转债也会大幅上涨,上涨价格不封顶。可转债具有的债权和股权两种特性,也确保这个投资品种下跌可保底上涨不封顶。另外可转债可以转换成股票即具备可转换性,那么正股和对应的可转债必定存在价差,那么两者必然存在套利空间。再加上可转债实行的是T+0交易方式,可实现日内盘中交易。综上这些特性十分满足量化投资交易。
今天我们继续分享如何通过Akshare来获取沪深可转债数据,具体操作如下:
一、新浪财经沪深可转债实时行情
接口:bond_zh_hs_cov_spot
目标地址: 行情中心_新浪财经_新浪网
限量:单次返回所有沪深可转债的实时行情数据
二、新浪财经沪深历史行情数据
接口:bond_zh_hs_cov_daily
目标地址:http://biz.finance.sina.com.cn/suggest/lookup_n.php?q=sh110048(示例)
限量:单次返回具体某个沪深可转债的所有历史行情数据
输入参数:
输出参数:
三、东方财富获取可转债价值分析数据
接口:bond_zh_cov_value_analysis
目标地址: 可转债详细资料 _ 数据中心 _ 东方财富网
限量:单次返回所有可转债价值分析数据
输入参数:
输出参数:
四、获取沪深可转债历史数据
1.代码
import os import time import pandas as pd import akshare as ak import warnings from datetime import timedelta, datetime warnings.filterwarnings("ignore") pd.set_option('max_rows', None) pd.set_option('max_columns', None) pd.set_option('expand_frame_repr', False) pd.set_option('display.unicode.ambiguous_as_wide', True) pd.set_option('display.unicode.east_asian_width', True) # 利用新浪财经实时行情数据接口获取所有股票代码接口 df=ak.bond_zh_hs_cov_spot() code_list=df[['symbol','name']].values # 创建文件存储路径 def create_path(): global path path = os.path.join(".","all_stock_candle","stock") # 保存数据 if not os.path.exists(path) : # os.mkdir(path) # 可以建一级文件夹 os.makedirs(path) # 可以建多级文件夹 file_name = symbol + ".csv" return os.path.join(path,file_name) # 获取所有沪深可转债的历史数据 for symbol,ak_name in code_list: print(symbol,ak_name) df['可转债代码'] = symbol df['可转债名称'] = ak_name df.rename(columns={'日期': '交易日期', 'open': '开盘价', 'high': '最高价', 'low': '最低价', 'volume':'成交量'}, inplace=True) df=df[['交易日期','可转债代码','可转债名称','开盘价','最高价','最低价','收盘价','成交量','纯债价值','转股价值','纯债溢价率','转股溢价率']] df.sort_values(by=['交易日期'],ascending=True,inplace=True) df.reset_index(drop=True, inplace=True) path=create_path() df.to_csv(path, index=False, mode='w',encoding='gbk') time.sleep(2)
2.输出示例
3.文件存储示例
4.文件示例