一、因子信号的获取

极值处理与标准化:去除极值,降低极值对于数据的影响
标准化:对不同数据进行同一处理的时候需要同一量纲。这样因子与因子就可以进行计算

极值处理:Triming和Winsorizing,一般因子如果极值是不对的原因造成,这样的因子就不能使用了,就Triming,去除这些不用的因子。Winsorizing:当数据中有因子的极值,这样的因子不是错误的,所以只要Winsorizing,对数据进行压缩一下。

中心化:类似于提纯,取出一个因子中不同因素的影响,对因子进行提纯。

行业中性:提出行业的区别,不局限与行业的影响。

1.1 第一个因子市值原始信号

市值因子需要取负的log:
因子市场逻辑: 1.小市值的公司通常是有着较大的经营风险,投资者应该获得风险补偿;
2.小市值的公司成长性较高,往往都是轻资产的公司。

取对数,会使得对数的值越小会越大,所以需要还取一个log。

为什么是要取对数呢?证券市场上市值大的与小的差异很大,而且大市值的公司少。简而言之,市值的分布如下,而我们通常希望因子的分布尽可能是一个正态分布。

1.2 市值因子信号的计算

import pandas as pd
import numpy as np
%matplotlib inlinesize_data = pd.read_hdf('../data/demo_tpd.h5')


取出1月22号的所有股票,再取出其市值,再取-log变换。

size_data_one_day = size_data[size_data['data_date'] == '2013-01-22']
size_data_one_day.head()
size_data_one_day['mv'].hist(bins=100)#取-log变换
size_data['signal_raw'] = -np.log(size_data['mv'])
size_data_one_day = size_data[size_data['data_date'] == '2013-01-22']
size_data_one_day['signal_raw'].hist(bins=100)



保存转换后-log后的市值数据到本地

size_data[['data_date', 'secucode', 'signal_raw']].to_hdf('size_signal_raw.h5', key='data')

二、 因子预处理

2.1 极值处理


windsorized data

signal = pd.read_hdf('size_signal_raw.h5',key='data')
signal.head()


取一天的数据实验一下

signal_one_day = signal[signal['data_date'] == '2013-01-28']
signal_one_day.signal_raw.hist(bins=100)

ceiling = signal_one_day['signal_raw'].quantile(0.975)
floor = signal_one_day['signal_raw'].quantile(0.025)
# 最低的赋值,最高的赋值
signal_one_day['signal_raw'].apply(lambda x:ceiling if x >ceiling else (floor if x < floor else x)).hist(bins = 100)

将上述的过程绘制成函数,对每一天都进行win操作

def winsor(signal_one_day):ceiling = signal_one_day['signal_raw'].quantile(0.975)floor = signal_one_day['signal_raw'].quantile(0.025)signal_one_day.loc[signal_one_day['signal_raw'] >ceiling,'signal_raw'] =ceillingsignal_one_day.loc[signal_one_day['signal_raw'] < floor,'signal_raw'] = floorreturn signal_one_day['signal_raw']
signal.sort_values(['data_date','secucode'],inplace=True)
signal['signal_win'] = signal.groupby('data_date').apply(winsor).values

2.2 标准化处理


定义标准化函数

def std(ser):return (ser - ser.mean())/ser.std()

应用函数标准化数据

signal.sort_values(['data_date','secucode'],inplace=True)
signal['signal_std'] = signal.groupby('data_date')['signal_win'].apply(std)

取出某一天的数据观察标准化情况

signal_one_day = signal[signal['data_date'] == '2013-01-22']
signal_one_day['signal_std'].hist(bins = 100)

signal_one_day['signal_std'].std()
signal_one_day['signal_std'].mean()

0.9999999999999996
-1.9805185359970363e-14

保存计算后的结果

signal[['data_date','secucode','signal_std']].to_hdf('size_signal_final.h5',key='data')

