Python 量化入门:从 akshare 到依瓦API获取数据
Python量化入门|从 AkShare 到依瓦 API 获取数据
这节课学什么
本节不是教你背接口,而是建立一条可靠的数据获取流程:发起请求、检查状态、解析字段、校验主键与日期、处理分页、保存研究快照。完成后,你应能把公开数据源和依瓦API的数据转换为统一的 pandas DataFrame,并知道两者适合什么场景。
两类数据入口怎么选
AkShare适合学习和快速探索,接口覆盖广,但公开数据源结构可能变化;平台API适合按权限获取标准化目录中的数据,通常具有更明确的字段、分页和调用约束。研究代码应把“数据访问层”和“因子计算层”分开,以便更换来源时不重写策略。
import requests
import pandas as pd
response = requests.get(
"https://你的服务地址/api/示例数据",
headers={"Authorization": "Bearer 你的访问令牌"},
params={"start_date": "2026-01-01", "end_date": "2026-01-31"},
timeout=30,
)
response.raise_for_status()
payload = response.json()
df = pd.DataFrame(payload.get("items", []))
df["trade_date"] = pd.to_datetime(df["trade_date"])
df = df.sort_values(["symbol", "trade_date"]).drop_duplicates(["symbol", "trade_date"])
示例中的地址、令牌和字段要替换为账户实际可用配置,不应把密钥写进代码仓库。正式脚本还要处理分页、限流、超时重试和空结果。
数据验收清单
检查返回行数是否符合日期范围,主键是否重复,交易日是否连续,价格是否大于零,成交量单位是否一致。随机抽取三个股票和三个交易日与源数据核对。保存时同时记录来源、请求参数、抓取时间和字段版本,否则以后无法解释同一实验为何得到不同结果。
练习任务
分别从两个入口获取同一只股票十个交易日的数据,统一列名为 symbol、trade_date、open、high、low、close、volume;按主键合并并计算收盘价差异。差异不为零时,检查复权方式、更新时间和单位,而不是直接覆盖。
本节学习方法
建议先完整阅读概念和公式,再按照实操步骤独立完成一次。不要直接复制最终结果:先记录数据范围、字段口径和预期现象,运行后对照检查。若结果不同,应从复权方式、交易日对齐、缺失值、可交易状态和费用假设逐项排查。每次练习保存代码版本、参数、运行日期和结果截图,形成可以复现的研究记录。
课后检查
- 能否用自己的话解释本节核心概念,而不是只背公式;
- 能否指出输入数据的主键、时间字段和单位;
- 能否让同一份代码在相同数据上得到一致结果;
- 能否解释结果的局限性,以及哪些变化会让结论失效;
- 能否区分研究结果、模拟结果与真实交易结果。
本课程用于量化研究方法学习,不构成个股推荐、收益承诺或投资建议。示例参数用于演示计算过程,不代表适合任何真实账户。