用Python和efinance构建个人量化交易数据管道的实战指南
当你想尝试量化交易时,第一个拦路虎往往是数据获取。市面上的专业数据接口要么价格昂贵,要么申请流程复杂。而efinance这个轻量级Python库,恰好填补了这个空白。本文将带你从零开始,用不到50行代码搭建一个完整的金融数据采集与分析系统。
1. 环境配置与基础数据获取
首先确保你的Python环境在3.6以上,安装efinance只需一行命令:
bash复制pip install efinance --upgrade
获取个股历史行情数据是量化分析的基础。以贵州茅台(600519)为例:
python复制import efinance as ef
# 获取近一年的日K线数据
df = ef.stock.get_quote_history('600519', klt=101) # klt=101表示日线
print(df[['日期', '开盘', '收盘', '最高', '最低', '成交量']].head())
常见参数说明:
klt: 周期类型(101=日线, 60=60分钟, 15=15分钟等)start_date: 开始日期(格式'YYYY-MM-DD')end_date: 结束日期
数据质量检查要点:
- 检查是否有缺失日期(特别是节假日)
- 验证复权因子是否正确
- 核对成交量单位(手 vs 股)
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 多资产类别数据整合
efinance支持股票、基金、债券、期货四大类资产数据。下面是一个统一的数据获取函数示例:
python复制def get_finance_data(code, asset_type='stock', **kwargs):
"""
通用金融数据获取函数
:param code: 标的代码
:param asset_type: 资产类型(stock/fund/bond/futures)
:param kwargs: 各接口特有参数
:return: pd.DataFrame
"""
if asset_type == 'stock':
return ef.stock.get_quote_history(code, **kwargs)
elif asset_type == 'fund':
return ef.fund.get_quote_history(code, **kwargs)
elif asset_type == 'bond':
return ef.bond.get_realtime_quotes(code, **kwargs)
elif asset_type == 'futures':
