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

背景

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

API接口对比

名称 TuShare AKShare Efinance Qstock
是否收费 部分接口收费 开源 开源 开源
数据来源 新浪、东财 新浪、东财 东财 东财
实时K线 V V V V
历史K线 不支持分钟K线 V V V
基本面数据 V V X 部分支持
板块数据 V V X V
特色数据 V V X X
说明文档 V V V X

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

python 复制代码
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实现分钟级别的数据获取:

python 复制代码
'''
获取分钟实时数据 以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)

实时行情数据

python 复制代码
# 实时行情数据-东财
# 沪深京 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官网文档

相关推荐
俊俊谢10 小时前
【第一章】金融数据的获取——金融量化学习入门笔记
笔记·python·学习·金融·量化·akshare
极客数模15 小时前
【浅析赛题,一等奖水平】思路模型数据相关资料!2025 年“大湾区杯”粤港澳金融数学建模竞赛B 题 稳定币的综合评价与发展分析~
大数据·算法·数学建模·金融·数据挖掘·图论·1024程序员节
热心网友俣先生16 小时前
2025年大湾区杯粤港澳金融数模竞赛B题完整数据集分享
金融·区块链
小彭律师18 小时前
QCES项目Windows平台运行指南
深度学习·金融·科研·科研记录
量化交易曾小健(金融号)19 小时前
伯克利哈斯商学院的金融工程硕士(MFE)
金融
EagleTrader1 天前
EagleTrader交易员采访|用概率取代情绪,让交易回归理性
金融
希赛网1 天前
经济师中级《经济基础知识》考前重点速记:货币与金融
金融·货币与金融·经济师·财政·经济师考试
Ashlee_code1 天前
什么是TRS收益互换与场外个股期权:从金融逻辑到系统开发实践
大数据·人工智能·python·金融·系统架构·清算·柜台
一只小松许️2 天前
量化投资从入门到入土:金融基础概念
python·金融
DolphinDB智臾科技2 天前
DolphinDB × 浙江大学合作新课——量化金融:理论与应用
人工智能·金融·浙江大学·量化金融·dolphindb