如何计算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
相关产品推荐
相关产品推荐

