内部矩阵维度必须一致simulink_基于主成分分析 沪深300个股一致性IF股指交易策略...

本文主要是介绍内部矩阵维度必须一致simulink_基于主成分分析 沪深300个股一致性IF股指交易策略...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

197a236bcac287263c90d546dbb4ddb1.gif

策略概述

       一般而言,趋势策略在市场有趋势的时候盈利丰厚,而在震荡市场,趋势策略容易发生亏损。

       我们可以通过对市场的趋势和震荡进行判断,使策略具有更好的收益表现。此前,我们发布了一系列报告,用来衡量市场趋势的强度,在此基础上进行交易,而在震荡市场,则放弃进行趋势交易。

       本篇专题报告从市场成份股的一致性强弱出发,对市场指数的趋势强弱进行判断。本篇报告所选择的主要标的是沪深 300 指数,对应的是沪深 300 成份股。从直观上来看,成份股一致性用来表示市场的成份股走势是否同涨同跌。

       图1展示了成份股一致性较强的时候,3个(标准化之后)股价序列的走势;图2展示了成份股一致性较弱的时候,股价序列的走势。从直观上来看,图1中成份股序列走势相似性高,而图2中成份股序列走势之间的相似性弱。在成份股一致性较强的市场,成份股同涨同跌,容易形成市场“合力”,产生较大的波动和趋势。而在成份股一致性较弱的市场,成份股随机波动,市场不易产生趋势。因而我们可以基于对市场成份股一致性强弱的计算,对市场的趋势进行估计,从而确定是否进行趋势交易。

e9433286992512d3a31d2457121e286f.png

图1:成分股一致性强

85b097e78af639afe06a4f07f4c16eb8.png

图2:成分股一致性弱

策略构造

1.算法原理

       主成分分析:

       PCA的主要思想是将n维特征映射到k维上,这k维是全新的正交特征也被称为主成分,是在原有n维特征的基础上重新构造出来的k维特征。PCA的工作就是从原始的空间中顺序地找一组相互正交的坐标轴,新的坐标轴的选择与数据本身是密切相关的。其中,第一个新坐标轴选择是原始数据中方差最大的方向,第二个新坐标轴选取是与第一个坐标轴正交的平面中使得方差最大的,第三个轴是与第1、2个轴正交的平面中方差最大的。依次类推,可以得到n个这样的坐标轴。通过这种方式获得的新的坐标轴,我们发现,大部分方差都包含在前面k个坐标轴中,后面的坐标轴所含的方差几乎为0。于是,我们可以忽略余下的坐标轴,只保留前面k个含有绝大部分方差的坐标轴。事实上,这相当于只保留包含绝大部分方差的维度特征,而忽略包含方差几乎为0的特征维度,实现对数据特征的降维处理。

       这些方差也被称为特征值,方差越大代表映射后信噪比越好,通过忽略n-k个特征值无限接近于0的向量构造k维新映射。而每一个特征值就能反应映射携带信息强度。

2.模型构造

       我们首先获取一个规模为(n,m)的矩阵,m是样本股票数量,n为回望周期等频率价格采样次数,也就是如果以一年作为回望周期,采样频率为每日,样本为个股当日收盘价,选取股票池为沪深300指数中全部成分股,那么n=365,m=300(假定365天每天都是交易日,当然现实情况不是这样的)。这个矩阵每一个元素都是一个价格数据,矩阵列向量就代表某只股票当年全部每日收盘价的时间序列。然后我们对矩阵中数据进行标准化处理,常用做法在每个列向量中,把此列所有的元素值除以此列第一个值。处理后图示如下:

2c673184e8eb542b4be659a631dcb3cc.png

       计算价格矩阵P的协方差矩阵E

e37e1cd59660910a4ae77e09ec82c602.png

       同时我们可以观察到,我们可以对P矩阵进行线性变化,使得这个(n*m)维矩阵变为一个n维向量,我们一共可以找到无穷个这样的线性向量对P进行变换,我们取300个,因为这样可以使得这些线性变换向量拼接在一起也组成一个和P规模相等的矩阵,方便我们接下来进行分析。设变换矩阵为U

ac6eb4c256cda8e60ad03fb51c00e0d3.png

       而Q=PU=[Pu1...Pu200],其中为一个n维价格时间序列。

bba8762cee8a72a7895621ddb920d131.png

图3:价格序列线性变换(例)

       而如果我们对U进行一些线性约束的话,U就会具有一些有趣的性质。在这里,我们让

7c463f513cb981b11a7bc24daec46122.png

       我们可以发现,矩阵U就可以用协方差矩阵E替代。即问题变成了求解:

4d8e2ab3cae205b3b835ab0ede9a1c3a.png

0855cb94b1ff9675d0577184e4554ef4.png

       因而定义一致性指标如下:

