股票市场中不同市值、不同行业、不同风格的股票,对于因子的响应性不同,因此,在进行因子测试前,我们必须对因子进行处理,剔除掉因子中可能包含的其他因素,处理方法也与计量中的方法类似——加控制变量,这里叫做因子中性化 ,实际操作中,我们一般只考虑市值和行业造成的影响,对这两方面的处理分别称为市值中性化和行业中性化。 行业中性化 行业中性化有两种方法,一种是之前所说类似计量中加控制变量的方法,用因子值做因变量,用所属行业(申万行业、中信行业)虚拟变量做自变量进行OLS回归,用回归之后的残差值代替因子值。 另一种方法是对因子分行业进行标准化,即减去行业均值之后再除以行业标准差,可以证明,两种方法得到的结果是完全一样的。第一种方法的代码相对简单,并且可以和市值中性化一起进行,因此一般采用第一种方法。 一般将行业虚拟变量和市值同时放在自变量上进行回归,同时进行市值中性化和行业中性化,理论上可以证明,回归后的残差序列与自变量序列均正交,因此可以认为回归后的残差是因子剔除了行业和市值影响后的纯净的因子。
回测区间:20091231-20191231 全A股,剔除ST和新股 计算因子IC,先看不做行业市值中性化的结果 SUE-含漂移项 ? SUE-不含漂移项 ? SUR-含漂移项 ? 不做中性化时,带漂移项的业绩超预期因子ICIR更高,不带漂移项的因子IC更高。 对因子用申万一级行业和流通市值做市值行业中性化后计算IC如下 SUE-带漂移项 ? SUE-不带漂移项 ? 可以看出,中性化后,因子稳定性明显上升,ICIR变大。 分层测试结果 限于篇幅,这里只给出中性化后的,未中性化的结果可以在代码文件中查看。 SUE-带漂移项 ? SUE-不带漂移项 ? 04 业绩超预期模拟组合 接下来给出在米筐和聚宽平台上,模拟组合的结果 回测区间:200912-201912 股票池:中证800 规则:中性化后的因子降序排列,买入最大的100只股票,每月末月度调仓 SUE-带漂移项-不中性化 ? SUE-不带漂移项-不中性化 ? SUE-带漂移项-中性化 ? ? SUE-不带漂移项 ? ?
热卖云产品新年特惠,2核2G轻量应用服务器9元/月起,更多上云必备产品助力您轻松上云
我们知道,一个因子值的处理大致分为三个步骤,去极值、标准化、中性化,上次我们对因子值进行了去极值和标准化,这一次,我们主要讲一讲中性化,也就是neut。 neut分为行业中性和风格中性两种。行业中性很好理解,我们知道,一个因子在不同的行业间不一定有可比性。譬如资产权益比,也就是杠杆率。 显然,有的行业杠杆率很高,比如房地产行业,而有的行业则杠杆率不高,比如传统机械制造行业。再比如PB,有的轻资产行业PB很高,比如软件,而有的行业PB很低,比如煤炭。 第二种方法既可以用于行业中性,也可以用于风格中性,叫做残差法。也就是做一个回归,其中,因子值是y,需要中性的风格因子的暴露为x,然后我们进行回归。回归之后的残差就是因子值对行业中性化后的值。 2.行业中性化 由于分风格因子通常会购买barra的数据服务,所以,这里我们只进行行业中性。 首先,我们需要获得行业数据,也就是每个股票行业的类别。
JupyterNote 数据来源:通联数据 依赖包:数据处理(pandas、numpy)、数学工具(scipy、自带包statsmodels)、绘图包(matplotlib、seaborn) 数据预处理与中性化处理 因子中性化 因子中性化是为了避免因子与某些行业和风格过度耦合所带来的偏差。 本文中对因子进行了行业和市值的中性化,主要做法是:对每期的因子值对行业哑变量和流动市值做线性回归,取得回归的残差作为对原始因子值的替代。 标准化与去极值还有很多计算方式可参考,本文从简。 在本测试中,不会对公司所属行业进行比例拆分,即股票只能属于一个特定的行业,在本行业上的暴露度为1,在其他所有行业的暴露度为0。 在利用IC值评价因子有效性时,需先进行因子中性化处理(与回归分析法一致)。
不同行业内的上市公司财务基本面数据有行业特色,价格波动率也有行业特色,所以需要在行业之间做中性化,剔除行业影响。 方法可以是通过行业哑变量0-1区分该股票是否属于该行业,还可以给与跨行业公司不同的行业权重,还可以按照股票和一级行业走势的相关性来确定行业权重。 ? 某因子中性化前后的因子top-bottom对冲性能对比 如上图,一个短期量价因子做了行业和主要风格中性化前(上部分),对冲净值曲线,和中性化后(下部分),性能差异显著。 理论上中性化会带来alpha模型的超额收益部分性能提升(特别是回撤降低),因为某些时段特殊的风格因子会导致alpha不稳定,我们在交流中说的风格坑、行业坑,就是不做中性化导致的alpha超额收益曲线不稳定 最终的模型打分结果可以再次中性化处理 还有一种方式被称为“后置中性化”,如上图,其针对模型每日的股票打分当作一个因子,使用行业哑变量和风格风险因子,对打分做中性化线性回归处理。
输入特征 X 的维度:156(128个因子+28个行业) 通过网格搜索获取最优的模型结构。 行业中性的样本标注:寻找不同行业内能够跑出超额收益的股票 ? 训练时,根据未来一期的股票涨跌幅来给样本贴“标签”:上涨、下跌、平盘 同一时刻,按照涨跌幅进行排序,确定样本的输出标签。 经过行业和市值中性化之后,深度学习因子更少受到市值因子的影响。 深度学习因子与流通市值的相关性:截面相关性 ? 经过行业和市值中性化之后,深度学习因子更少受到流通市值因子的影响。 总结 将风险因子中性化处理后,可以构建新的深度学习选股模型,该模型受风险 因子的影响较小。 即使是采用同样的特征和模型结构,风险因子中性化之后,训练的策略也会 有较大的差别,可以通过此方法丰富深度学习选股策略的多样性。
PB因子(windcode:pb_lf) 多头组合净值曲线(因子中性化) ? 多空组合净值曲线(因子中性化) ? 多头组合净值曲线(因子未中性化) ? 多空组合净值曲线(因子未中性化) ? 市值因子(因子中性化) 多头组合净值曲线 ? 多空组合净值曲线 ? 市值因子不同组对比 ? 可以看出,不论是PB因子还是市值因子,相对于沪深300指数,均有明显超额收益,但今年以来净值曲线存在回撤。 未做中性化的因子效果明显比做中性化的因子效果差。 1if_neutral_industry = False 2if_neutral_mktcap = False 3monthdata['BP'] = 1/monthdata.pb_lf 4# 标准化,中性化
回归作为数据分析中非常重要的一种方法,在量化中的应用也很多,从最简单的因子中性化到估计因子收益率,以及整个Barra框架,都是以回归为基础,本文总结各种回归方法以及python实现的代码。 使用这种方法最重要的点是回归必须是靠谱的,比如ROE应该是稳定的,确保未来可持续,比如应想办法消除行业间的差异等等。 ? ? 带约束的最小二乘法在量化中非常常用,比如做行业中性化时,如果所有行业虚拟变量都保留,并且添加了截距项的情况下,会出现变量多重共线性,回归结果无效,这时候一种方法是删除一个虚拟变量,还有一种方法是添加一个约束 比如可以添加行业的市值占比和系数乘积的和为0: ? 其中,w为各行业流通市值占比,这种方法下,对pb因子做中性化的代码如下 from statsmodels.sandbox.rls import * weights = datas.mktcap.groupby
测试方法:分层测试、回归测试、IC 测试区间:2010年1月-2018年6月 是否中性化:行业中性,不市值中性 加权方法:等权 IC:rankIC 回测代码说明见文章最后,自娱自乐,不保证正确性,请理性看待 stockcode) def getswclass(self,data,datein): """ 对于给定日期的所有股票,添加申万一级行业 def norm(self,data,if_neutral_industry,if_neutral_mktcap): """ 中性化函数 ,对因子进行中性化 """ return data def getIC(self,data, rt, method = 'rank'):
数据获取与处理 对原始数据进行了剔除停牌、ST、新上市、缺失值处理,同时做了去极值、标准化,中性化处理。 原始数据与处理后的数据分布对比 ? 因子定义 价值因子 | 收益因子 | 成长因子 | 质量因子 规模因子 | 波动因子 | 动量因子 具体每个大类下的小类因子定义,在文末查询 因子结果分析 风格因子表现 (前50%) 1个月 - 行业中性 风格因子表现 (前50%) 3个月 - 行业中性(A股、B股、H股) ? 风格因子表现 (前50%) 6个月 - 行业中性(A股、B股、H股) ? 风格因子表现 (前50%) 年初至今 - 行业中性(A股、B股、H股) ? 风格因子表现 (前50%) 1年 - 行业中性(A股、B股、H股) ? 风格因子表现 (前50%) 3年年化 - 行业中性(A股、B股、H股) ? 风格因子表现 (前50%) 5年年化 - 行业中性(A股、B股、H股) ?
外网媒体和各大社区中较为统一的描述是去性别化(less gendered)或者中性化(gender neutral)。 因为声音这种事就比较见仁见智,有觉得“中性化声音好耶”的人,也有觉得“你怎么把Siri搞得像个机器人”而不满的: (懂了Siri的性别就是Siri) 还有这种挨得很近,很有喜剧效果的评论: 还是太女性化了 欢迎关注人工智能、智能汽车的小伙伴们加入我们,与AI从业者交流、切磋,不错过最新行业发展&技术进展。
---- 因子预处理 与分层测试法不同,回归法测试时,因子可以不进行中性化处理,只进行异常值处理和标准化(zscore)处理,将中性化的过程包含在测试过程中。 方法说明 每一期,对全样本做一次回归,回归时将本期到下一期的股票收益率作为因变量,当期的因子暴露值作为自变量,同时考虑到市值中性和行业中性,加入行业虚拟变量和市值变量作为自变量,市值变量可以取对数消除量纲 一些细节 包含行业虚拟变量的回归中,如果再加有截距项,就会导致完全共线性,因此回归前必须进行处理,大概有这么几种方法:不加截距项(如上方程);加截距项,但将其中一个行业变量的暴露值全部设为0或者删除,消除共线性
公众号拥有来自公募、私募、券商、期货、银行、保险、高校等行业30W+关注者,荣获2021年度AMMA优秀品牌力、优秀洞察力大奖,连续2年被腾讯云+社区评选为“年度最佳作者”。 所有因子数据都经过了以下处理: 行业中性化,采用中信一级行业,对每个因子计算行业内Z-Score的方式计算中性化后的因子值。 异常值处理,也在行业内进行异常值处理,异常值的判定标准为超过正负3个标准差。 组合优化 基于以上各模型计算每个股票的因子得分和因子权重,然后基于以下目标函数(最大化Alpha因子)及限制条件(主要包括行业暴露、主动权重及行业市值限制)求解股票权重: (i) industry constraint
所以交易所的钱包也是中性化的钱包。交易所的安全尤为重要 冷钱包 冷钱包就是离线、断网(imtoken提供了冷钱包保管方式)也就是说私钥存储的位置不能被互联网访问。 如bitcoin-core,缺点就是大(好几百G) 轻钱包 对比全节点钱包,不必保存所有区块链的数据,只保存和自己相关的数据 中性化钱包 交易所的钱包,或者类似OKLink提供的保险柜服务。
关键词:微信小程序、教育 教育行业在中国一直以来都是一个充满竞争的行业,因为中国人口众多,教育需求自然就多,另外教育行业的进入门槛相对较低,引来了众多的创业者想要分一杯羹。 而随着现目前中国二胎政策的打开,即将迎来一大批新生儿,从而引起对我国的教育行业特别是幼儿和青少年教育的又一次需求大爆发。 各教育行业的创业者要想在这场新的竞争中活下来并得到发展,有一个核心要点就是: 依托移动互联网的“连接”能力。 传统教育行业发展的痛点,不是没有用户需求,而是连接不上用户,新用户的开发基本只靠老带新的口耳相传,这样下来,规模不够大,覆盖面也不够广。而小程序的特点,刚好可以弥补传统教育行业的缺点。
4)neut-score 我们做完标准化后,需要对因子值做中性化处理。包括行业中性和风格中性。 行业中性比较简单,只要满足行业内因子值均值为0,标准差为1,也就是,行业内部再做一次标准化就可以了。
2013年移动大战全面打响,从终端、行业到用户,都经历了翻天覆地的变化。 今日,跟大家分享《腾讯移动分析发布2013移动行业分析》之行业篇: 第一期:终端篇(周四) -Android与IOS市场分额变化; -Android终端主流规格变化; -iOS版本越狱情况变化; 第二期 :行业篇(周五发布); -全国应用开发商分布; -游戏和理财类应用用户群分布; -电商和生活类应用用户群分布; 第三期:用户篇(周六发布); -4大移动用户群体; -4大群体网络接入分析; -Top应用
行业文档识别(Document OCR)提供表单表格识别、体检报告识别、检验检查单识别、算式识别等多种行业文档识别服务,支持将图片上的文字内容,智能识别为结构化的文本,可应用于多种行业场景,可应用于智能核保、智能理赔、试题批改等多种行业场景,大幅提升信息处理效率。
扫码关注腾讯云开发者
领取腾讯云代金券