You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算Alpha 147因子?及Python逻辑转DolphinDB脚本实现

Alpha147因子的DolphinDB实现

核心逻辑对应

原Python代码的逻辑是:对收盘价计算滚动12期均值,再取该均值序列的前12个样本点,与自变量序列[1,2,...,12]做一元线性回归,回归系数即为Alpha147因子值。

DolphinDB脚本实现

1. 基础函数定义(单标的时间序列)

def alpha147(close) {
    // 计算收盘价的滚动12期均值,对应原逻辑的MEAN(CLOSE, 12)
    ma12 = mavg(close, 12)
    // 滚动窗口回归:每个窗口取前12个ma12值,对[1..12]回归取系数
    // regress(y, x)返回[截距, 回归系数],取索引1的元素
    alphaSeries = moving(ma12, 12, window -> regress(window, 1..12)[1])
    return alphaSeries
}

2. 面板数据(多标的)场景使用

如果你的数据是包含多标的的面板表(例如表t包含date、symbol、close列),可以通过context by分组计算每个标的的因子:

// 方式1:用update语句添加因子列
update t set alpha147 = alpha147(close) context by symbol

// 方式2:直接在查询中生成因子
select date, symbol, close,
       moving(mavg(close, 12), 12, w -> regress(w, 1..12)[1]) as alpha147
from t
context by symbol

关键函数说明

  • mavg(close, 12):DolphinDB内置的移动平均函数,对应原逻辑中滚动12期收盘价均值的计算。
  • moving(func, windowSize):滚动窗口计算函数,这里用于对ma12序列取每个长度为12的窗口做回归。
  • regress(y, x):线性回归函数,输入因变量y和自变量x,返回结果为[截距, 回归系数],取第二个元素即为所需的Beta系数。

内容的提问来源于stack exchange,提问作者Huang WeiFeng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 01:57:16