量化交易-因子有效性分析

news2024/11/17 16:45:50

量化交易-因子有效性分析

  • 一、 因子的 IC 分析
  • 2. 信息系数
  • 3. 举例
  • 4. 因子处理
    • 4.1 去极值
    • 4.2 标准化
    • 4.3 市值中性化


一、 因子的 IC 分析

  • 判断因子与收益的相关性强度

  • 分析结果

    • 因子平均收益
    • IC mean
    • IC std
    • IC > 0.02:IC大约0.02的比例,越大越严格
    • IR:信息比率(历史表现的稳定性), IR = IC mean / IC std

2. 信息系数

  • 定义:某一期的IC指的是 该期因子暴露度 和股票 下期的实际回报值 在横截面上的相关系数。
    在这里插入图片描述

  • 因子暴露度:因子本身数值

  • 周期一天:该期的因子值(2023.1.11)、下期(2023.1.12)收益率(截面数据)

  • 计算方式:斯皮尔曼相关系数(Rank IC)

    • 斯皮尔曼相关系数表明 X (独立变量) 和 Y (依赖变量)的相关方向。 如果当X增加时, Y 趋向于增加, 斯皮尔曼相关系数则为正。
    • 与之前的皮尔逊相关系数大小性质一样,取值 [-1, 1]之间。
  • 信息系数API

    import scipy.stats as st
    
    st.spearmanr(fund['pe_ratio'], fund['return'])
    
  • 收益率计算

在这里插入图片描述

  • 因子的收益率分析
    • 确定因子的标的方向
    • 升序(因子越小越好)、降序(因子越大越好)、中性(方向不确定)

3. 举例

  • 计算价差 每5分钟的 IC值 (5分钟为一个截面)

    • 获取 9 : 30 的 因子暴露值
    • 计算 9 : 35 的 收益率:return = (9:35 - 9:30) / 9:30
    • 计算相关系数
  • IF 2212 和 IF2211 价差以及动量因子

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mn8YkgDS-1674196433933)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20230113172539870.png)]

求整个周期的IC值,为负值:在这里插入图片描述

4. 因子处理

4.1 去极值

将极端值拉回到正常值(不是删除) 分位数去极值、中位数绝对偏差去极值、正态分布去极值。

  • 分位数去极值

    • 中位数:大小排序,中间位置的数据
    • 四分位数:四等分(Q1、Q2、Q3)
    • 百分位数:25%分位数
    • 指定分位数外的异常点用分位数点替换
    from scipy.stats.mstats import winsorize
    winsorize(a, limits=0.25)  # 两端值
    
  • 中位数绝对偏差去极值(推荐)

    • 找中位数

    • 每个因子与中位数的绝对偏差

    • 得到绝对偏差的中位数(MAD)

    • 按照MAD_e = 1.4826*MAD,然后确定参数n,做出调整

      def mad(factor):
          """
          三倍中位数去极值
          :param factor:
          :return:
          """
      
          med = np.median(factor)
          mad = np.median(abs(factor-med))
      
          high = med +(3 * 1.4826 * mad)
          low = med -(3 * 1.4826 * mad)
      
          factor = np.where(factor > high, high, factor)
          factor = np.where(factor < low, low, factor)
      
          return factor
      
  • 正态分布去极值(很少使用)

    • 3 sigma原则
def three_sigma(factor):
    """
    正态分布去极值
    :param factor:
    :return:
    """
    mean = factor.mean()
    std = factor.std()

    high = mean + (3 * std)
    low = mean - (3 * std)

    factor = np.where(factor > high, high, factor)
    factor = np.where(factor < low, low, factor)

    std = StandardScaler()
    factor = std.fit(factor)

    return factor

4.2 标准化

def standard(factor):
    """
    新的X数据集方差为1,均值为0
    :param factor:
    :return:
    """
    # values = factor.values.reshape(-1, 1)
    # std = StandardScaler()
    # factor = std.fit_transform(values).T
    # return factor[0]

    mean = factor.mean()
    std = factor.std()
    factor = (factor - mean) / std

    return factor

4.3 市值中性化

防止选择的股票在固定的某些股票当中(因子受市值影响)

  • 回归去除法