5fc207317d4d754e58b74cd12ba04a02.png

       λ1为协方差矩阵奇异值分解中最大的λ,即第一主成分。

       一致性指标R是0到1之间的数,R越大,说明成份股之间一致性越强;R越小,说明成份股之间的一致性越弱。

       以沪深300为例,下图是2006年1月1日至2016年7月15日沪深300指数的一致性指标分析结果。在每天收盘时,采用最近连续20个交易日的30分钟收盘价计算一致性指标R。其中红色的点位是沪深300成分股一致性指标75%分位数及以上出现的时间。

057b886a3f2477288c3658aa704a6e34.png

       由图可见,市场成份股一致性指标的强弱与市场的趋势和震荡划分具有很明显的关联。

3.策略设计

       当沪深 300 指数成份的一致性比较强的时候,进行趋势跟踪交易;当成份股的一致性弱的时候,认为当天不适合趋势交易。交易的开仓方向和n日内趋势动量方向一致。通过预设阈值,一旦当日一致性R值突破阈值,则认为目前趋势动量较强,则:

开多    P(t) - P(t-n) > 0

开空    P(t) - P(t-n) > 0

       P(t)为第t天的沪深300股指价格,P(t-n)为n日前沪深300指数价格,n为模型计算R的采样回望天数。

       止损方式为追踪止损,当持仓亏损点数超过两倍ATR(真实波幅)则出场止损。

       同时为了防止一致性指标R直接设置阈值的主观性给模型带来幸存者偏差,对R值序列进行移动平均,阈值R_standard为:

e8596616bc8c637fe15f0de67d7137bf.png

实证检验

       为了检验策略的有效性,在聚宽平台设计了以python为语言的策略代码。时间窗口选取2015年1月1日到2018年12月27日,绩效表现如下:

6211e5d50eedfb75762ebd9c1c6c18b4.png

       为了保持鲁棒性,我们没有做过多的参数优化,持仓周期,R值计算的回望周期,都使用同样的时间窗口进行回溯,调整持仓时间设置为固定每周一,来避免主管设置周期产生的路径依赖。

       我们看到,策略取得了较好的绩效,并且风险和回撤都把握在一定的范围内,具有一定程度稳定的超额收益能力。报告中策略观点有效。策略源码可以点击下方阅读原文获取。本文参考广发证券研究报告《从成分股一致性衡量市场趋势》思路。

becbe75fdb1458092a5653931bdc1f7b.gif

欢迎关注『聚宽量化实验室

这篇关于内部矩阵维度必须一致simulink_基于主成分分析 沪深300个股一致性IF股指交易策略...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

MySQL按时间维度对亿级数据表进行平滑分表

《MySQL按时间维度对亿级数据表进行平滑分表》本文将以一个真实的4亿数据表分表案例为基础,详细介绍如何在不影响线上业务的情况下,完成按时间维度分表的完整过程,感兴趣的小伙伴可以了解一下... 目录引言一、为什么我们需要分表1.1 单表数据量过大的问题1.2 分表方案选型二、分表前的准备工作2.1 数据评估

MySQL设置密码复杂度策略的完整步骤(附代码示例)

《MySQL设置密码复杂度策略的完整步骤(附代码示例)》MySQL密码策略还可能包括密码复杂度的检查,如是否要求密码包含大写字母、小写字母、数字和特殊字符等,:本文主要介绍MySQL设置密码复杂度... 目录前言1. 使用 validate_password 插件1.1 启用 validate_passwo

MySQL中处理数据的并发一致性的实现示例

《MySQL中处理数据的并发一致性的实现示例》在MySQL中处理数据的并发一致性是确保多个用户或应用程序同时访问和修改数据库时,不会导致数据冲突、数据丢失或数据不一致,MySQL通过事务和锁机制来管理... 目录一、事务(Transactions)1. 事务控制语句二、锁(Locks)1. 锁类型2. 锁粒

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

MySQL中读写分离方案对比分析与选型建议

《MySQL中读写分离方案对比分析与选型建议》MySQL读写分离是提升数据库可用性和性能的常见手段,本文将围绕现实生产环境中常见的几种读写分离模式进行系统对比,希望对大家有所帮助... 目录一、问题背景介绍二、多种解决方案对比2.1 原生mysql主从复制2.2 Proxy层中间件:ProxySQL2.3

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

《python使用Akshare与Streamlit实现股票估值分析教程(图文代码)》入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存... 目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotl

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

Python实现网格交易策略的过程

《Python实现网格交易策略的过程》本文讲解Python网格交易策略,利用ccxt获取加密货币数据及backtrader回测,通过设定网格节点,低买高卖获利,适合震荡行情,下面跟我一起看看我们的第一... 网格交易是一种经典的量化交易策略,其核心思想是在价格上下预设多个“网格”,当价格触发特定网格时执行买