《Python量化投资》02 单因子极值-标准化预处理相关推荐

  1. 《Python量化投资》01 量化投资之单因子测试(概述,Pandas的适用)

    一. 股票aplha多因子策略介绍 量化投资是指通过数量化方式及计算机程序化发出买卖指令,以获取稳定收益为目的的交易方式.在海外的发展已有30多年的历史,其投资业绩稳定,市场规模和份额不断扩大.得到了 ...

  2. python行业中性_单因子测试(上)——因子中性化

    之前做了很多因子测试的工作,但一直没有总结,感觉很凌乱,决定花时间把这部分东西写一写,温故知新,也为后续学习打基础.首先写一下单因子测试部分,分三篇,数据预处理一篇, 回归法一篇,分层测试法一篇.本篇 ...

  3. Python量化投资与股票量化实战|StudyQuant

    <<<****[点击]传送门-加入 Python量化投资与A股量化实战课程(网易云课堂)>>>>> Python量化投资与A股量化实战课程概述 越来越多 ...

  4. python量化投资必背代码-量化投资:用Python实现金融数据的获取与整理

    小编说:数据可以说是量化投资的根本,一切投资策略都是建立在数据基础上的.本文以优矿网为例,带领大家用Python实现金融数据的获取与整理. 本文选自<Python与量化投资:从基础到实战> ...

  5. python量化投资培训清华大学深研院_GitHub - CatsJuice/quantitative-investment-learning: 使用Python进行量化投资的学习报告...

    quantitative-investment-learning 使用Python进行量化投资的学习报告 Python量化投资学习报告 CatsJuice 编辑于 2019-4-26 上一次更新: 2 ...

  6. python 彩票自动下单,从「获取数据」到「自动下单」 | 《Python量化投资入门》培训...

    原标题:从「获取数据」到「自动下单」 | <Python量化投资入门>培训 2015年年底的时候,我在学Python,中间一些问题总是搞不明白,在网上搜资料的时发现了一篇非常好的教程--& ...

  7. python训练营免费领取-21天训练营丨Python量化投资打卡第五期!学完押金全返!...

    原标题:21天训练营丨Python量化投资打卡第五期!学完押金全返! 关注我们,后台 毕业以后,你想找一份什么工作? 钱 多 的 也许你有点儿不好意思承认 但是确确实实地感觉到: 我很羡慕互联网行业和 ...

  8. 零基础学python免费网课-零基础学Python量化投资,超值线上课程反复回看

    原标题:零基础学Python量化投资,超值线上课程反复回看 超值网络课程 量化投资是一种严谨.系统化的投资方式,相比起传统投资,量化投资风险低回报高,但是它要求投资者使用数据处理分析.计算机编程技术. ...

  9. python量化投资实训班_Python量化投资实训营

    配合大鱼金融联手塑造 清华导师领衔授课,全程在清华校园上课 五天掌握Python量化投资必备技能 Python量化投资实训营 五大课程亮点 1. 结构化课程与实战教学 要深入学习量化投资,不仅需要学习 ...

最新文章

  1. 5.1matlab数据统计分析(最大值、最小值、平均值、中值、和、积、累加和、累加积、标准差、相关系数、排序)
  2. 为什么我们喜欢用 sigmoid 这类 S 型非线性变换?
  3. CRM里把用户分配给一个position的执行调试
  4. thinkpadt450s换键盘视频_ikbc c87 入门级有线机械键盘测评
  5. 24 SD配置-主数据-维护客户主记录中的保留字段
  6. DBUtils学习笔记
  7. 一段简单的代码告诉你什么叫内存溢出
  8. db2存储过程简单写法
  9. ASP.NET车辆管理系统
  10. acpi_hardware_id可以通过HID/CLD/UID/CLS/method/path获得
  11. HTML 表单元素的基本样式
  12. IPAD/IOS 访问限制密码找回方法(设置-通用-访问限制-密码的非刷机找回方法)
  13. 多核CPU的运行模式详解
  14. 笔记本重装系统如何找回之前自己自带的office
  15. 前端学习第八弹:制作一个精美书签
  16. Python绘制卫星星下点轨迹图和卫星星座图
  17. vue 如何实现点击动态更新图形验证码
  18. 关于网盘等图标出现在设备和驱动器的情况
  19. 通俗地、有效地学习Linux驱动应用(只要没更完有空就更)
  20. scrapy 爬取指定贴吧

热门文章

  1. android photoview 图片放大缩放功能 ImageView
  2. Preface|前言
  3. 高教社杯2022数学建模国赛C题思路
  4. layui 树形组件(tree)支持双击事件
  5. java 微信小程序的校园跑腿系统springboot
  6. 入阿里的老生常谈:学计算机的专科生出路在哪里?我们还有出路吗?
  7. 在Makefile中无缝连接字符串
  8. element 2.x组件
  9. 【算法/C语言】大整数乘法(分治)
  10. python操作ppt的模块_详解 Python 操作 PPT 的各种骚操作!