多因子策略冗因

2024-05-29 20:58
文章标签 策略 多因子 冗因

本文主要是介绍多因子策略冗因,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原 多因子策略之冗余因子

引言:

上一篇文章《多因子选股之有效因子》,我们讲到有效因子的检验。在选择了有效因子之后,我们还需要进行一步去除冗余因子。

不同的选股因子可能由于内在的驱动因素大致相同等原因,所选出的组合在个股构成和收益等方面具有较高的一致性,因此其中的一些因子需要作为冗余因子剔除, 而只保留同类因子中收益最好,区分度最高的一个因子。例如成交量指标和流通量指标之间具有比较明显的相关性。流通盘越大的,成交量一般也会比较大,因此在选股模型中,这两个因子只选择其中一个。

主要步骤:

我参考了网络上不同的剔除方法,但都仅仅浅尝辄止,没有进行深入的代码探究。我们先说剔除冗余因子的主要步骤:

假设现有k个因子,回测周期可分为m个月,股票可均分为n个组合,

1、分别按不同因子的大小进行排序,讲股票分为n个组合进行打分,分值与该组合在整个模型形成期的收益相关,收益越大,分值越高。分值赋给每月该组合内的所有个股。

如果组合10的收益大于组合1,那么就将组合 i 各个股票的各个股票分值设置为 i ,各个组合的分值从低到高进行排列分别是

1,2,3,4,5,6,7,8,9,10。如果组合1的收益大于组合10,那么正好是反过来 10,9,8,7,6,5,4,3,2,1。

2、按月计算个股的不同因子得分间的相关性矩阵。

3、在计算完每月因子得分相关性矩阵后,计算整个样本期内相关性矩阵的平均值。

4、设定一个得分相关性阀值,将得分相关性平均值矩阵中大于该阀值的元素所对应的因子只保留与其他因子相关性较小、有效性更强的因子,而其它因子则作为冗余因子剔除。

测试参数:

我们根据步骤,在掘金平台上实现
测试参数声明:
测试平台:掘金量化
测试时间:2016-01-01——2018-01-01
测试股票池:“上证50”成分股
测试因子:

0_1533722338455_01.jpg

测试步骤:

1、获取每个月的首个交易日,月初获取每只股票的因子数据及当月收益率,根据因子数值排序,将股票分为10组,根据平均收益为股票组合打分,分值赋予对应组合中所有股票。

2、分别测试股票关于四种因子的分值,根据每月结果,计算相关性系数矩阵。

3、计算整个测试周期的相关性系数平均值。

4、设定阈值,剔除冗余因子。

结果:

我们看几个月份的相关性系数矩阵
0_1533722784179_图片1.png

                                                                              2016年3月


0_1533722839507_图片2.png

                                                                     2016年4月


0_1533722875258_图片3.png

                                                                            2016年6月
0_1533722892677_图片5.png

                                                                     2016年10月
0_1533722944456_图片5.png

                                                                       2016年12月
0_1533722975118_图片6.png

                                                                2017年6月

再来看各个月的统计表格

0_1533723012850_360截图20180808172905332.jpg

我们经过统计,得出平均相关性系数矩阵
0_1533723037047_360截图20180808173102752.jpg

结论:

我们选取的四个有效因子,平均相关性系数均小于0.25,也就是我们选取的因子相关性很低,我们可以放心的进行因子间的组合,构建新的因子。

冗余因子剔除的思想:计算股票根据每个因子的所获得的分值,通过比较该分值,从而得到因子间的相关性,相关性高的,剔除其中一个,留下有效性高并与其他因子相关性低的因子。

查看获取冗余因子策略请点击:https://www.myquant.cn/community/topic/695

来源:掘金量化myquant.cn,作者:经纬量化  宋瑞笛   ,转载请注册出处!

--------------------------------------------------------------------------------------------------------------------------

推荐文章阅读:

