广告:本人的单因子测试视频教程https://edu.csdn.net/course/detail/25572

我们知道,一个因子值的处理大致分为三个步骤,去极值、标准化、中性化,上次我们对因子值进行了去极值和标准化,这一次,我们主要讲一讲中性化,也就是neut。

neut分为行业中性和风格中性两种。行业中性很好理解,我们知道,一个因子在不同的行业间不一定有可比性。譬如资产权益比,也就是杠杆率。显然,有的行业杠杆率很高,比如房地产行业,而有的行业则杠杆率不高,比如传统机械制造行业。再比如PB,有的轻资产行业PB很高,比如软件,而有的行业PB很低,比如煤炭。所以,很多因子数值在一个行业内比较才是有效的。同样的思路,有些因子虽然看起来不是一些基本的风格因子,比如PE,但是,其实我们知道,PE和市值有很大的关系,大市值的公司,一般是成熟的公司,PE往往不高。所以,我们需要把PE中的市值部分去掉。

1.两种中性的方法

所谓中性,最本质的意义就是“无关”,我们说市场中性,就是说我们这个组合与市场无关;我们说因子做了行业中性,说明我们的因子和行业没有关系,风格中性也是如此。这里的风格一般包括barra中的十个风格因子。

中性有两种方法,第一种仅仅可以做行业中性。也就是我们对股票进行行业的分类,然后在每个行业内在进行一次标准化。这种中性法可以用于行业中性,而不能用于风格中性。

第二种方法既可以用于行业中性,也可以用于风格中性,叫做残差法。也就是做一个回归,其中,因子值是y,需要中性的风格因子的暴露为x,然后我们进行回归。回归之后的残差就是因子值对行业中性化后的值。这里的风格因子可以是一个也可以多个,也就是一元回归和多元回归的区别。

2.行业中性化

由于分风格因子通常会购买barra的数据服务,所以,这里我们只进行行业中性。

首先,我们需要获得行业数据,也就是每个股票行业的类别。如果读者有wind的python的api,那么可以使用下面的函数获得我们需要的股票代码和行业代码转换的字典。这里,我们有一个假设,就是股票的行业在整个因子回测区间没有改变。

def ind_dict_get():from WindPy import ww.start()univers = ['000156.SZ.csv', '000157.SZ.csv', '000166.SZ.csv', '000333.SZ.csv','000338.SZ.csv', '000402.SZ.csv', '000413.SZ.csv', '000415.SZ.csv','000423.SZ.csv', '000425.SZ.csv', '000503.SZ.csv', '000538.SZ.csv','000540.SZ.csv', '000555.SZ.csv', '000559.SZ.csv', '000568.SZ.csv','000623.SZ.csv', '000625.SZ.csv', '000627.SZ.csv', '000630.SZ.csv','000651.SZ.csv', '000671.SZ.csv', '000686.SZ.csv', '000709.SZ.csv','000712.SZ.csv', '000718.SZ.csv', '000725.SZ.csv', '000728.SZ.csv','000738.SZ.csv', '000750.SZ.csv', '000768.SZ.csv', '000776.SZ.csv','000778.SZ.csv', '000783.SZ.csv', '000792.SZ.csv', '000793.SZ.csv','000800.SZ.csv', '000826.SZ.csv', '000839.SZ.csv', '000858.SZ.csv','000876.SZ.csv', '000895.SZ.csv', '000917.SZ.csv', '000938.SZ.csv','000963.SZ.csv', '000977.SZ.csv', '000983.SZ.csv', '001979.SZ.csv','002007.SZ.csv', '002008.SZ.csv']ticker_list = [ticker[:-4] for ticker in univers]ind_category = w.wsd(','.join(ticker_list), "industry_swcode", "2017-07-27", "2017-07-27", "industryType=1")return {k: v for (k, v) in zip(ind_category.Codes, ind_category.Data[0])}

如果没有wind的python的api接口,那么可以从下面的代码中复制,然后读者可以自己运行。

