《量化交易入门》第 2 章:数据从哪里来——行情、财务与免费 API
上一章我们写了第一个”量化策略”——10 行代码判断均线信号。当时用的价格是我手敲的模拟数据。这一章解决真问题:真实的行情、财务数据从哪来? 怎么免费拿到手、拿回来之后怎么读进 Python?顺便把初学者最容易踩的数据坑提前给你排掉。
2.1 量化需要什么样的数据
先搞清楚要什么,再去想从哪拿。量化的”原料”大概分三类:
- 行情数据:价格和成交量。最基本的是 OHLCV——Open(开盘)、High(最高)、Low(最低)、Close(收盘)、Volume(成交量)。大部分策略只需要这一组字段。
- 财务数据:营收、净利润、毛利率、负债率等。做”价值/基本面”策略要用,做短线技术策略可以暂时不管。
- 另类数据:新闻情绪、资金流、龙虎榜、宏观指标等。属于进阶玩法,入门阶段先跳过。
对新手来说,行情数据是最重要的,也是最容易免费拿到的。本章先把这块吃透。
2.2 免费数据源盘点
别一上来就想着买 Wind(一年几万块)。做学习研究和入门策略,免费渠道完全够用:
| 数据源 | 覆盖 | 特点 | 上手难度 |
|---|---|---|---|
| akshare | A股/港美股/期货/基金/宏观 | 接口多、更新快、纯免费 | ⭐ 最推荐 |
| baostock | A股(含历史全量) | 历史数据全、稳定免费、无需注册 | ⭐⭐ |
| tushare | A股为主 | 功能强,但新接口要积分 | ⭐⭐⭐ |
| yfinance | 美股/全球 | 海外数据好用,国内偶尔抽风 | ⭐⭐ |
| 东方财富/新浪 | A股实时 | 网页接口,需要一点爬虫基础 | ⭐⭐⭐ |
我的建议:入门只用 akshare——pip install akshare 装好,一句话就能拉数据,而且不用注册、不用积分。等以后需要更专业的接口再考虑别的。
2.3 代码示例:把行情数据读进 Python
不管数据从哪个源来,最终形态大多是一张”表格”(日期、开盘、最高、最低、收盘、成交量),存成 CSV 或者直接在内存里。我们先用 Python 标准库读一个 CSV——这段代码不需要装任何第三方库,复制就能跑:
import csv
# 模拟的行情 CSV(你也可以换成真实数据文件)data = """date,open,high,low,close,volume2026-09-01,10.00,10.50,9.90,10.20,1200002026-09-02,10.20,10.80,10.10,10.60,1500002026-09-03,10.60,11.00,10.40,10.80,1800002026-09-04,10.80,11.20,10.70,11.00,1600002026-09-05,11.00,11.50,10.90,11.30,200000"""
rows = list(csv.DictReader(data.splitlines()))closes = [float(r["close"]) for r in rows]
print("收盘价列表:", closes)print("平均收盘价:", round(sum(closes) / len(closes), 2))print("区间涨跌幅:", round((closes[-1] / closes[0] - 1) * 100, 2), "%")运行结果:
收盘价列表: [10.2, 10.6, 10.8, 11.0, 11.3]平均收盘价: 10.78区间涨跌幅: 10.78 %看到了吗?有了真实数据的”骨架”(日期+OHLCV),上一章的均线判断就能直接套上来。 以后我们只需要把”数据来源”换成 akshare,后面的计算逻辑完全不用改——这就是把”数据”和”策略”分开的好处。
2.4 进阶:一行代码拉真实数据
等你看完第 3 章(Python 基础)再回来试这个。装好 akshare 后,拉一只股票一年的日线就一句话:
# pip install akshare (需要先安装)import akshare as ak
df = ak.stock_zh_a_hist( symbol="600519", # 股票代码,这里是贵州茅台 period="daily", # 日线 start_date="20250901", end_date="20260930", adjust="qfq" # 前复权,见 2.5)print(df.tail()) # 看最后几行print("共", len(df), "行数据")返回的 df 是一张 pandas 表格(日期、开盘、收盘、最高、最低、成交量……),跟 2.3 的 CSV 结构一模一样,只是来源变成了真实的交易所数据。
2.5 数据质量的坑(新手必踩)
数据拿到手只是开始,用错数据比没数据更危险。这仨坑几乎人人踩过:
- 复权问题(最坑):股票分红送股后,价格会”跳空”。比如茅台 10 送 1,股价从 1000 突然变成 909,但你的钱没少。如果直接拿不复权数据算均线,策略会以为股价暴跌。做历史回测必须用”前复权(qfq)“数据,把历史价格统一到现在的口径。
- 停牌与退市:A 股股票可能停牌几个月,退市的股票历史数据也会消失。如果你的策略有”股票池”,一定要处理”这天没数据”的情况,否则程序直接报错。
- 数据缺失与脏数据:免费源偶尔会有空值、错误值。拿到数据先检查:有没有 NaN?日期是不是连续?成交量有没有为 0 的怪值?
入门阶段的心法:宁可用数据量少但干净的数据,也不要脏数据——后面第 5 章回测时你会深刻体会这句话。
2.6 本章小结
- 量化三大原料:行情、财务、另类数据;入门主攻行情(OHLCV)
- 免费数据源首选 akshare,研究学习完全够用
- CSV 读取是通用技能,标准库就能搞定,数据与策略要解耦
- 数据三坑:前复权、停牌退市、缺失脏数据——回测前必查
下一章,我们花一章把 Python 基础(交易版) 补齐:变量、列表、循环、函数——只教你后面真正用得上的那部分,不讲废话。
📚 《量化交易入门》系列:零基础小白向量化交易,每章一个主题 + 可运行 Python 示例。第 2 章已读,下一章《Python 基础(交易版)》明天见。