阅读提示
这篇是系列的”总纲”,目的是让你对 Betalens 有一个宏观的框架感——它由哪几块组成、数据怎么流动、以及它解决的问题域。如果你只想快点跑出第一个策略,可以先跳到 02 篇,之后再回来读这一篇。
导言:为什么需要一个量化研究框架
在 Betalens 出现之前,一个典型的 A 股量化研究流程大概是这样的:
- 用 Python 脚本从万得/Tushare/聚源拉数据,导出成 CSV / Parquet。
- 用 pandas/numpy 做因子计算,分组、回测、画图各自写一堆脚本。
- 数据格式不统一、因子命名随意、回测逻辑散落在各处,时间久了连自己都看不懂。
- 想和别人协作?对方得先理解你那堆”仅供参考”的 notebook。
Betalens 的目标,就是把这一套散装的流程封装成一个有 Opinionated 约定的框架:数据统一入库、因子走同一套 API、回测结果有标准格式、绩效报告一键导出。代价是你得接受它的约定——但好处是,你再也不需要重复造那些轮子了。
Betalens 在整个研究链条中的位置
把量化研究拆解成几个环节:
1 | 数据采集 → 数据清洗/入库 → 因子构建 → 分组回测 → 绩效评价 → 结果展示 |
Betalens 覆盖的,是从因子构建到结果展示这一段。数据采集和清洗由 betalens_db_manager 负责(入库);因子构建、回测、评价、展示,全在框架内部闭环。
具体来说,Betalens 包含以下几个模块:
| 模块 | 核心职责 |
|---|---|
datafeed |
从 PostgreSQL 查询交易日历、可交易池、财务因子、交易状态 |
factor |
可交易池、分组(单/双/多因子)、预处理、去极值/中性化、IC 统计、参数挖掘 |
backtest |
目标权重 → 日频净值,整手成交,停牌处理,调仓审计 |
analyst |
从回测结果生成指标表、Excel 报告、plotly 交互 HTML |
eventstudy |
事件窗口收益分析(单标的/多标的平均/超额/固定持有期) |
robust |
Lucky Factors 风格的因子增量稳健性检验 |
dashboard |
FastAPI + React/Vite 浏览器界面,因子发现、参数配置、运行结果下载 |
架构全图
一张图说清数据是怎么在 Betalens 里流动的:
1 | flowchart TD |
几个关键约定:
- 所有因子数据都存在 PostgreSQL 里,
datafeed是唯一的查询入口。 - 权重矩阵的行是调仓日(
DatetimeIndex),列是证券代码,必须补一列cash。多头合计 1、空头合计 -1。 - 回测真正用的是
engine.actual_weight,不是输入的目标weight——因为停牌、整数手等原因,输入的权重会被框架调整。 - 分组函数不叫
single_factor,而叫single_characteristic(同理有double_characteristic、multi_characteristic)。这是最容易踩的命名坑。
Betalens 和其他工具的区别
| Betalens | FactorPlus / JQData | 自建 notebook | |
|---|---|---|---|
| 数据源 | PostgreSQL(自建) | 万得/Tushare API | 手动拉取 |
| 因子管理 | YAML 配置 + 管线 | 脚本 | 散落各处 |
| 回测 | 整数手/停牌/审计日志全有 | 部分支持 | 自行实现 |
| 绩效报告 | 一键 Excel/HTML | 部分支持 | 自行实现 |
| Dashboard | 有(浏览器) | 无 | 无 |
| 学习成本 | 中(框架约定多) | 低 | 无 |
Betalens 不是银弹,但它让你在”做完一个因子”之后,能快速验证第二个、第三个,不用每次都从零搭架子。
开发者侧:目录结构速查
如果你想参与 Betalens 本身的开发,记住以下目录布局:
1 | betalens/ |
最高约束:除非你明确说”我要启动开发者模式”,Betalens 的核心代码(betalens/ 包内部)不在日常研究中被修改范围内。这个约定保证了框架的稳定性。
常见误解
- “Betalens 会帮我找因子。” 不会。Betalens 是研究基础设施,因子逻辑需要你自己写(或从研报中复现),Betalens 负责让你跑得快、跑得规范。
- “数据存在 CSV 里可以用 Betalens 吗?” 不行。所有数据必须先入库到 PostgreSQL,用
betalens_db_manager导入。 - “回测结果漂亮就能实盘赚钱。” 不能。回测只是验证你的逻辑假设,实盘有滑点、流动性冲击、执行偏差等 Betalens 模拟不到的因素。
延伸阅读
- 项目 README:安装与快速开始。
docs/guide/datafeed.rst~docs/guide/robust.rst:10 个专题指南。- 02 篇:五分钟跑通”股息率多空”:跟着 quickstart 走一遍。