📊 量化研究员入门 · 从零到一

📡 数据源与数据获取
📚 模块 4 数据工程基础
🎯 难度 ⭐⭐ 入门
🧰 核心工具 Wind · Bloomberg · Tushare · API

🌟 数据是量化研究的血液。掌握主流金融数据源、API 调用以及清洗存储,是搭建研究流水线的第一步。

📡 常见金融数据源 Wind · Bloomberg · Tushare · 更多
数据源类型覆盖范围特点 / 适用场景
Wind (万得)国内机构级A股、港股、期货、基金、宏观国内量化机构首选,API 丰富,数据质量高
Bloomberg国际机构级全球股票、固收、外汇、衍生品金融数据标准,但成本高,适合跨境策略
Tushare开源/社区A股、指数、基金、数字货币免费/低门槛,适合个人研究,需积分
Quandl / Nasdaq国际公开宏观经济、另类数据学术与另类数据,部分免费
聚宽 / 米筐量化平台A股、期货、期权内置回测,数据与策略一体化
⚙️ API 调用基础 RESTful · Python 实战

📌 以 Tushare 为例,展示标准 API 调用流程:

# 安装: pip install tushare
import tushare as ts

# 设置 token (注册后获取)
ts.set_token('你的tushare_token')

# 初始化接口
pro = ts.pro_api()

# 获取日线行情 (平安银行)
df = pro.daily(ts_code='000001.SZ', start_date='20250101', end_date='20250320')
print(df.head())

# 返回 pandas DataFrame,可直接分析
🔑 API Key 管理
📦 请求参数 (params)
🔄 重试 & 限速
🧪 测试环境 Sandbox

⚡ 进阶:使用 requests 库调用通用 REST API,解析 JSON 并转为 DataFrame。

🧹 数据清洗与存储 标准化 · 持久化

原始数据通常包含缺失值、格式不一致、幸存者偏差等。清洗是量化研究的基石。

步骤常见操作Python 工具
1. 缺失值处理向前填充 / 插值 / 删除df.ffill() / df.interpolate()
2. 格式统一日期转为 datetime,数值类型转换pd.to_datetime() / astype()
3. 去重 & 排序按时间、代码去重,防止重复数据df.drop_duplicates()
4. 异常值过滤涨跌停、价格异常、量异常条件筛选 / 分位数截断
5. 存储Parquet / HDF5 / CSV / 数据库df.to_parquet() / SQLAlchemy
# 清洗示例 (Tushare 数据)
import pandas as pd

# 假设 df 为原始日线数据
df['trade_date'] = pd.to_datetime(df['trade_date'])
df.sort_values(['ts_code', 'trade_date'], inplace=True)

# 前向填充缺失的涨跌幅
df['pct_chg'].fillna(method='ffill', inplace=True)

# 剔除退市/停牌 (成交量=0)
df = df[df['vol'] > 0]

# 存储为 parquet (压缩, 快速)
df.to_parquet('stock_daily.parquet', index=False)
📐 数据流水线架构 从源到策略
📡 数据源 Wind / Bloomberg ⚙️ API 调用 REST / SDK Token 认证 🧹 清洗 & 对齐 缺失值 · 格式 去重 · 异常过滤 💾 存储 Parquet / DB 📈 量化策略 数据源 API 清洗 存储

⬆️ 典型量化数据流水线:从原始数据到策略就绪

📌 数据存储选型建议

  • Parquet:列式存储,压缩高,适合量化因子/行情,推荐。
  • HDF5:适合大量时间序列,但注意锁问题。
  • SQLite / PostgreSQL:适合元数据、交易记录。
  • CSV:仅用于临时交换,不推荐生产。