pandas_收益率的分布
目录
目的
概念
先贴结果
代码
数据
目的
step1 收益波动率和夏普比率的计算是基于收益率是正态分布的假设
step2 为什么收益率正态分布会让收益和风险计算比较容易?
如果收益率的分布可以用正态分布来近似拟合的话,投资管理将变得更加容易
1). 当风险收益对称时,标准差是一个很好的衡量标准
2). 如果各个资产的收益具有正态分布,那么其组成的投资组合的收益也服从正态分布
3). 可以仅适用均值和标准差来估计未来的情境
step3 收益率的分布偏离正态分布怎么办?
此时,
1). 标准差不再是一个衡量风险的完美度量工具
2). 夏普比率不再是证券表现的完美度量工具
因此,
需要考虑偏度和峰度
概念
1. 偏度(Skewness)用来度量随机变量概率分布的不对称性
偏度取值范围为(负无穷,正无穷)
当偏度<0,概率分布左偏
当偏度=0, 表示数据相对均匀的分布在平均值两侧,不一定是绝对的对称分布
当偏度>0, 概率分布右偏
2. 峰度(Kurtosis)用来度量随机变量概率分布的陡峭程度
峰度取值范围为[1,正无穷),完全服从正态分布的数据的峰度值为3,峰度值越大,概率分布图越高尖;峰度值越小,越矮胖
3. 假设检验:检验是否服从正态分布
3.1 假设H0:是正态分布【这个是期望的结果】;HA:不是正态分布
3.2 Jarque Bera是用来检验正态分布【要求样本数在2000个以上】
3.3 置信区间
1). 设置99%的置信区间,表示有99%的信心认为结果是正态分布。
2). 剩余的1%叫做显著性水平
3). 如果置信区间设置为99%,显著水平就是1%;如果置信区间设置为95%,显著性水平就是5%。检验要求越严格,显著性水平就越小,例如医药行业一般设为1%,银行做风险可行性会将显著性水平设置小于1%
4. 看结果p-value值,p-value值越小越拒绝
p<1%,拒绝原假设,结果:不是正态分布
p>1%,接受原假设,结果:是正态分布
先贴结果
偏度:0.017862413071976304 峰度:0.0006589607625819838 检验p值:pvalue=0.501752635804537 检验结果:是正态分布 |
偏度:-1.0986798779690312 峰度:14.776922600537802 检验p值:pvalue=0.0 检验结果:不是正态分布 |
偏度:-1.4275663167447816 峰度:26.921066302426375 检验p值:pvalue=0.0 检验结果:不是正态分布 |
代码
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
df_004 = pd.read_csv('600004.csv',encoding='utf-8')
df_004['tradeDate'] = pd.to_datetime(df_004['tradeDate'])
df_004.set_index('tradeDate',inplace=True)
df_004['ret'] = df_004['closePrice'].pct_change()
df = df_004.iloc[-2016:]
df['ret'].plot.hist(bins=200)
# 偏度 bias=False不自动纠正
ss.skew(df['ret'],bias=False)
# out: -1.0986798779690312# 峰度 bias=False不自动纠正
ss.kurtosis(df['ret'],bias=False)
# out: 14.776922600537802# 检验是否正态分布
ss.jarque_bera(df['ret'])
# out: Jarque_beraResult(statistic=18648.83420095886, pvalue=0.0)df_015 = pd.read_csv('600015.csv',encoding='utf-8')
df_015['tradeDate'] = pd.to_datetime(df_015['tradeDate'])
df_015.set_index('tradeDate',inplace=True)
df_015['ret'] = df_015['closePrice'].pct_change()
df02 = df_015.iloc[-2016:]
df02['ret'].plot.hist(bins=200)
# 偏度 bias=False不自动纠正
ss.skew(df02['ret'],bias=False)
# out: -1.4275663167447816# 峰度 bias=False不自动纠正
ss.kurtosis(df02['ret'],bias=False)
# out: 26.921066302426375# 检验是否正态分布
ss.jarque_bera(df02['ret'])
# out: Jarque_beraResult(statistic=61247.39825308066, pvalue=0.0)# 生成一个正态分布
normal_numbers = pd.Series(np.random.normal(0,0.2,10000))
ss.skew(normal_numbers ,bias=False)
# out: 0.017862413071976304
ss.kurtosis(normal_numbers,bias=False)
# out: 0.0006589607625819838
ss.jarque_bera(normal_numbers)
# out: Jarque_beraResult(statistic=1.379296076193386, pvalue=0.501752635804537)
normal_numbers.plot.hist(bins=200)
将检验是否为正态分布写成一个函数
import scipy
def is_normal(r,level=0.01):'''对一个Series实施Jarque-Bera检验,默认显著性水平为1%若p值大于显著性水平,则无法拒绝原假设(正态分布)返回True 表明该Series是正态分布'''if isinstance(r,pd.DataFrame):return r.aggregate(is_normal)else:test_statistic,p_value = scipy.stats.jarque_bera(r)return p_value>level
is_normal(normal_numbers)
# out: True
is_normal(df['ret'])
# out: False
is_normal(df01['ret'])
# out: False
数据
链接:https://pan.baidu.com/s/1StHFKCZPBcj-Y0EXpQkjbA
提取码:w3e7
pandas_收益率的分布相关推荐
- 【R】【课程笔记】04+05 数据预处理+收益率计算
本文是课程<数据科学与金融计算>第4-5章的学习笔记,主要介绍金融数据处理.收益率计算和R与C++调用,用于知识点总结和代码练习,Q&A为问题及解决方案. 往期回顾: 博文 内容 ...
- 幂律分布(python)
幂律分布 1.幂律分布 首先要说的是中心极限定理--在复杂的多因素情况下,只要个体相互独立,集体效果就应该是正态分布.然而实际运用中,尤其是金融中,更多面对的是尖峰胖尾现象,比如下面这幅图描述的是标普 ...
- 协偏度矩阵 matlab 程序,投资组合收益率高阶矩估计的一种方法——压缩估计
推文人 | 王彦锋 参考文章: [1] Martellini, Lionel and Volker Ziemann. Improved estimates of higher-order comome ...
- Python数据可视化系列之幂律分布
1.幂律分布 首先要说的是中心极限定理--在复杂的多因素情况下,只要个体相互独立,集体效果就应该是正态分布.然而实际运用中,尤其是金融中,更多面对的是尖峰胖尾现象,比如下面这幅图描述的是标普500指数 ...
- python计算对数收益率_R语言金融基础:tidyquant数据整理(算术/对数收益率)
作者:黄天元,复旦大学博士在读,热爱数据科学与开源工具(R/Python),致力于利用数据科学迅速积累行业经验优势和科学知识发现,涉猎内容包括但不限于信息计量.机器学习.数据可视化.应用统计建模.知识 ...
- Pandas数据可视化工具:图表工具-Seaborn
内容来源:https://www.jiqizhixin.com/articles/2019-01-30-15 简介 在本文中,我们将研究Seaborn,它是Python中另一个非常有用的数据可视化库. ...
- 小一爬取一季度 15646 只基金持仓数据,下半年重点关注这些机会!
大家好,我是小一 本篇为系列文章的第二篇,是对 21年一季度的最新基金持仓披露数据进行分析 篇幅较长,阅读会花 5-10 分钟,读完本篇文章,你可能会收获以下几点: 基金的整体收益情况? 优秀基金经理 ...
- 小一爬取了 14455 个已发行基金,到底能分析点啥出来?
大家好,我是小一 大概花了一周时间写了这篇文章,篇幅较长,读完会花 5-10 分钟 读完本篇文章,你可能会收获以下几点: 基金是买老基还是新基? 买混基还是股基? 跟谁买能赚钱? 买哪些侧重板块的基? ...
- 爬取上千个年度基金后,才知道这有多坑,千万别被人当韭菜给割了
今天来分析一下2021年的基金市场,分析一下今年表现最好的那些基金有什么特征?作为理财小白的你,如何在2022年如何科学理性地投资从而避免被当做韭菜收割呢? 基金介绍 首先对于基金,可以大致分为:货币 ...
- 年终盘点 | 用Python分析了上千个基金,终于发现了赚钱的秘密!
时间过得真快,2021年差不多还有10天就要和大家说再见了,大家今年过得怎么样?有什么收获或者遗憾呢? 今天我们来分析一下2021年的基金市场,分析一下今年表现最好的那些基金有什么特征?作为理财小白的 ...
最新文章
- 前端开发js运算符单竖杠“|”的用法和作用及js数据处理
- 二维数组更改vue_二维数组如何在vue中显示表格
- 笔记整理-信息系统开发基础-软件测试-灰度测试
- 熊掌号指数2.0常见问题汇总
- O(logn*2^logn)和O(n*logn)算法
- php 26个字母大写,英语26个字母大小写怎么写
- wxWidgets:wxArtProvider类用法
- 硬件基础 —— 电容
- PaddlePaddle飞桨OCR文本检测——识别图片文字结果并保存为txt(五)
- ajax只请求一次,关于ajax的请求只处理一次的问题
- 安全运维 - Linux系统攻击回溯
- 新手C语言学习第一课——小学生水平级
- ISMS信息安全管理体系与信息系统安全等级保护标准的异同点
- java程序员电脑内存配置_学习JAVA对电脑配置有要求吗
- linux 安装云锁
- jupyter notebook 打开ipynb时提示到后台服务的连接没能建立, 我们会继续尝试重连, 请检出网络连接...还有服务配置 命令行显示Replacing stale connection
- SMAA算法详解 - SMAADetectVerticalCornerPattern
- 计算机音乐数字乐谱梦中的婚礼,乐谱梦中的婚礼代码是什么-天谕手游梦中的婚礼歌曲最新乐谱代码分享 - QT软件园...
- 新手购买服务器搭建属于自己的网站(详细版)
- BATCH/批处理命令
热门文章
- 清华大学计算机秦凌霄,海南25名考生获得北大清华自主招生入选资格
- python怎么模拟点击网页按钮?
- flash网页播放器
- 一个人摘了一些桃子,第一天卖掉了一半,又吃了一个,第二天卖掉了一半,又吃了一个,以后天天都是如此处理,到第n天发现桃子只剩下一个桃子,n是参数,返回值是一共摘的桃子数。 求两个数的最大公约数
- Google SketchUp,一款很有趣的软件,可以创建你所想要的任何3D模型
- 计算机积木游戏,儿童智力开发游戏:四款适合幼儿的积木游戏
- 十道解分式方程及答案_解分式方程的题出20道还要带答案
- 特殊字符大全-希腊字母俄文注音拼音日文序集心型方形点数绘表(转载)
- windows10下whisper的安装使用和CUDA的配置
- PS制作个人LOGO技术总结