在 BigQuant 量化交易平台中,其内置的算子(Operators)和聚合函数(Aggregation Functions)确实遵循一套清晰的命名约定,用于区分时序操作(Time Series Operations)和截面操作(Cross-Sectional Operations)。以下是详细说明:
**1. 时序相关算子和聚合函数:以 m 打头**
-
含义:
m代表 **Moving**(移动窗口)或 **Moment**(时序动量),用于处理**单个资产在时间维度上的计算**(例如:滚动窗口、历史序列分析)。 -
命名规则:
函数名以 **m_开头**(例如m_avg,m_std)。 -
典型场景:
计算单只股票的 5 日移动平均、20 日波动率等。 -
常见函数示例:
函数名 说明 示例用法 m_avg移动平均 m_avg(window=5)m_std移动标准差 m_std(window=10)m_sum移动求和 m_sum(window=20)m_max/m_min移动窗口最大值/最小值 m_max(window=30)m_delay时序延迟(滞后值) m_delay(periods=1)m_diff时序差分 m_diff(periods=1)m_prod移动连乘 m_prod(window=5) -
关键特点:
- 作用于单资产的时间序列(如
close价格序列)。 - 依赖窗口大小(
window参数),需指定历史数据长度。 - 返回结果与输入序列长度一致(滚动计算)。
- 作用于单资产的时间序列(如
✅ 验证:在 BigQuant 因子库中,所有时序操作函数均以
m_开头,这是平台的核心设计规范。
**2. 截面相关算子和聚合函数:以 c 打头**
-
含义:
c代表 **Cross-Sectional**(截面),用于处理**同一时间点上多资产的横向计算**(例如:全市场股票排名、行业标准化)。 -
命名规则:
函数名以 **c_开头**(例如c_rank,c_norm)。 -
典型场景:
计算某日所有股票的收益率排名、按行业中性化处理因子值等。 -
常见函数示例:
函数名 说明 示例用法 c_rank截面排名 c_rank()c_scale截面缩放(标准化到均值为0) c_scale()c_neutralize截面中性化(去除行业/市值影响) c_neutralize(group='industry')c_zscore截面 Z-Score 标准化 c_zscore()c_sum/c_mean截面求和/均值 c_sum()c_industry行业分组操作 c_industry(group='sw_l1')c_winsorize截面缩尾处理 c_winsorize(min=0.05, max=0.95) -
关键特点:
- 作用于单时间点的多资产横截面(如某日所有股票的
open价格)。 - 无需窗口参数(针对单一时点计算)。
- 返回结果与输入资产数量一致(横向聚合)。
- 作用于单时间点的多资产横截面(如某日所有股票的
✅ 验证:BigQuant 的截面函数严格以
c_开头,这是区分于时序操作的核心标识。
为什么这样设计?
- 语义清晰:
m_→ **M**oving(时序滚动),c_→ **C**ross-sectional(截面横向),命名直观易记。
- 避免混淆:
时序和截面操作在量化逻辑中本质不同(时间维度 vs. 资产维度),前缀区分可减少代码错误。 - 平台一致性:
BigQuant 的底层引擎(基于 Pandas/NumPy)通过此约定自动优化计算逻辑(时序操作按资产分组滚动,截面操作按时间点分组聚合)。
注意事项
- 并非绝对 100% 覆盖:
- 少数通用函数(如
log,abs)无前缀,但它们**不属于时序/截面专用算子**。 - 部分高级函数可能用其他前缀(如
t_表示技术指标),但核心时序/截面操作严格遵循m_/c_规则。
- 少数通用函数(如
- 聚合函数的归属:
- 时序聚合(如
m_sum)属于m_系列,截面聚合(如c_mean)属于c_系列,与您的描述一致。
- 时序聚合(如
- 实际代码验证:
在 BigQuant 编辑器中输入m_或c_会触发自动补全,列出所有对应函数(如下图示意):
https://bigquant.com/doc/static/img/autocomplete.png
总结
| 类型 | 前缀 | 作用维度 | 典型函数 | 是否符合您的描述 |
|---|---|---|---|---|
| 时序算子/聚合函数 | m_ | 时间维度(单资产历史序列) | m_avg, m_std | ✅ 是 |
| 截面算子/聚合函数 | c_ | 资产维度(单时间点多资产) | c_rank, c_norm | ✅ 是 |
496

被折叠的 条评论
为什么被折叠?



