mysql 多因子 数据库_数据库交易回测系列三:多因子Alpha策略最佳因子权重

本文介绍如何使用DolphinDB database的quadprog函数进行多因子Alpha策略的权重优化。通过解决优化问题,确保因子权重满足约束条件,以最大化期望收益并降低方差。文中展示了不同历史时期数据下,动量、波动率、beta和市值因子的最佳权重配置,强调了选取历史时期对优化结果的重要性。
摘要由CSDN通过智能技术生成

在本系列二(多因子Alpha策略回测)中,我们对美股市场的4个量化因子进行了回测。在这里,我们将使用 DolphinDB database 内置的quadprog函数,对各个因子的权重进行均值方差优化,以决定最佳因子权重。

本系列二提供的脚本执行完毕后,数据表factorPnl会存有每个因子每天的收益。以下脚本基于数据表factorPnl。retMatrix=matrix(select C0, C1, C2, C3 from factorPnl)

H = cross(covar, retMatrix, retMatrix)

f=-0.25*each(avg, retMatrix)

A=-(1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 $4:4)

b=-0.1*1 1 1 1

Aeq=matrix([1],[1],[1],[1])

beq=[1]

result=quadprog(H, f, A, b, Aeq, beq)

result[1]

这段代码解决了以下优化问题:

24f7bd1f49d0bcda03c2ec22a2d91e7f.png

这里我们的目标函数为最大化(1/4*期望收益 – 1/2*方差),同时保证四个因子的权重之和为1,并且每个因子最小权重为10%。 H是四个因子收益率的方差-协方差矩阵。请注意这里的H,A和Aeq必须是列数相等的矩阵; f,b和beq必须是向量。A是负的单位矩阵,与b一起使用,保证每个因子权重大于10%。关于quadprog函数细节请参考DolphinDB用户开发文档quadprog。

result[1]给出基于给定优化条件的最佳因子权重。结果如下:[0.3612, 0.1, 0.438804, 0.1]

在本系列二提供的脚本中,signalNames = `signal_mom`signal_vol`signal_beta`signal_size

因此,最佳权重为36.1%的动量因子,10%的波动率因子,43.9%的beta因子和10%的市值因子。

以上计算使用了所有历史时期的数据。也可选用最近10年的数据进行计算,只需对以上脚本的第一行代码做如下改动:retMatrix=matrix(select C0, C1, C2, C3 from factorPnl where date>=2007.01.01)

结果如下:[0.19277, 0.1, 0.1, 0.60723]

因此,最佳权重为19.3%的动量因子,10%的波动率因子,10%的beta因子和60.7%的市值因子。

由此可见,进行均值方差优化时选用的历史时期对结果有重要影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值