2. 量化多因子数据清洗——去极值、标准化、正交化、中性化
一、去极值
1. MAD
MAD(mean absolute deviation)又称为绝对值差中位数法,是一种先需计算所有因子与平均值之间的距离总和来检测离群值的方法.
def extreme_MAD(rawdata, n):
median = rawdata.quantile(0.5) # 找出中位数
new_median = (abs((rawdata - median)).quantile(0.5)) # 偏差值的中位数
dt_up = median + n * new_median # 上限
dt_down = median - n * new_median # 下限
return rawdata.clip(dt_down, dt_up, axis=1) # 超出上下限的值,赋值为上下限
data7 = filter_extreme_MAD(data6.T,7).T
print(data7)
注:根据dataframe的数据格式,看是否倒置后运算
2. 3σ
3σ法又称为标准差法。标准差本身可以体现因子的离散程度,是基于因子的平均值 Xmean而定的。
def extreme_3sigma(rawdata):
dt_up = rawdata.mean() + 3 * rawdata.std()
dt_down = rawdata.mean() - 3 * rawdata.std()
rawdata = rawdata.clip(dt_down, dt_up, axis=1)
return rawdata
data8 = extreme_3sigma(data6.T).T
print(data8)
注:根据dataframe的数据格式,看是否倒置后运算
3. 百分位法
将因子值进行升序的排序,对排位百分位高于97.5%或排位百分位低于2.5%的因子值,进行类似于 MAD 、 3σ 的方法进行调整。
def filter_extreme_percentile(series,min = 0.10,max = 0.90): #百分位法
series = series.sort_values()
q = series.quantile([min,max])
return np.clip(series,q.iloc[0],q.iloc[1])
def extreme_percentile(rawdata, min=0.025, max=0.975):
p = rawdata.quantile([min, max]) # 得到上下限的值
return rawdata.clip(p.loc[min, :], p.loc[max, :], axis=1)
注:根据dataframe的数据格式,看是否倒置后运算
二、标准化
- 离差标准化(也称线性归一化)

d = (t - t.min( )) / (t.max() - t.min())
注:根据dataframe的数据格式, 看是否倒置后运算
2. 标准差标准化

d = (t - t.mean())/t.std()
注:根据dataframe的数据格式, 看是否倒置后运算
三、正交化
传统方法的缺陷是:如果因子间存在较强的相关性,通过上述加权方式,最终会导致因子对于某种风格的因子重复暴露。使得整个组合的表现严重偏向于该因子,削弱其他因子的效果。
正交化目的是消除因子间的相关性,并保持因子对于收益的解释度不变。
首先进行标准化,使其在同一量纲上可比。
def orth(x):
M = (x.shape[0] - 1) * np.cov(x.T.astype(float)) # 矩阵
D, U = np.linalg.eig(M) # 获取特征值和特征向量
U = np.mat(U) # 转换为np中的矩阵
d = np.mat(np.diag(D ** (-0.5))) # 对特征根元素开(-0.5)指数
S = U * d * U.T # 获取过渡矩阵S
factors_orthogonal_mat = np.mat(x) * S # 获取对称正交矩阵
x = pd.DataFrame(factors_orthogonal_mat, columns=x.columns, index=x.index)
return x
使用截面数据,使用完后检验其相关性是否变小
rawdata.corr()
orth(x).corr()
四、中性化
传统方法的缺陷是对于因子暴露在不同行业、市值上的分布不均匀,比如在小市值医药股上数值偏高,其他偏低,导致可比性下降。
如果是基本面分析需要针对不同的行业进行对比,而中性化直接通过回归取残差来避免类似问题。
中性化的方式是对因子暴露值和市值、行业做线性回归,最后用剩下的残差替代因子值。这个残差肯定是跟市值和行业无关的。
(1)为股票池添加上行业标记,0、1标记
dummy = pd.read_csv('industry_dummy.csv', index_col=0)