1双均线策略(期货)  量化策略源码https://www.myquant.cn/docs/python_strategyies/153
2alpha对冲(股票+期货)  量化策略源码https://www.myquant.cn/docs/python_strategyies/101
3集合竞价选股(股票) 量化策略源码https://www.myquant.cn/docs/python_strategyies/102
4多因子选股(股票)  量化策略源码https://www.myquant.cn/docs/python_strategyies/103
5网格交易(期货)  量化策略源码https://www.myquant.cn/docs/python_strategyies/104
6指数增强(股票)  量化策略源码https://www.myquant.cn/docs/python_strategyies/105
7跨品种套利(期货)量化策略源码https://www.myquant.cn/docs/python_strategyies/106
8跨期套利(期货) 量化策略源码https://www.myquant.cn/docs/python_strategyies/107
9日内回转交易(股票)量化策略源码https://www.myquant.cn/docs/python_strategyies/108
10做市商交易(期货) 量化策略源码https://www.myquant.cn/docs/python_strategyies/109
11海龟交易法(期货) 量化策略源码https://www.myquant.cn/docs/python_strategyies/110
12行业轮动(股票) 量化策略源码https://www.myquant.cn/docs/python_strategyies/111
13机器学习(股票) 量化策略源码https://www.myquant.cn/docs/python_strategyies/112

《算法导论 第三版英文版》_高清中文版

《深度学习入门:基于Python的理论与实现》_高清中文版

《深入浅出数据分析》_高清中文版

《Python编程:从入门到实践》_高清中文版

《Python科学计算》_高清中文版

《深度学习入门:基于Python的理论与实现》_高清中文版

《深入浅出数据分析》_高清中文版

《Python编程:从入门到实践》_高清中文版


这篇关于多因子策略冗因的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1014630

相关文章

SpringBoot如何通过Map实现策略模式

《SpringBoot如何通过Map实现策略模式》策略模式是一种行为设计模式,它允许在运行时选择算法的行为,在Spring框架中,我们可以利用@Resource注解和Map集合来优雅地实现策略模式,这... 目录前言底层机制解析Spring的集合类型自动装配@Resource注解的行为实现原理使用直接使用M

Redis 内存淘汰策略深度解析(最新推荐)

《Redis内存淘汰策略深度解析(最新推荐)》本文详细探讨了Redis的内存淘汰策略、实现原理、适用场景及最佳实践,介绍了八种内存淘汰策略,包括noeviction、LRU、LFU、TTL、Rand... 目录一、 内存淘汰策略概述二、内存淘汰策略详解2.1 ​noeviction(不淘汰)​2.2 ​LR

Deepseek使用指南与提问优化策略方式

《Deepseek使用指南与提问优化策略方式》本文介绍了DeepSeek语义搜索引擎的核心功能、集成方法及优化提问策略,通过自然语言处理和机器学习提供精准搜索结果,适用于智能客服、知识库检索等领域... 目录序言1. DeepSeek 概述2. DeepSeek 的集成与使用2.1 DeepSeek API

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

SpringBoot中的404错误:原因、影响及解决策略

《SpringBoot中的404错误:原因、影响及解决策略》本文详细介绍了SpringBoot中404错误的出现原因、影响以及处理策略,404错误常见于URL路径错误、控制器配置问题、静态资源配置错误... 目录Spring Boot中的404错误:原因、影响及处理策略404错误的出现原因1. URL路径错

Redis多种内存淘汰策略及配置技巧分享

《Redis多种内存淘汰策略及配置技巧分享》本文介绍了Redis内存满时的淘汰机制,包括内存淘汰机制的概念,Redis提供的8种淘汰策略(如noeviction、volatile-lru等)及其适用场... 目录前言一、什么是 Redis 的内存淘汰机制?二、Redis 内存淘汰策略1. pythonnoe

Python 中 requests 与 aiohttp 在实际项目中的选择策略详解

《Python中requests与aiohttp在实际项目中的选择策略详解》本文主要介绍了Python爬虫开发中常用的两个库requests和aiohttp的使用方法及其区别,通过实际项目案... 目录一、requests 库二、aiohttp 库三、requests 和 aiohttp 的比较四、requ

Redis过期键删除策略解读

《Redis过期键删除策略解读》Redis通过惰性删除策略和定期删除策略来管理过期键,惰性删除策略在键被访问时检查是否过期并删除,节省CPU开销但可能导致过期键滞留,定期删除策略定期扫描并删除过期键,... 目录1.Redis使用两种不同的策略来删除过期键,分别是惰性删除策略和定期删除策略1.1惰性删除策略

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

缓存策略使用总结

缓存是提高系统性能的最简单方法之一。相对而言,数据库(or NoSQL数据库)的速度比较慢,而速度却又是致胜的关键。 如果使用得当,缓存可以减少相应时间、减少数据库负载以及节省成本。本文罗列了几种缓存策略,选择正确的一种会有很大的不同。缓存策略取决于数据和数据访问模式。换句话说,数据是如何写和读的。例如: 系统是写多读少的吗?(例如基于时间的日志)数据是否是只写入一次并被读取多次?(例如用户配