def remove_market_value(factor, market_value):
    """

    :param factor:
    :param market_value:
    :return:
    """
    from sklearn.linear_model import LinearRegression

    x = factor.reshape(-1, 1)
    y = market_value

    lr = LinearRegression()
    lr.fit(x, y)

    return factor - lr.predict(x)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/174452.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

leetcode刷题记录总结-1. 数组

文章目录一、二分查找[704. 二分查找](https://leetcode.cn/problems/binary-search/)题解小结[35. 搜索插入位置](https://leetcode.cn/problems/search-insert-position/)题解1&#xff1a;暴力解法题解2&#xff1a;二分法[34. 在排序数组中查找元素的第一个和最后一个位置]…

Day865.基础架构 -MySQL实战

基础架构&#xff1a;一条SQL查询语句是如何执行的 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的关于基础架构&#xff1a;一条SQL查询语句是如何执行的的内容。 经常说&#xff0c;看一个事儿千万不要直接陷入细节里&#xff0c;应该先鸟瞰其全貌&#xff0c;这样能够…

01-使用Camera Raw滤镜调色

1.需求展示 点击下载图片素材 原图 调色后, 具有电影感 2.操作步骤 1.打开原图 1.我使用的是ps2018, 打开原图, 图层名字可以自定义 2.拷贝底片建立一个新图层 养成好习惯, 每种操作都建立新图层来进行, 这样如果修坏了, 直接把该图层删除就行了, 还原图片比较快捷 3…

[QMT]03-让QMT支持从Tushare获取数据

QMT安装python第三方库为了兼容性&#xff0c;需要本地使用python3.6.8版本&#xff0c;因为刚刚下载的QMT python版本就是3.6.8.如果你本地有其他python版本的话&#xff0c;建议使用虚拟环境操作。这样不会影响你原有的python版本以及已经安装的第三方库。因为一机装多版本的…

Java设计模式-中介模式/中介模式具体怎么使用,使用场景又是什么

继续整理记录这段时间来的收获&#xff0c;详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用&#xff01; 6.8 中介者模式 6.8.1 定义 调停模式&#xff0c;定义一个中介角色来封装一系列对象的之间交互&#xff0c;使元有对象之间的耦合松散&#xff0c;且可以独立改变…

2023年春节祝福第二弹——送你一只守护兔,让它温暖每一个你【html5 css3】画会动的小兔子,炫酷充电,字体特效

2023年春节祝福第二弹 送你一只守护兔&#xff0c;让它温暖每一个你&#xff01; 【html5 css3】画一只会动的兔子 目录 一、送你一只守护兔&#xff0c;效果图 二、前言 三、代码解释及部分特效教程 &#xff08;1&#xff09;、css3 立体字 &#xff08;2&#xff09;…

普中科技MicroPython基于esp32的基础教程-01

课程链接 3.5-Python基础--代码注释_哔哩哔哩_bilibili 学习目的 复习和加深对Python的学习和使用&#xff0c;将Python的使用融汇于硬件使用中。因此笔记记录的内容都是我之前遗忘的或者重要的知识点&#xff0c;选择性记录视频笔记&#xff0c;在开发的过程中对于遗忘的知识…

基于Power BI的终端产品销售ABC分析

一、原理 ABC分析&#xff0c;是由帕累托法则演化而来&#xff0c;一般认为A类产品带来70%的收入&#xff0c;B类产品带来20%的收入&#xff0c;C类产品带来10%的收入&#xff0c;所以ABC分析又称70/20/10分析。 二、数据源 某终端《8~10月商品月台帐》 问题&#xff1a; 1…

计算机网络——UDP与TCP

一、运输层的作用 运输层在整个网络体系结构中位于面向通信部分的最高层&#xff0c;同时也是用户功能中的最低层。它提供的是应用进程间的逻辑通信。所谓逻辑通信&#xff0c;指的是它屏蔽了下层网络的细节&#xff0c;使得进程看见的就是好像在两个运输层实体之间有一条端到…

二分、复杂度、动态数组、哈希表

1.二分法 不一定一定有序&#xff0c;比如找局部最小值就可以不有序 有序数组中找到num 用对数器生成随机数组来校验find()方法是否正确 public class Code01_BSExist {//有序数组中找到num//arr保证有序public static boolean find(int[] arr, int num) {if (arr null || …

1594_AURIX_TC275_PMU_应用提示1

全部学习汇总&#xff1a; GreyZhang/g_TC275: happy hacking for TC275! (github.com) 这一页主要是描述了当前的PMU版本与之前就版本相比之下的变更&#xff0c;对于第一次接触了解这个模块来说&#xff0c;其实了解前面的基本特性就好了。而这个差异&#xff0c;没有细看的必…

2023年网络安全比赛--Linux渗透测试中职组(超详细)

一、竞赛时间 180分钟 共计3小时 二、竞赛阶段 1.通过本地PC中渗透测试平台Kali对靶机场景进行系统服务及版本扫描渗透测试,并将该操作显示结果中Apache服务对应的版本信息字符串作为Flag值提交; 2.通过本地PC中渗透测试平台Kali对靶机场景进行渗透测试,将该场景/var/www/ht…

Ubuntu安装Redis最新版本

使用ubuntu自带的安装工具安装的redis并不是最新版本,在最近的项目中需要最新版本的redis所以需要手动安装,再次记录下安装过程 备份数据 首先如果当前的虚拟机已经安装过redis,那么卸载当前的安装的版本,同时注意备份数据,redis 的备份数据的默认路径如下: /var/lib/redis 具…

FFmpeg 将多张图片编码成视频

前言 本篇文章的需求是将相机获取到的图片进行编码&#xff0c;编码成一个视频&#xff0c;耗费了大约一个星期的时间在解决各种问题。这里阐述一下这篇文章所要解决的几个问题&#xff1a; 1、如何将多张图片编码成视频。 2、如何进行定时录制视频。 3、同时开启多线程进行视…

吴恩达机器学习课程笔记:正规方程法

1.吴恩达机器学习课程笔记&#xff1a;正规方程法 笔记来源&#xff1a; 1.吴恩达机器学习课程笔记&#xff1a;正规方程法 2.神经网络 - 多元线性回归 - 正规方程法 仅作为个人学习笔记&#xff0c;若各位大佬发现错误请指正 正规方程法区别于梯度下降法的迭代求解&#xff0…

基于 SSH 协议配置 Git 连接 GitHub

文章目录0.安装 Git1.注册 GitHub 账号2.配置 Git 的用户名和邮箱3.基于 SSH 协议远程连接 GitHub3.1 为本机生成 SSH 密钥对3.2 将公钥拷贝到 GitHub 上3.3 SSH 测试3.4 将文件上传到 GitHub 的远程仓库0.安装 Git Git 官网链接&#xff1a;https://git-scm.com/ Git 官网下…

[QMT]01-我的第一个Python策略

新年立个Flag 学写50个QMT策略:新建一个 Python 策略创建方法&#xff1a;我的主页-新建策略删掉模板带的内容,输入第一个策略 01-HelloWorld:编写 Python 策略需在开始时定义编码格式&#xff0c;如 gbk。Init 方法和 handlebar 方法的定义是必须的。上图展示了如何在 QMT 系统…

微信小程序---分包

1.什么是分包 分包指的是把一个完整的小程序项目&#xff0c;按照需求划分为不同的子包&#xff0c;在构建时打包成不同的分包&#xff0c;用户在使用时按需进行加载。 2.分包的好处 对小程序进行分包的好处主要有以下两点: 可以优化小程序首次启动的下载时间在多团队共同开…

Git使用详解(图文+代码):Git分支

Git分支不过如此前言什么是分支分支的新建与合并分支的新建与切换分支的合并遇到冲突时的分支合并分支的管理先写到这了&#xff0c;肝不动了。这几天每天都抽时间更新一点前言 每一种版本控制都以某种形式支持分支。 使用分支的好处就是你可以从开发主线上分离开来&#xff0…

Visusl Studio 2019 使用Sqlite3

1. 下载访问官网下载页面(Sqlite 官方下载)&#xff0c;从Window区下载编译好的动态库和头文件。动态库&#xff08;根据实际需要选择32或64位版本&#xff09;&#xff1a;解压得到&#xff1a;源码文件&#xff1a;解压得到&#xff08;当然我们只需要sqlite3.h&#xff09;&…