c6ebab0e58f2622ff5642e71df207f0a848301ed
- 新增 8 个国泰君安 191 兼容的时间序列函数:ts_sma, ts_wma, ts_decay_linear, ts_argmax, ts_argmin, ts_count, ts_prod, ts_sumac - max_/min_ 函数智能路由:正整数参数自动调用 ts_max/ts_min 实现滚动窗口逻辑
ProStock
A股量化投资框架,用于量化股票投资分析。
特性
- 数据管理:Tushare API 行情数据获取,DuckDB 本地数据存储
- 因子引擎:DSL 表达式驱动的高性能因子计算框架(基于 Polars)
- 机器学习:支持 LightGBM 回归和 LambdaRank 排序学习
- 组件化设计:灵活的数据处理器、股票池管理、过滤器组合
环境要求
- Python 3.10+
- uv 包管理器
安装
# 克隆项目
cd ProStock
# 使用 uv 安装依赖
uv pip install -e .
配置
创建 config/.env.local 文件:
# Tushare Token(必需)
TUSHARE_TOKEN=your_token_here
# 数据存储路径(可选,默认 data/)
DATA_PATH=data
# API 速率限制(可选,默认 100)
RATE_LIMIT=100
# 并发线程数(可选,默认 10)
THREADS=10
快速开始
1. 同步股票数据
from src.data.sync import sync_all
# 增量同步(默认)
sync_all()
# 强制全量同步
sync_all(force_full=True)
# 自定义线程数
sync_all(max_workers=20)
2. 计算因子
from src.factors import FactorEngine
# 初始化引擎
engine = FactorEngine()
# 添加因子(推荐使用字符串表达式)
engine.add_factor("ma20", "ts_mean(close, 20)")
engine.add_factor("alpha", "cs_rank(ts_mean(close, 5) - ts_mean(close, 20))")
# 计算因子值
result = engine.compute(["ma20", "alpha"], "20240101", "20240131")
3. 训练模型
from src.training import Trainer, DateSplitter, StockPoolManager
from src.training.components.models import LightGBMModel
# 创建模型
model = LightGBMModel(params={
"objective": "regression",
"num_leaves": 20,
"learning_rate": 0.01,
"n_estimators": 1000,
})
# 创建数据划分器
splitter = DateSplitter(
train_start="20200101",
train_end="20231231",
val_start="20240101",
val_end="20241231",
test_start="20250101",
test_end="20251231",
)
# 创建训练器并训练
trainer = Trainer(
model=model,
splitter=splitter,
target_col="future_return_5",
feature_cols=["ma_5", "ma_20", "volume_ratio"],
)
trainer.train(data)
results = trainer.get_results()
项目结构
ProStock/
├── src/
│ ├── config/ # 配置管理
│ ├── data/ # 数据获取与存储
│ │ ├── api_wrappers/ # Tushare API 封装
│ │ ├── storage.py # DuckDB 存储
│ │ └── sync.py # 数据同步调度
│ ├── factors/ # 因子计算框架
│ │ ├── engine/ # 执行引擎
│ │ ├── metadata/ # 因子元数据管理
│ │ ├── dsl.py # DSL 表达式层
│ │ └── translator.py # Polars 翻译器
│ └── training/ # 训练模块
│ ├── core/ # 训练核心
│ └── components/ # 组件(模型、处理器、过滤器)
├── tests/ # 测试文件
├── data/ # 数据存储
└── docs/ # 文档
因子框架
支持的函数
时间序列函数 (ts_*):
ts_mean,ts_std,ts_max,ts_min,ts_sumts_delay,ts_deltats_corr,ts_cov,ts_rank
截面函数 (cs_*):
cs_rank- 截面排名cs_zscore- Z-Score 标准化cs_neutralize- 行业/市值中性化cs_winsorize- 缩尾处理
数学函数:
log,exp,sqrt,sign,absmax_,min_,clipif_,where
因子元数据管理
from src.factors.metadata import FactorManager
# 初始化管理器
manager = FactorManager()
# 添加因子
manager.add_factor({
"factor_id": "F_001",
"name": "mom_5d",
"desc": "5日价格动量",
"dsl": "cs_rank(close / ts_delay(close, 5) - 1)",
"category": "momentum",
})
# 查询因子
df = manager.get_factors_by_name("mom_5d")
常见任务
# 运行所有测试
uv run pytest
# 同步财务数据
uv run python -c "from src.data.api_wrappers.financial_data import sync_financial; sync_financial()"
# 批量注册因子
uv run python src/scripts/register_factors.py
依赖项
- pandas >= 2.0.0
- polars >= 0.20.0
- numpy >= 1.24.0
- tushare >= 2.0.0
- pydantic >= 2.0.0
- lightgbm >= 4.0.0
- pytest
文档
更多详细信息请参阅 docs/ 目录:
许可证
MIT
Description
Languages
Python
88.9%
Jupyter Notebook
11.1%