import pandas as pd
ind_dict = { u'000156.SZ': u'6122010000000000',u'000157.SZ': u'6107000000000000',u'000166.SZ': u'1000012613000000',u'000333.SZ': u'6111000000000000',u'000338.SZ': u'1000012588000000',u'000402.SZ': u'6118000000000000',u'000413.SZ': u'6108000000000000',u'000415.SZ': u'1000012613000000',u'000423.SZ': u'6115000000000000',u'000425.SZ': u'6107000000000000',u'000503.SZ': u'6115000000000000',u'000538.SZ': u'6115000000000000',u'000540.SZ': u'6118000000000000',u'000555.SZ': u'1000012601000000',u'000559.SZ': u'1000012588000000',u'000568.SZ': u'6112000000000000',u'000623.SZ': u'6115000000000000',u'000625.SZ': u'1000012588000000',u'000627.SZ': u'1000012613000000',u'000630.SZ': u'6105000000000000',u'000651.SZ': u'6111000000000000',u'000671.SZ': u'6118000000000000',u'000686.SZ': u'1000012613000000',u'000709.SZ': u'6104000000000000',u'000712.SZ': u'1000012613000000',u'000718.SZ': u'6118000000000000',u'000725.SZ': u'6108000000000000',u'000728.SZ': u'1000012613000000',u'000738.SZ': u'1000012579000000',u'000750.SZ': u'1000012613000000',u'000768.SZ': u'1000012579000000',u'000776.SZ': u'1000012613000000',u'000778.SZ': u'6104000000000000',u'000783.SZ': u'1000012613000000',u'000792.SZ': u'6103000000000000',u'000793.SZ': u'6122010000000000',u'000800.SZ': u'1000012588000000',u'000826.SZ': u'6116000000000000',u'000839.SZ': u'6123000000000000',u'000858.SZ': u'6112000000000000',u'000876.SZ': u'6101000000000000',u'000895.SZ': u'6112000000000000',u'000917.SZ': u'6122010000000000',u'000938.SZ': u'1000012601000000',u'000963.SZ': u'6115000000000000',u'000977.SZ': u'1000012601000000',u'000983.SZ': u'6102000000000000',u'001979.SZ': u'6118000000000000',u'002007.SZ': u'6115000000000000',u'002008.SZ': u'6108000000000000'}def standardize_series(se):se_std = se.std()se_mean = se.mean()return (se - se_mean)/se_std
total_data = pd.read_csv('total_data.csv', index_col=0)
total_data['group'] = total_data['sec_id'].apply(lambda x: ind_dict[x])
total_data['neuted_score'] = total_data.groupby(['date', 'group'])['z-score'].apply(standardize_series)
total_data.to_csv('total_data.csv')

这个时候,我们再打开total_data.csv中,就可以看到又多了一列neuted_score,如此,我们的行业中性也就结束了。

目前,我们暂时只进行行业中性,然后进行因子的回测。

