广告:本人的单因子测试视频教程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分组,所以,需要一些时间的操作,但都是很基础的。

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

  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. shell版俄罗斯方块
  2. phpstudy下的mysql升级
  3. Unable to instantiate Action, MenuAction, defined for 'QueryMenuAll' in namespace '/'MenuAction
  4. 异常记录-No module named ‘numpy.core._multiarray_umath
  5. sdut-1158 C语言实验——两个数最大
  6. mysql accessdenies_mysql Access denied for user root@localhost错误解决方法总结(转)
  7. 通信教程 | 串口丢数据常见的原因
  8. 首行缩进,文字之间的间距
  9. android 图片画圆,在Android中画圆形图片的几种办法
  10. C# vs2019 智能提示中文突然变成英文
  11. 【Python绘图】Python画动态条形图(横向直方图)
  12. 创新易死需要勇气 需要抵御“抄袭”心魔
  13. Allegro和Alitum Desiger PCB文件互转方法
  14. 【论文阅读】AD-GCL:Adversarial Graph Augmentation to Improve Graph Contrastive Learning
  15. P3763 [TJOI2017]DNA (FFT)
  16. 【已解决】Caused by: java.lang.ClassNotFoundException: org.springframework.boot.context.properties.
  17. FOC——17.PCB布局和走线
  18. C++读取BWT901CL传感器的数据
  19. c语言中abcd的大小,技巧总结:驾照中ABCD什么意思区别 应该学C1还是C2
  20. 2022年P气瓶充装报名考试及P气瓶充装考试总结

热门文章

  1. 苹果版的ChatGPT官方Siri助手来了,立马体验
  2. 【高项】第9章 项目人力资源管理【知识点精华笔记】
  3. fmcw matlab仿真,干货 | 利用MATLAB实现FMCW雷达的距离多普勒估计
  4. Hive--OR-AND使用方法
  5. 技术解析|如何绘制密度分布图
  6. 数据驱动的种萝卜方法
  7. homestead是什么玩意? 怎么弄?
  8. Notions of Flow Networks and Flows
  9. 空间计量截面数据的模型选择问题与matlab麻瓜都会用的代码,妈妈在也不用担心我不知道选空间滞后、空间误差、还是空间杜宾了
  10. R语言医学数据分析实战(三)数据可视化