Alphalens使用方法细节判断

news2025/7/14 8:02:16

首先alphalens的数据格式:

factor: MultiIndex(用stack()方法来转换)

prices: DataFrame

#转换成MultiIndex
factor = alpha_mom.stack()
print (factor.tail())
datetime                        
2017-11-20 15:00:00  601857.XSHG    1.022616
                     601881.XSHG    0.744411
                     601901.XSHG    0.893478
                     601985.XSHG    0.993412
                     601988.XSHG    0.971698
dtype: float64
# 股票池价格的Dataframe
prices = PN.minor_xs('close')
print (prices.tail())
                     600000.XSHG  600016.XSHG  600028.XSHG  600029.XSHG  \
datetime                                                                  
2017-11-14 15:00:00       118.12       125.93        12.06        16.00   
2017-11-15 15:00:00       118.12       124.74        11.82        16.04   
2017-11-16 15:00:00       116.16       123.54        11.76        16.29   
2017-11-17 15:00:00       119.81       127.42        11.92        16.97   
2017-11-20 15:00:00       120.47       128.17        11.92        17.05   

                     600030.XSHG  600036.XSHG  600048.XSHG  600050.XSHG  \
datetime                                                                  
2017-11-14 15:00:00        69.27       111.81       199.75         9.49   
2017-11-15 15:00:00        69.04       111.25       204.52         9.68   
2017-11-16 15:00:00        68.05       112.13       218.27         9.61   
2017-11-17 15:00:00        69.88       117.24       224.00         9.63   
2017-11-20 15:00:00        67.71       121.82       224.19         9.80   

                     600100.XSHG  600104.XSHG     ...       601766.XSHG  \
datetime                                          ...                     
2017-11-14 15:00:00       178.62       204.03     ...             12.10   
2017-11-15 15:00:00       176.35       202.78     ...             12.07   
2017-11-16 15:00:00       174.24       200.97     ...             11.77   
2017-11-17 15:00:00       165.92       207.21     ...             12.11   
2017-11-20 15:00:00       170.61       206.46     ...             12.14   

                     601788.XSHG  601800.XSHG  601818.XSHG  601857.XSHG  \
datetime                                                                  
2017-11-14 15:00:00        17.28        17.39         5.13        10.63   
2017-11-15 15:00:00        17.25        17.34         5.12        10.37   
2017-11-16 15:00:00        17.04        16.91         5.11        10.28   
2017-11-17 15:00:00        17.30        17.04         5.21        10.33   
2017-11-20 15:00:00        17.18        16.79         5.24        10.40   

                     601881.XSHG  601901.XSHG  601985.XSHG  601988.XSHG  \
datetime                                                                  
2017-11-14 15:00:00        13.15         8.63         7.80         6.08   
2017-11-15 15:00:00        13.03         8.49         7.79         6.07   
2017-11-16 15:00:00        12.76         8.28         7.54         6.02   
2017-11-17 15:00:00        12.30         8.11         7.63         6.14   
2017-11-20 15:00:00        12.32         8.22         7.54         6.18   

                     601989.XSHG  
datetime                          
2017-11-14 15:00:00        10.64  
2017-11-15 15:00:00        10.51  
2017-11-16 15:00:00        10.49  
2017-11-17 15:00:00        10.14  
2017-11-20 15:00:00        10.25  

[5 rows x 49 columns]
#输入Alphalen所需要的数据格式
import alphalens
factor_data = alphalens.utils.get_clean_factor_and_forward_returns(factor, prices, quantiles=5)
print (factor_data.head())
                                        1         5        10    factor  \
date                asset                                                 
2017-03-07 15:00:00 600000.XSHG -0.001197 -0.010349 -0.024974  1.008018   
                    600016.XSHG -0.005597 -0.015598 -0.034555  0.985728   
                    600028.XSHG  0.003578 -0.016100  0.007156  1.021938   
                    600029.XSHG -0.003912  0.010172  0.000782  1.097938   
                    600030.XSHG -0.006045 -0.006045 -0.013999  1.016659   

                                 factor_quantile  
date                asset                         
2017-03-07 15:00:00 600000.XSHG                2  
                    600016.XSHG                1  
                    600028.XSHG                3  
                    600029.XSHG                5  
                    600030.XSHG                3  

如何不同Quantiles期望收益与标准差?

mean_return_by_q, std_err_by_q = alphalens.performance.mean_return_by_quantile(factor_data, by_date=True)
print(mean_return_by_q.head())
print(std_err_by_q.head())
                                           1         5         10
factor_quantile date                                             
1               2017-03-07 15:00:00  0.006782  0.003821  0.006060
                2017-03-08 15:00:00  0.002207  0.000536 -0.005845
                2017-03-09 15:00:00  0.000176  0.001881  0.012697
                2017-03-10 15:00:00  0.001894  0.004035  0.006478
                2017-03-13 15:00:00  0.000316  0.009381  0.011278
                                           1         5         10