多因子模型之因子(信号)测试平台----因子值的处理(二)相关推荐

  1. 多因子模型之因子(信号)测试平台----因子值的处理(一)

    广告:本人的单因子测试视频教程https://edu.csdn.net/course/detail/25572 在前面一节,我们成功计算出来了因子值. 在开始今天的内容前,我们要先了解几个概念.许多书 ...

  2. 网络测试软件smartest,AGILENT-93K的混合信号测试解决方案

    1 前言 具有混合信号功能的芯片正越来越多地出现在人们的生活中.通讯领域的 MODEM. CODEC 和飞速发展的手机芯片,视频处理器领域的MPEG.DVD芯片,带有内嵌的ADC或DAC的微控制器芯片 ...

  3. 多因子模型之因子(信号)测试平台----计算因子值

    广告:本人的单因子测试视频教程https://edu.csdn.net/course/detail/25572 近一个半月疯狂的接触多因子模型,其中对于单个因子的回测,是最熟的.而对于单个因子,或者叫 ...

  4. 多因子模型水平测试题试答(因子部分)

    转自:https://zhuanlan.zhihu.com/p/22823948?refer=jjscience 作者:江嘉键 链接:https://zhuanlan.zhihu.com/p/2282 ...

  5. python写因子策略_单因子策略进阶版 本篇延续(第三期:单因子策略入门版),介绍如何使用优矿平台编写策略代码,以股息率作为择股条件,自动筛选出股息率前十名的股... - 雪球...

    来源:雪球App,作者: 爱喝豆汁的投资者,(https://xueqiu.com/2680567071/130470562) 本篇延续(第三期:单因子策略入门版),介绍如何使用优矿平台编写策略代码, ...

  6. 信号时域分析方法的理解(峰值因子、脉冲因子、裕度因子、峭度因子、波形因子和偏度等)

    最近要做关于信号处理的一些工作,涉及时域.频域分析,滤波.神经网络以及贝叶斯等内容.在此做一些整理,作为梳理思路的笔记,也希望能对读者有所帮助. 文章如要转载请私信与我联系,并注明来源知乎专栏与信号处 ...

  7. 小米网络信号测试软件,【小米5X评测】高通:骁龙625移动平台Modem及信号是亮点_手机评测-中关村在线...

    高通:骁龙625移动平台Modem及信号是亮点 骁龙移动平台=高跑分?如果你一直这样认为那就错了:高运算性能只是它真正实力的冰山一角.举个例子,你或许不知道,高速+高效的网络连接也是骁龙移动平台能够提 ...

  8. lte基站信号测试软件,是德科技TD-LTE基站性能测试方案

    引言 LTE(Long Term EvoluTIon长期演进)技术是第三代移动通信演进的主要方向.作为一种先进的技术,LTE系统在提高峰值数据速率.小区边缘速率.频谱利用率.控制面和用户面时延以及降低 ...

  9. alpha因子常见问题_多因子小技巧整理

    看知乎上很多矿友一直在讨论如何挑选因子.使用因子进行预测. 找了一下社区的相关帖子,做个整理. 本文从因子的相关性入手,用不同因子组合.剔除高度相关因子后再进行降维处理,利用所得各风格信号预测股价走势 ...

最新文章

  1. 销售组织与工厂对照表
  2. CVPR 2017 《Object Detection in Videos with Tubelet Proposal Networks》论文笔记
  3. Bootstrap概述
  4. [css] 为什么会出现浮动?在什么时候需要清除浮动呢?
  5. 关于android:windowNoTitle不起作用的解决办法
  6. VS2019编译 当前最新版chromium
  7. Java基础---面向对象(OOP)
  8. 喜大普奔!Django官方文档终于出中文版了
  9. 免费smtp服务器地址参数
  10. 企业高效管理十大定律!「管理谋略」
  11. marlab中主成分得分怎么求_数学无耻得分法,独家秘密,快点用起来
  12. Ghost xp NetMeeting不能共享桌面的解决办法
  13. 解析:WMS仓库管理系统是什么,可以提供什么协助
  14. 老李分享:《Java Performance》笔记2——JVM命令行选项及垃圾收集日志解析 2
  15. 信道容量 matlab,离散无记忆信道容量的matlab算法
  16. WebGoat攻略 for Mac(1)
  17. 注册表启动项设置方法
  18. 网络号和主机号的计算
  19. 物联网数据卡系统源码——物联网的主要应用领域
  20. 万物皆可集成系列:低代码释放用友深度价值(1)—系统对接集成

热门文章

  1. CSS学习笔记(狂神-完整版)
  2. Translating and Segmenting Multi-modal Medical Volumes with Cycle- and Shape-Consistency GAN(简介)
  3. 6.4.1最小生成树
  4. USDD升级,孙哥大棋局又落一子
  5. 如何才能快速准确地获得客户资源?
  6. 听完计算机知识讲座后感悟,计算机知识讲座观后感
  7. JS 全屏和退出全屏
  8. 择时方法综述【广发金融工程研究】
  9. android ios 上传图片到服务器,Android与iOS手机照片互传技巧分享
  10. 饭店房租租赁合同违约金具体的标准是多少