金融工程--基于akshare的数据获取

背景

在进行金融工程和量化交易的时候,如何获取准确的数据来为我们模型和后期的判断提供支撑和依据成为了比较关键的一个点。对这个问题有几个方面的要求。第一,获取的数据的准确性,第二,大批量数据获取的接口稳定程度,第三,对于分钟和秒级别频率的实时支持程度。

API接口对比

名称TuShareAKShareEfinanceQstock
是否收费部分接口收费开源开源开源
数据来源新浪、东财新浪、东财东财东财
实时K线VVVV
历史K线不支持分钟K线VVV
基本面数据VVX部分支持
板块数据VVXV
特色数据VVXX
说明文档VVVX

对比四种不同的框架获取K线数据的速度

import tushare as ts
import akshare as ak
import efinance as ef
import qstock as qs
import time

token = '你的token'

def tushare_stock_history():
	pro = ts.pro_api(token)
	return pro.daily(ts_code='000651.SZ')

def akshare_stock_history():
	return ak.stock_zh_a_hist(symbol="000651", period="daily")

def efinance_stock_history():
	return ef.stock.get_quote_history('000651')

def qstock_stock_history():
	return qs.get_data('000651')

def default():
	pass

stockDataSourceDict = {
	"tushare": tushare_stock_history,
	"akshare": akshare_stock_history,
	"efinance": efinance_stock_history,
	"qstock": qstock_stock_history
}

def getStockDataSoucre(source):
	fun = stockDataSourceDict.get(source, default)
	return fun()

# 任务:比较四个框架的日线行情接口返回数据时间
if __name__ == '__main__':
	# 获取开始时间
	start = time.perf_counter()
	getStockDataSoucre("qstock")
	# 结束时间
	end = time.perf_counter()
	runTime = round(end - start, 2)
	print(f"运行时间:{runTime} ,秒")

关于其中的token获取方式需要通过tushare官网获取
在这里插入图片描述
注意目前tushare这个框架对于权限的要求较高,可以理解为会员,详细解释在这里插入图片描述

akshare基本操作

因此主要使用akshare作为主要的数据获取框架和接口。
下面使用akshare实现分钟级别的数据获取:

'''
获取分钟实时数据 以30分钟为例
'''
ak_hist_df = ak.stock_zh_a_hist_min_em(symbol='000651',
									   start_date='2023-05-04 10:30:00',
									   end_date='2023-06-02 15:00:00', period='30')
# print(ak_hist_df)
ef_hist_df = ef.stock.get_quote_history(stock_codes='000651', beg='20230504', end='20230602', klt=30)
print(ef_hist_df)

实时行情数据

# 实时行情数据-东财
# 沪深京 A 股
# http://quote.eastmoney.com/center/gridlist.html#hs_a_board
import akshare as ak
 
# 实时行情数据-东财
# 沪深京 A 股
# 单次返回所有沪深京 A 股上市公司的实时行情数据
def em_spot():
    stock_zh_a_spot_em_df = ak.stock_zh_a_spot_em()
    print(stock_zh_a_spot_em_df)
 
 
# 实时行情数据-东财
# 沪 A 股
# http://quote.eastmoney.com/center/gridlist.html#sh_a_board
def em_sha_spot():
    stock_sh_a_spot_em_df = ak.stock_sh_a_spot_em()
    print(stock_sh_a_spot_em_df)
 
 
# 实时行情数据-东财
# 深 A 股
# http://quote.eastmoney.com/center/gridlist.html#sz_a_board
def em_sza_spot():
    stock_sz_a_spot_em_df = ak.stock_sz_a_spot_em()
    print(stock_sz_a_spot_em_df)
 
 
# 实时行情数据-东财
# 京 A 股
# http://quote.eastmoney.com/center/gridlist.html#bj_a_board
def em_bja_spot():
    stock_bj_a_spot_em_df = ak.stock_bj_a_spot_em()
    print(stock_bj_a_spot_em_df)
 
 
# 实时行情数据-东财
# 新股
# http://quote.eastmoney.com/center/gridlist.html#newshares
def em_new_spot():
    stock_new_a_spot_em_df = ak.stock_new_a_spot_em()
    print(stock_new_a_spot_em_df)
 
 
# 实时行情数据-东财
# 科创板
# http://quote.eastmoney.com/center/gridlist.html#hs_a_board
def em_kc_spot():
    stock_kc_a_spot_em_em_df = ak.stock_kc_a_spot_em()
    print(stock_kc_a_spot_em_em_df)
 
 
# 实时行情数据-新浪
# http://vip.stock.finance.sina.com.cn/mkt/#hs_a
def xl_a_spot():
    stock_zh_a_spot_df = ak.stock_zh_a_spot()
    print(stock_zh_a_spot_df)

参考文献

akshare官网文档

### 使用 Akshare获取金融数据 #### 获取期货数据 为了帮助用户快速上手并减少学习成本,下面展示一段用于下载中国商品期货主力合约行情的 Python 代码示例[^1]: ```python import akshare as ak # 获取指定日期范围内的螺纹钢主力连续日线行情 futures_df = ak.futures_main_sina(symbol="RB", start_date="2023-01-01", end_date="2023-09-01") print(futures_df.head()) ``` 此段代码能够返回给定时间段内特定品种(此处以螺纹钢为例)的日K线记录。 #### 获取股票数据 对于希望取得A股市场个股历史交易详情的情况,则可参照如下脚本片段来实现目标[^2]: ```python import akshare as ak # 获取某只沪深两市上市公司的每日收盘价等基本信息 stock_daily_data = ak.stock_zh_a_hist(symbol='600519', adjust="") print(stock_daily_data.tail()) # 显示最近几天的数据 ``` 这里选取了贵州茅台(证券代码: 600519)作为示范对象;`adjust=""`参数表示不作复权处理。如果需要前复权或后复权的价格序列,只需相应地设置为 `"qfq"` 或者 `"hfq"` 即可。 #### 获取指数成分股及其权重信息 另外,在某些应用场景下可能还会涉及到追踪某个具体指数的表现情况以及其构成部分的具体占比关系等问题。此时可以通过调用 `index_stock_cons_cicc` 函数轻松达成目的: ```python import akshare as ak # 查询中证500当前最新的样本股名单连同各自的比重数值 csi_500_weights = ak.index_stock_cons_cicc(index_code="000905") print(csi_500_weights[['con_code','i_weight']]) ``` 上述命令将会打印出最新一期公布的中证500指数成员列表及对应权重比例表单中的部分内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值