factor_quantile date                                             
1               2017-03-07 15:00:00  0.008181  0.005817  0.011047
                2017-03-08 15:00:00  0.001643  0.005422  0.012947
                2017-03-09 15:00:00  0.002841  0.004721  0.012215
                2017-03-10 15:00:00  0.002748  0.003273  0.013972
                2017-03-13 15:00:00  0.001233  0.006354  0.011653
如何将不同收益曲线可视化?
1.持有不同天数的收益曲线
2.累积收益曲线
import matplotlib.pyplot as plt
alphalens.plotting.plot_cumulative_returns_by_quantile(mean_return_by_q, 10)
plt.show()

什么是信息系数?

度量变量的预测值与实际值之间的关系的相关值。信息系数是用来评估金融分析师预测技能的一种表现方法。

系数在-1到1之间,越大表示正相关程度强。标准是mean(IC)>0.02

什么是spearman相关系数?

其中d为秩次差。

因此IC值是代表因子排序与收益排序的相关性。

什么是秩次差?

A = [1,3,5,7,9]
B = [3,2,4,5,1]

A的排序是1,2,3,4,5

B的排序是3,2,4,5,1

d为排序相减

# IC值例子
ic = alphalens.performance.factor_information_coefficient(factor_data)
# print (ic)
alphalens.plotting.plot_ic_hist(ic)
mean_monthly_ic = alphalens.performance.mean_information_coefficient(factor_data, by_time='M')
# print mean_monthly_ic.mean()
alphalens.plotting.plot_monthly_ic_heatmap(mean_monthly_ic)
plt.show()
factor_returns = alphalens.performance.factor_returns(factor_data)
alphalens.plotting.plot_cumulative_returns(factor_returns[10])
plt.show()

Alphalens数据准备

源数据需要两个DataFrame:

1.因子数据

2.股价数据(添加行业数据,用于行业中性化)

因子数据:

 可以在factor_value后新增一列行业。

因子数据的前2列:date、asset是多重索引(MultiIndex),一级索引是date(日期),二级索引是asset(资产)

股价数据:

 get_clean_factor_and_forward_returns()

alphalens.utils.get_clean_factor_and_forward_returns(factors,
                                                     prices,
                                                     groupby=None,
                                                     binning_by_group=False,
                                                     quantiles=5,
                                                     bins=None,
                                                     periods=(1, 5, 10),
                                                     filter_zscore=20,
                                                     groupby_labels=None,
                                                     max_loss=0.30,
                                                     zero_aware=False,
                                                     cumulative_returns=True)

参数详解

  1. factors:如图1的因子(行业)数据
  2. prices:如图2的股价数据
  3. groupby:股票分组
  4. binning_by_group: 是否分组进行计算
  5. quantiles: 将股票按数量等分
  6. bins: 按因子值等宽进行划分
  7. periods:持仓周期
  8. filter_zscore:异常阈值的倍数,过滤掉涨跌幅大的股票
  9. groupby_labels:分组标签
  10. max_loss:因子数据缺失率的上限,超过则报错
  11. zero_aware:是否正负信号分开算
  12. cumulative_returns:是否计算累计回报

因子分析函数

因子分析总报告

将清洗好的数据送入create_full_tear_sheet,即可获得所有的分析图

alphalens.tears.create_full_tear_sheet(data)

 附上Alphalens文档

Alphalens — Alphalens 0.2.1+48.gad0be10 documentation

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

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

相关文章

小学生python游戏编程arcade----烟花粒子

小学生python游戏编程arcade----烟花粒子前言烟花粒子1、Vector向量类1.1 arcade中的向量类1.2 应用2、绘制粒子所有纹理图片2.1 给定直径和颜色的圆的纹理2.2 arcade.make_circle_texture函数原码2.3 make_soft_circle_texture 函数原码2.4 公共纹理代码3 效果图4 代码源码获取…

【读点论文】Densely Connected Convolutional Networks用残差连接大力出奇迹,进一步叠加特征图,以牺牲显存为代价

Densely Connected Convolutional Networks Abstract 如果卷积网络在靠近输入的层和靠近输出的层之间包含较短的连接,则卷积网络可以训练得更深入、更准确和有效。在本文中,接受了这种观察,并介绍了密集卷积网络(DenseNet),它以…

Linux - Linux下Java安装路径查找;配置Java环境变量

一、查看Java的安装路径 1、已经安装好了JDK,也配置了环境变量 1、执行 java -version java -version 出现了版本号,表示安装过了JDK,配置了环境变量 2、在配置过jdk的情况下,执行java -verbose指令,在打印出的文本…

java stream中的peek()用法

文章目录前言最终操作(terminal operation)peek() vs forEach()peek() 的典型用法:协助调试总结前言 最近看到一段代码: aeFormList.stream().peek(object -> saveInfomation(object, params)).collect(Collectors.toList())…

std::shared_ptr(基础、仿写、安全性)

目录 一、c参考手册 1、解释说明 2、代码示例 3、运行结果 二、对std::shared_ptr分析 1、shared_ptr基础 2、创建shared_ptr实例 3、访问所指对象 4、拷贝和赋值操作 5、检查引用计数 三、仿写std::shared_ptr代码 1、单一对象 2、数组对象 四、shared_ptr遇到问…

