多因子模型之因子(信号)测试平台----因子值的处理(一)
广告:本人的单因子测试视频教程https://edu.csdn.net/course/detail/25572
在前面一节,我们成功计算出来了因子值。
在开始今天的内容前,我们要先了解几个概念。许多书本上,可能不会这样讲,这个仅仅是笔者的一些感悟。
0.几种factor
先来弄清楚笔者自己总结的factor的生命周期
1)raw facto
raw factor就是上一次我们计算出来的factor,没有什么可以更多的解释的。
2)Winsorized-raw factor
我们知道,金融数据充满了噪音,也就是意味着,有很多异常值,所以我们要对这些股票的存货周转率值做一个处理。比如说,对于异常值,我们可以用Winsorized或者直接剔除的方法。Winsorized方法比较常用,但是也不一定有效。Winsorized方法说白了,就是让所有的raw factor有一个上下限,大于这个上限的,就等于上限的值,小于下限的,就等于下限值。通常,上下限可以用分位数或者标准差来体现。
3)raw z-score
这一步其实就是factor的标准化,也就是,减去均值,然后除以标准差。相对而言好理解。把因子值都做标准化后,是为了以后很多因子可以相互combine。如果不做标准化,量纲就不一样,组合在一起就不会有什么意义。
4)neut-score
我们做完标准化后,需要对因子值做中性化处理。包括行业中性和风格中性。
行业中性比较简单,只要满足行业内因子值均值为0,标准差为1,也就是,行业内部再做一次标准化就可以了。而风格中性则需要和风格因子的secore,或者说,exposure做回归,然后取残差作为最后的neut-score。
这里,前面三步还是比较容易实现的,但是第四部我们需要一个风格因子的score,这就很尴尬了,因为我们并不知道有哪些风格因子。有一个神一般的存在,叫做barra,读者可以自己去百度一下。总而言之,这个数据供应商给了我们十个风格因子以及每一个因子的score(exposure)。当然,我们也可以自己去建立这个。
这一小节,我们先尝试前面三步,后续,我们自己建立一两个风格因子来neut。
1.数据整合
为了能够实现上面这些功能,我们首先要有一个把所有数据放在一起的数据集。
def data_df_get(stock_file_name):df = pd.read_csv('./price_data/%s' % stock_file_name, index_col=0, parse_dates=True)df['sec_id'] = stock_file_name[:-4]return dfpd.concat([data_df_get(stock_file_name) for stock_file_name in univers]).to_csv('total_data.csv')
然后,我们可以获得我们universe中所有股票的集合,同时加了一个sec_id字段。
2.去极值与标准化
import datetime
def winsorize_series(se):q = se.quantile([0.025, 0.975])if isinstance(q, pd.Series) and len(q) == 2:se[se < q.iloc[0]] = q.iloc[0]se[se > q.iloc[1]] = q.iloc[1]return sedef standardize_series(se):se_std = se.std()se_mean = se.mean()return (se - se_mean)/se_stdpaser = lambda x: datetime.datetime.strptime(x, "%Y-%m-%d %H:%M:%S.%f").strftime('%Y-%m-%d')
all_data = pd.read_csv('total_data.csv')
all_data.rename(columns={all_data.columns[0]: 'date'}, inplace=True)
all_data['date'] = all_data['date'].apply(paser)
all_data.sort_values(['date', 'sec_id'], inplace=True)
all_data['win_secore'] = all_data.groupby('date')['raw_factor'].apply(winsorize_series)
all_data['z-score'] = all_data.groupby('date')['win_secore'].apply(standardize_series)
all_data.to_csv('total_data.csv')
上面这段代码,让我们读入了刚才的total_data,然后计算出去极值后的score和标准化后的score。读者运行后,大概csv文件是下面这样的。
当然,上面的代码中,由于要对date分组,所以,需要一些时间的操作,但都是很基础的。
多因子模型之因子(信号)测试平台----因子值的处理(一)相关推荐
- 多因子模型之因子(信号)测试平台----因子值的处理(二)
广告:本人的单因子测试视频教程https://edu.csdn.net/course/detail/25572 我们知道,一个因子值的处理大致分为三个步骤,去极值.标准化.中性化,上次我们对因子值进行 ...
- 网络测试软件smartest,AGILENT-93K的混合信号测试解决方案
1 前言 具有混合信号功能的芯片正越来越多地出现在人们的生活中.通讯领域的 MODEM. CODEC 和飞速发展的手机芯片,视频处理器领域的MPEG.DVD芯片,带有内嵌的ADC或DAC的微控制器芯片 ...
- 多因子模型之因子(信号)测试平台----计算因子值
广告:本人的单因子测试视频教程https://edu.csdn.net/course/detail/25572 近一个半月疯狂的接触多因子模型,其中对于单个因子的回测,是最熟的.而对于单个因子,或者叫 ...
- 多因子模型水平测试题试答(因子部分)
转自:https://zhuanlan.zhihu.com/p/22823948?refer=jjscience 作者:江嘉键 链接:https://zhuanlan.zhihu.com/p/2282 ...
- python写因子策略_单因子策略进阶版 本篇延续(第三期:单因子策略入门版),介绍如何使用优矿平台编写策略代码,以股息率作为择股条件,自动筛选出股息率前十名的股... - 雪球...
来源:雪球App,作者: 爱喝豆汁的投资者,(https://xueqiu.com/2680567071/130470562) 本篇延续(第三期:单因子策略入门版),介绍如何使用优矿平台编写策略代码, ...
- 信号时域分析方法的理解(峰值因子、脉冲因子、裕度因子、峭度因子、波形因子和偏度等)
最近要做关于信号处理的一些工作,涉及时域.频域分析,滤波.神经网络以及贝叶斯等内容.在此做一些整理,作为梳理思路的笔记,也希望能对读者有所帮助. 文章如要转载请私信与我联系,并注明来源知乎专栏与信号处 ...
- 小米网络信号测试软件,【小米5X评测】高通:骁龙625移动平台Modem及信号是亮点_手机评测-中关村在线...
高通:骁龙625移动平台Modem及信号是亮点 骁龙移动平台=高跑分?如果你一直这样认为那就错了:高运算性能只是它真正实力的冰山一角.举个例子,你或许不知道,高速+高效的网络连接也是骁龙移动平台能够提 ...
- lte基站信号测试软件,是德科技TD-LTE基站性能测试方案
引言 LTE(Long Term EvoluTIon长期演进)技术是第三代移动通信演进的主要方向.作为一种先进的技术,LTE系统在提高峰值数据速率.小区边缘速率.频谱利用率.控制面和用户面时延以及降低 ...
- alpha因子常见问题_多因子小技巧整理
看知乎上很多矿友一直在讨论如何挑选因子.使用因子进行预测. 找了一下社区的相关帖子,做个整理. 本文从因子的相关性入手,用不同因子组合.剔除高度相关因子后再进行降维处理,利用所得各风格信号预测股价走势 ...
最新文章
- shell版俄罗斯方块
- phpstudy下的mysql升级
- Unable to instantiate Action, MenuAction, defined for 'QueryMenuAll' in namespace '/'MenuAction
- 异常记录-No module named ‘numpy.core._multiarray_umath
- sdut-1158 C语言实验——两个数最大
- mysql accessdenies_mysql Access denied for user root@localhost错误解决方法总结(转)
- 通信教程 | 串口丢数据常见的原因
- 首行缩进,文字之间的间距
- android 图片画圆,在Android中画圆形图片的几种办法
- C# vs2019 智能提示中文突然变成英文
- 【Python绘图】Python画动态条形图(横向直方图)
- 创新易死需要勇气 需要抵御“抄袭”心魔
- Allegro和Alitum Desiger PCB文件互转方法
- 【论文阅读】AD-GCL:Adversarial Graph Augmentation to Improve Graph Contrastive Learning
- P3763 [TJOI2017]DNA (FFT)
- 【已解决】Caused by: java.lang.ClassNotFoundException: org.springframework.boot.context.properties.
- FOC——17.PCB布局和走线
- C++读取BWT901CL传感器的数据
- c语言中abcd的大小,技巧总结:驾照中ABCD什么意思区别 应该学C1还是C2
- 2022年P气瓶充装报名考试及P气瓶充装考试总结