【量化课堂 第八十二期】利用chatgpt重现聚宽因子计算
众所周知聚宽因子无法在一创使用,关于因子的介绍也一直是简单至极,模棱两可,很难重现。chatgpt来了,例如“残差波动因子 residual_volatility”,计算公式是:
计算公式:0.74 日收益率标准差(DASTD) + 0.16 收益离差(CMRA) + 0.1 * 残差历史波动率(HSIGMA),之后将结果和beta因子,市值因子做回归,取残差
残差波动因子
现在可以直接把问题抛给gpt,代码虽然不能直接运行,但已经接近或有了解读的思路。这个行为的意义在于聚宽的众多因子,可以通过gpt重写的方式,在一创使用,节约了大量的人力。
import numpy as np
from jqdatasdk import *
auth('聚宽账号','聚宽密码')
df = get_price(security='股票代码', start_date='开始日期', end_date='结束日期', frequency='daily', fields=['close'], skip_paused=True)
returns = df['close'].pct_change().dropna()
dastd = returns.std()
cmra = returns - returns.mean()
hsigma = returns.rolling(window=252).std().dropna().iloc[-1]
residual_volatility = 0.74 dastd + 0.16 cmra + 0.1 * hsigma
print("残差波动因子:", residual_volatility)
当然了,一创是py2版本,pandas版本也不支持使用“rolling”函数,重新写:
import numpy as np
from jqdatasdk import *
auth('聚宽账号','聚宽密码')
df = get_price(security='股票代码', start_date='开始日期', end_date='结束日期', frequency='daily', fields=['close'], skip_paused=True)
returns = df['close'].pct_change().dropna()
dastd = returns.std()
cmra = returns - returns.mean()
hsigma = np.sqrt(252) np.std(returns[-252:])
residual_volatility = 0.74 dastd + 0.16 cmra + 0.1 hsigma
print("残差波动因子:", residual_volatility)
本篇文章来源于微信公众号: 果仁量化小分队