MyBatis 环境搭建

MyBatis 环境搭建步骤 1.创建一张表和表对应的实体类 2.创建一个 maven 项目,把项目添加到 git 仓库 创建maven项目 教程见:Maven[项目构建工具]_chen☆的博客-CSDN博客 添加到git仓库: 3.在文件 pom.xml 添加 mybiatis 相关依赖(导入 MyBa…

Java - 利用Nacos做一个动态开关配置功能

Java - 利用Nacos做一个动态开关配置功能前言一. Nacos配置类编写二. 测试三. 展望前言 我公司里有一个Config配置功能(我相信这是很普遍的一个功能)。简单来说就是: 将相关的键值对放到这个Config配置系统里面。代码里通过这个Config配置系…

博客项目(前台功能实现)

博客项目(前台接口实现) 文章目录博客项目(前台接口实现)1.前置知识1.1Controller1.1.1ResponseResult类1.1.2该类的方法1.2Service1.3ServiceImpl1.4Mapper1.5Vo的理解1.6可能会用到的相关插件1.7设置字面量1.8后端接口测试工具2.热门文章接口分析2.1热门文章接口位置2.2接口的…

Internet Download Manager2023最新版下载器功能介绍

说到下载器在国内就不得不提迅雷,迅雷真是伟大,几乎垄断了国内的下载市场,的确,有的时候用迅雷可以下载到很不错的资源,但在没有VIP的情况下,迅雷是不友好的,相信使用迅雷的各位都有被限速过的经…

三、Eureka

文章目录一、认识服务提供者和服务调用者二、Eureka 的工作流程三、服务调用出现的问题及解决方法四、搭建 eureka-server五、注册 user-service、order-service六、在 order-service 完成服务拉取(order 模块能访问 user 模块)七、配置远程服务调用八、…

分布式锁:不同实现方式实践测评

Hello读者朋友们,今天打算分享一篇测评实践类的文章,用优雅的代码与真实的数据来讲述在分布式场景下,不同方式实现的分布式锁,分别探究每一种方式的性能情况与最终的优劣分析。 开门见山,我们先看一张表格&#xff0c…

fiddler安卓模拟器与ios手机抓包

一.安卓模拟器(雷电模拟器)抓包 1.1fiddler基本配置 1.2导出Fiddler证书 Tools -> Options -> HTTPS -> Actions -> Export Root Certificate to Desktop 在桌面上看到导出的FiddlerRoot.cer证书文件 1.3下载和安装openssl openssl下载地址 git终端输入 open…

蜂鸟E203学习(一)--RISC的前世今生

第一章 CPU之前世今生 1.1、CPU众生相 1.1.1 处理器(cpu)和处理器内核(core)的区分 处理器严格意义上是soc,包含了内核和其他设备或者存储器. 1.1.2 不同CPU架构的诞生时间 CPU架构诞生时间Intel 80861978年ARM19…

Opencv之Mat常用类成员(一篇就够了)

1. 重要类成员 data:数据存储的起始地址 (uchar*类型);dims:矩阵维度。如 3 * 4 的矩阵为 2 维, 3 * 4 * 5 的为3维;channels():通道数量,矩阵中表示一个元素所需要的值的个数。例:…

Docker-系统环境

Docker1.Docker与虚拟机的区别2.Docker主要解决的问题3.镜像和容器4.Docker的安装9.查找镜像10.常用命令11.安装数据库12.安装tomcat13.容器使用注意事项1.Docker与虚拟机的区别 Docker是开发运行和部署应用程序的开发管理平台,它类似于虚拟机,可以独立…

七、Feign

文章目录一、Feign实现远程调用1.替换RestTemplate发起远程调用,RestTemplate存在的问题:2.实现Feign远程调用:二、Feign的自定义日志1.Feign可修改的配置如下2.方式一:配置文件方式3.方式二:Java代码方式一、Feign实现…

Qt:信号与槽机制

说实话,Qt给我的感觉像一种魔改版c,不纯粹,看不到内部的源代码,也不知道一些宏是怎么实现的... 信号与槽内部机制 回归正题,其实学过设计模式的应该都能看出来,qt的这个机制是一个观察者模式; …

又解锁了一种OpenFeign的使用方式!

引言 Hello 大家好,这里是Anyin。 在关于OpenFeign那点事儿 - 使用篇 中和大家分享了关于OpenFeign在某些场景下的一些处理和使用方法,而今天Anyin再次解锁了OpenFeign的又一个使用场景,只能说真香。 在我们日常开发中,相信大家…

SSM框架-MyBatis基础

1. MyBatis简介 1.1 MyBatis历史 MyBatis最初是Apache的一个开源项目iBatis,2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下,iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github。 iBa…

Pipelines in Shell

本篇文章内容需要读者知道 shell 的一些语法和作用,知道 shell 的用途,和一些基本的用法。 这里可以查看原文:Pipelines in Shell 学习 shell 脚本必须要理解 pipeline 的概念,知道 command 的输入(input)和…