3. 核心概念:因子(Factor)、评分(Score)、时间窗口(Window)、快照(Snapshot)的定义与关系
在低延迟因子评分接口中,因子、评分、时间窗口与快照构成了数据模型与业务逻辑的四大支柱。理解这四者的定义及其相互关系,是正确使用 API 进行量化策略开发的前提。
3.1 因子(Factor)
因子是描述某一资产在特定维度上特征的量化指标。它是评分计算的最小数据单元,通常由原始行情数据经过数学变换或统计计算得出。
- 原子性:每个因子代表一个独立的特征维度,如“过去5日收益率”、“市盈率”、“波动率”等。
- 可计算性:因子值必须能够通过确定的算法从市场数据中实时或准实时计算得到。
- 标识性:每个因子拥有全局唯一的
factor_id,用于在 API 请求中引用。
因子示例:
{
"factor_id": "momentum_5d",
"name": "5日动量因子",
"type": "price_momentum",
"description": "基于过去5个交易日收盘价计算的简单动量"
}
3.2 评分(Score)
评分是因子值经过标准化、加权或模型映射后得到的综合数值,用于直接比较不同资产在同一维度上的相对强弱。评分通常归一化到特定区间(如 0~100 或 -1~1)。
| 属性 | 说明 | 示例值 |
|---|---|---|
| score_value | 评分数值,通常为浮点数 | 78.5 |
| rank | 在全市场或指定股票池中的排名 | 125 |
| percentile | 百分位排名(0~100) | 92.3 |
| z_score | 标准化后的 Z 值 | 1.45 |
3.3 时间窗口(Window)
时间窗口定义了因子计算所回溯的历史数据长度。它是连接原始行情与因子值的时间维度参数,直接影响因子的敏感度与稳定性。
- 固定窗口:如“过去20个交易日”、“过去60分钟”。窗口长度固定,滑动前进。
- 事件窗口:以特定事件(如财报发布、分红除权)为中心,向前或向后取固定长度。
- 衰减窗口:对历史数据赋予指数衰减权重,越近的数据权重越大。
窗口选择建议:短窗口(如 5 日)对市场变化反应灵敏,但易受噪声干扰;长窗口(如 60 日)信号平滑,但存在滞后。实际应用中常组合多窗口因子。
3.4 快照(Snapshot)
快照是某一时刻所有因子值与评分值的完整状态记录。它代表了系统在特定时间点的“数据视图”,是 API 返回结果的基本单位。
| 快照属性 | 描述 |
|---|---|
| snapshot_id | 全局唯一快照标识,用于缓存与去重 |
| timestamp | 快照生成时间(纳秒精度) |
| asset_list | 该快照包含的资产列表 |
| factor_values | 每个资产在各因子上的原始值 |
| score_values | 每个资产在各评分模型上的最终评分 |
3.5 四者关系
因子、评分、时间窗口与快照之间的关系可以概括为:时间窗口作用于原始行情数据,计算得到因子值;多个因子通过评分模型映射为评分;某一时刻所有因子与评分的完整集合构成一个快照。
3.6 数据流示例
以下代码展示了一个完整的因子评分请求与响应流程,直观体现四者在 API 调用中的角色:
// 请求:指定时间窗口与因子列表
POST /v1/scores
{
"window": {
"type": "rolling",
"length": 20,
"unit": "day"
},
"factors": ["momentum_5d", "volatility_20d", "pe_ratio"],
"assets": ["AAPL", "MSFT", "GOOGL"]
}
// 响应:返回一个快照,包含因子值与评分
{
"snapshot_id": "snap_20250321_143052_001",
"timestamp": "2025-03-21T14:30:52.123456789Z",
"scores": [
{
"asset": "AAPL",
"factor_values": {
"momentum_5d": 2.35,
"volatility_20d": 0.18,
"pe_ratio": 28.5
},
"score_value": 82.3,
"rank": 45
},
// ... 更多资产
]
}
低延迟注意事项:快照生成时间戳必须使用高精度时钟(纳秒级),且快照 ID 应支持幂等性去重。在分布式系统中,同一时间窗口内的因子计算应保证数据一致性,避免因行情延迟导致快照内因子值时间错位。
3.7 概念对比总结
| 概念 | 本质 | 可变性 | API 中的角色 |
|---|---|---|---|
| 因子 | 特征指标 | 因子定义固定,值随行情变化 | 请求参数、响应字段 |
| 评分 | 综合排名 | 随因子值与模型参数变化 | 响应核心字段 |
| 时间窗口 | 计算范围 | 由请求指定,可动态调整 | 请求参数 |
| 快照 | 状态记录 | 生成后不可变(不可变性) | 响应容器、缓存单元 |
在实际系统中,时间窗口驱动因子的实时计算,因子经过模型引擎生成评分,而快照则作为一次完整计算结果的原子交付物。这种分层设计使得 API 既能灵活支持不同时间粒度的因子计算,又能保证评分结果的可追溯性与一致性。