A-SHARE · ETF · DAILY EVENT ENGINE
TuAlpha
把中国市场的交易约束、Point-in-time 数据和可复现的本地数据工程,收束进一套清晰的日频回测 API。
D → D+1收盘决策,次日成交
Parquet按年分区的事实数据
DuckDB投影、裁剪与质量检查
Pandas 3Python 3.12 原生支持
为中国日频市场而设计¶
TuAlpha 是面向 A 股股票和 ETF 的事件驱动回测框架。策略在交易日 D 读取截至当日的数据并提交订单,订单最早在 D+1 的开盘或收盘端点成交。框架统一处理 T+1、停牌、涨跌停、交易单位、现金、佣金、印花税和过户费。
可信时序
财务数据按公告日可见,指数成分使用严格早于回调日的最新快照;历史前复权不依赖回测结束日。
本地数据层
Tushare 数据写入年度 Parquet,DuckDB 提供查询,DataPortal 使用 Arrow 与 NumPy 列缓存支撑策略热路径。
原子更新
增量更新只下载缺失的表和交易日,在 staging 中构建新 generation,校验通过后才替换活动 Bundle。
可解释结果
输出回测绩效与归因,也可计算 IC、RankIC、分位收益并生成中文 Plotly 因子报告。
最短路径¶
uv add tualpha
export TUSHARE_TOKEN="your-token"
uv run tualpha build --from 20100101
随后从一个单资产策略开始:
from tualpha import order_target_percent, run_algorithm, symbol
def initialize(context):
context.asset = symbol("510300.SH")
def handle_data(context, data):
closes = data.history(context.asset, "close", 20).dropna()
if len(closes) == 20 and data.can_trade(context.asset):
order_target_percent(
context.asset,
0.95 if closes.iloc[-1] > closes.mean() else 0.0,
)
result = run_algorithm(
start="2020-01-01",
end="2026-08-25",
initialize=initialize,
handle_data=handle_data,
adjustment="qfq",
execution_time="open",
output_dir="outputs/ma20",
)
继续阅读¶
- 快速开始:安装、数据准备和第一次运行;
- 策略开发:D/D+1、订单、行情、PIT 和性能规则;
- 因子研究:表达式算子、PIT 资产池、IC/RankIC 与报告;
- 数据管理:全量构建、增量更新、查询与质检;
- 架构说明:核心模块、事件循环和发布路径;
- Bundle 格式:物理分区、Catalog、manifest 和完整性协议。
研究用途
TuAlpha 只用于量化研究、软件开发与回测验证,不构成投资建议。历史回测结果不代表未来收益。