import numpy as np
import pandas as pd
import math
from statsmodels import regression
import statsmodels.api as sm
#factor: 以code为index, 因子值为value的series
y = factors
#市值中性化
#mkt_ca: 以股票为index, 市值为value的series
x = mkt_cap.apply(lambda x:math.log(x))
#行业中性化
x = dummy
result = sm.OLS(y.astype(float),x.astype(float)).fit()
output = result.resid
相关文章:
2. 量化多因子数据清洗——去极值、标准化、正交化、中性化
一、去极值 1. MAD MAD(mean absolute deviation)又称为绝对值差中位数法,是一种先需计算所有因子与平均值之间的距离总和来检测离群值的方法. def extreme_MAD(rawdata, n): median rawdata.quantile(0.5) # 找出中位数 new_median (abs(…...
皮卡丘反射型XSS
1.反射型xss(get) 进入反射型xss(get)的关卡,我们可以看到如下页面 先输入合法数据查看情况,例如输入“kobe” 再随便输入一个,比如我舍友的外号“xunlei”,“666”,嘿嘿嘿 F12查看源代码,发现你输入的数…...
巧计口诀-软件测试的生命周期,黑盒测试设计方法
目录 1。口诀 2。黑盒设计方法适用场合 3。黑盒设计方法详解 3.1。等价类法 3.2。 边界值法 3.3。判定表法 3.4。因果表 3.5。状态迁移图 3.6。场景法 3.7。正交实验法 3.8。错误推断法 1。口诀 又到了找工作的日子,背诵这些基本知识和概念又开始了。我找…...
Android系统的Ashmem匿名共享内存系统分析(1)- Ashmem驱动
声明 其实对于Android系统的Ashmem匿名共享内存系统早就有分析的想法,记得2019年6、7月份Mr.Deng离职期间约定一起对其进行研究的,但因为我个人问题没能实施这个计划,留下些许遗憾…文中参考了很多书籍及博客内容,可能涉及的比较…...
Redis 事务详细介绍
事务 注意:Redis单条命令是保证原子性的;但是事务不保证原子性! Redis事务没有隔离级别的概念,所有的命令在事务中,并没有直接被执行,只有发起执行命令时才执行 Redis事务本质:一组命令的集合&…...
2023-5-29第二十九天
consult咨询,查阅,商讨 specialize专门从事,专攻 inspect检查 pattern图案,方式 optimize使最优化 ensemble整体,全体 subscript下标 subscribe签名 sector行业,部门 precedence优先,优…...
【第三方库】PHP实现创建PDF文件和编辑PDF文件
目录 引入Setasign/fpdf、Setasign/fpdi 解决写入中文时乱码问题 1.下载并放置中文语言包(他人封装):https://github.com/DCgithub21/cd_FPDF 2.编写并运行生成字体文件的程序文件(addFont.php) 中文字体举例&…...
线程的回收及内存演示
ps -elf|grep mthread 查看进程和线程 top -p 6513 查看内存 一、线程的回收 使用pthread_join 函数: #include <pthread.h> int pthread_join(pthread_t thread, void **retval); 注意:pthread_join 是阻塞函数,如果回收的线…...
高精度倾角传感器测量原理
高精度倾角传感器测量原理技术参数 1.性能参数 测量范围:0~30 测量精度:0.06 分 辨 率:0.0001 测量方向:X,Y 时间漂移:0.08/月 更新时间:30ms 上电启动时间:0.5s 2.电…...
Android 12 init流程分析
前言 刚开始接触需要了解的概念理解过程遇到了什么问题代码的位置和流程分析如何分析和调试遇到的问题 基本的概念 .rc 文件 这个文件在Android framework 中服务相关代码可以看到。类似surfaceflinger.rc 、mediaserver.rc等等。 在这些rc里面定义了某一个service࿰…...
【Python小技巧】Python操控Chrome浏览器实现网页打开、切换、关闭(送独家Chrome操作打包类源码、Chrome浏览器Cookie在哪里?)
文章目录 前言一、什么时候需要用Python控制浏览器?二、下载Chrome浏览器驱动文件1. 安装Chrome浏览器并查看版本2. 下载浏览器驱动文件3. 解压到python编译器目录(python.exe所在目录) 三、Python控制Chrome浏览器(附源代码&…...
数据在内存中的存储
目录 一、数据类型的介绍 1.C语言基本内置类型 2.类型基本归类 1.整形 2.浮点型 3.构造类型 4.指针类型 二、整形在内存中的存储 三、浮点数在内次中的存储 1.存储形式 2.对M、E的特殊规定 (1)对M的特殊规定 (2)对E的…...
Rust in Action笔记 第三章 复合数据类型
通过#[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZI50wIh1-1685693144796)(null)]),不带感叹号的#[allow]仅为下一行代码提供属性,属性有多种分类,文中出现的allow属性称为诊断属性(Diag…...
算法基础学习笔记——⑬高斯消元\组合计数\容斥原理
✨博主:命运之光 ✨专栏:算法基础学习 目录 ✨高斯消元 ✨组合计数 🍓通过预处理逆元的方式求组合数: 🍓Lucas定理: 🍓分解质因数法求组合数: 前言:算法学习笔记记录日常分享,需…...
渗透测试辅助工具箱
0x01 说明 渗透测试辅助工具箱 运行条件:jdk8 双击即可运行 反弹shell,命令生成器,自动编码,输入对应IP端口即可,实现一劳永逸,集成一些小工具,辅助渗透,提高效率 输入框说明 L…...
chatgpt赋能python:Python后退命令:如何让你的程序退回到之前的状态
Python后退命令:如何让你的程序退回到之前的状态 Python是一种高级编程语言,因其易读易懂而闻名于世。Python中有很多命令用于编写程序,其中一项重要的命令是后退命令。本文将介绍Python后退命令的使用方法,并为您提供详细的步骤…...
OJ练习第127题——统计范围内的元音字符串数
统计范围内的元音字符串数 力扣链接:2559. 统计范围内的元音字符串数 题目描述 给你一个下标从 0 开始的字符串数组 words 以及一个二维整数数组 queries 。 每个查询 queries[i] [li, ri] 会要求我们统计在 words 中下标在 li 到 ri 范围内(包含 这…...
图片优化: CssSprites与Base64编码
文章目录 1 css sprites1.1 CSS Sprites是什么1.2 为什么需要css sprites1.3 优势1.4 使用原理1.5 DEMO 2 图片Base64编码 1 css sprites 1.1 CSS Sprites是什么 CSS Sprites是一种网页图片应用处理方式。 又被解释为: CSS精灵CSS图像拼合CSS贴图定位CSS图片精灵…...
JavaScript中的Map、WeakMap和Object的区别
Map Map是一种新的数据结构,它允许使用任何数据类型(包括对象和基本数据类型)作为键。 Map的一些特性包括: 保持键的插入顺序:当遍历Map时,键值对会按照插入顺序返回。键可以是任意类型:与Obj…...
华为OD机试之打印机队列(Java源码)
打印机队列 题目描述 有5台打印机打印文件,每台打印机有自己的待打印队列。 因为打印的文件内容有轻重缓急之分,所以队列中的文件有1~10不同的代先级,其中 数字越大优先级越高 打印机会从自己的待打印队列中选择优先级最高的文件来打印。 如…...
2026终极测评:16款降AIGC工具横评,论文降重降ai率终极答案!
随着AI写作技术的迅猛发展,越来越多的学术创作者开始依赖各类生成工具提升效率。然而,2026年各大高校与科研机构对AIGC内容的检测标准愈发严格,论文中的一丝AI痕迹都可能成为被质疑的导火索。面对日益严峻的查重与AIGC检测压力,如…...
终极指南:5分钟学会使用html-to-docx将HTML完美转换为Word文档
终极指南:5分钟学会使用html-to-docx将HTML完美转换为Word文档 【免费下载链接】html-to-docx HTML to DOCX converter 项目地址: https://gitcode.com/gh_mirrors/ht/html-to-docx 你是否曾经需要将网页内容转换为专业的Word文档,却发现格式完全…...
SAP-ABAP:变量、常量、结构与内表声明(10篇博客合集) 第三篇:STRUCT结构声明全指南:嵌套结构与深层结构的差异与选型
变量、常量、结构与内表声明(10篇博客合集) 第三篇:STRUCT结构声明全指南:嵌套结构与深层结构的差异与选型在ABAP开发中,结构体(Structure)是将多个字段组合成一个逻辑单元的核心手段。从简单的…...
DazToBlender插件终极指南:如何实现Daz Studio到Blender的无缝资产迁移
DazToBlender插件终极指南:如何实现Daz Studio到Blender的无缝资产迁移 【免费下载链接】DazToBlender Daz to Blender Bridge 项目地址: https://gitcode.com/gh_mirrors/da/DazToBlender 还在为Daz Studio和Blender之间的3D资产转移而头疼吗?&a…...
预训练模型技术演进史:从Word2Vec到多模态大模型
1. 项目概述:这本“沙滩读物”到底在讲什么? “Beach Reading: a Short History of Pre-Trained Models”——光看标题,你可能会以为这是本躺在夏威夷躺椅上、椰子水还没喝完就能翻完的轻松小册子。但别被“Beach Reading”这个温柔前缀骗了。…...
通过curl命令快速测试TaotokenAPI兼容性与连通性教程
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 通过curl命令快速测试Taotoken API兼容性与连通性教程 在集成大模型服务时,开发者通常需要一种快速、轻量的方式来验证…...
DCIM管理系统是什么?它的应用价值与关键功能有哪些?
DCIM管理系统的定义与功能概述 是现代数据中心重要的工具,目的是融合IT管理与设备监控,进而实现高效的容量规划与设备维护。这个系统的核心组件包括实时监控、资产管理及环境监控功能,利用综合运用这些工具,操作人员能够快速识别…...
2026制造业数字化转型:Agent委外加工成本智能核算功能详解与应用
站在2026年这个智能体(Agent)全面爆发的时间节点回望,企业数字化转型已从早期的“数据上云”演进到了“决策自动化”的深度应用阶段。根据IDC与Gartner联合发布的《2026年全球智能体产业发展白皮书》,具备深度业务逻辑处理能力的智…...
八股整理之JVM篇
JVM的内存模型介绍一下根据 JDK 8 规范,JVM 运行时内存共分为虚拟机栈、堆、元空间、程序计数器、本地方法栈五个部分。还有一部分内存叫直接内存,属于操作系统的本地内存,也是可以直接操作的。JVM的内存结构主要分为以下几个部分:…...
React Starter Kit 与Create React App对比:哪个更适合你的项目?
React Starter Kit 与Create React App对比:哪个更适合你的项目? 【免费下载链接】react-starter-kit Start your first React App. By using React, Redux, and React-Router. 项目地址: https://gitcode.com/gh_mirrors/reac/react-starter-kit …...
