目录

目的

概念

先贴结果

代码

数据


目的

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_收益率的分布相关推荐

  1. 【R】【课程笔记】04+05 数据预处理+收益率计算

    本文是课程<数据科学与金融计算>第4-5章的学习笔记,主要介绍金融数据处理.收益率计算和R与C++调用,用于知识点总结和代码练习,Q&A为问题及解决方案. 往期回顾: 博文 内容 ...

  2. 幂律分布(python)

    幂律分布 1.幂律分布 首先要说的是中心极限定理--在复杂的多因素情况下,只要个体相互独立,集体效果就应该是正态分布.然而实际运用中,尤其是金融中,更多面对的是尖峰胖尾现象,比如下面这幅图描述的是标普 ...

  3. 协偏度矩阵 matlab 程序,投资组合收益率高阶矩估计的一种方法——压缩估计

    推文人 | 王彦锋 参考文章: [1] Martellini, Lionel and Volker Ziemann. Improved estimates of higher-order comome ...

  4. Python数据可视化系列之幂律分布

    1.幂律分布 首先要说的是中心极限定理--在复杂的多因素情况下,只要个体相互独立,集体效果就应该是正态分布.然而实际运用中,尤其是金融中,更多面对的是尖峰胖尾现象,比如下面这幅图描述的是标普500指数 ...

  5. python计算对数收益率_R语言金融基础:tidyquant数据整理(算术/对数收益率)

    作者:黄天元,复旦大学博士在读,热爱数据科学与开源工具(R/Python),致力于利用数据科学迅速积累行业经验优势和科学知识发现,涉猎内容包括但不限于信息计量.机器学习.数据可视化.应用统计建模.知识 ...

  6. Pandas数据可视化工具:图表工具-Seaborn

    内容来源:https://www.jiqizhixin.com/articles/2019-01-30-15 简介 在本文中,我们将研究Seaborn,它是Python中另一个非常有用的数据可视化库. ...

  7. 小一爬取一季度 15646 只基金持仓数据,下半年重点关注这些机会!

    大家好,我是小一 本篇为系列文章的第二篇,是对 21年一季度的最新基金持仓披露数据进行分析 篇幅较长,阅读会花 5-10 分钟,读完本篇文章,你可能会收获以下几点: 基金的整体收益情况? 优秀基金经理 ...

  8. 小一爬取了 14455 个已发行基金,到底能分析点啥出来?

    大家好,我是小一 大概花了一周时间写了这篇文章,篇幅较长,读完会花 5-10 分钟 读完本篇文章,你可能会收获以下几点: 基金是买老基还是新基? 买混基还是股基? 跟谁买能赚钱? 买哪些侧重板块的基? ...

  9. 爬取上千个年度基金后,才知道这有多坑,千万别被人当韭菜给割了

    今天来分析一下2021年的基金市场,分析一下今年表现最好的那些基金有什么特征?作为理财小白的你,如何在2022年如何科学理性地投资从而避免被当做韭菜收割呢? 基金介绍 首先对于基金,可以大致分为:货币 ...

  10. 年终盘点 | 用Python分析了上千个基金,终于发现了赚钱的秘密!

    时间过得真快,2021年差不多还有10天就要和大家说再见了,大家今年过得怎么样?有什么收获或者遗憾呢? 今天我们来分析一下2021年的基金市场,分析一下今年表现最好的那些基金有什么特征?作为理财小白的 ...

最新文章

  1. 前端开发js运算符单竖杠“|”的用法和作用及js数据处理
  2. 二维数组更改vue_二维数组如何在vue中显示表格
  3. 笔记整理-信息系统开发基础-软件测试-灰度测试
  4. 熊掌号指数2.0常见问题汇总
  5. O(logn*2^logn)和O(n*logn)算法
  6. php 26个字母大写,英语26个字母大小写怎么写
  7. wxWidgets:wxArtProvider类用法
  8. 硬件基础 —— 电容
  9. PaddlePaddle飞桨OCR文本检测——识别图片文字结果并保存为txt(五)
  10. ajax只请求一次,关于ajax的请求只处理一次的问题
  11. 安全运维 - Linux系统攻击回溯
  12. 新手C语言学习第一课——小学生水平级
  13. ISMS信息安全管理体系与信息系统安全等级保护标准的异同点
  14. java程序员电脑内存配置_学习JAVA对电脑配置有要求吗
  15. linux 安装云锁
  16. jupyter notebook 打开ipynb时提示到后台服务的连接没能建立, 我们会继续尝试重连, 请检出网络连接...还有服务配置 命令行显示Replacing stale connection
  17. SMAA算法详解 - SMAADetectVerticalCornerPattern
  18. 计算机音乐数字乐谱梦中的婚礼,乐谱梦中的婚礼代码是什么-天谕手游梦中的婚礼歌曲最新乐谱代码分享 - QT软件园...
  19. 新手购买服务器搭建属于自己的网站(详细版)
  20. BATCH/批处理命令

热门文章

  1. 清华大学计算机秦凌霄,海南25名考生获得北大清华自主招生入选资格
  2. python怎么模拟点击网页按钮?
  3. flash网页播放器
  4. 一个人摘了一些桃子,第一天卖掉了一半,又吃了一个,第二天卖掉了一半,又吃了一个,以后天天都是如此处理,到第n天发现桃子只剩下一个桃子,n是参数,返回值是一共摘的桃子数。 求两个数的最大公约数
  5. Google SketchUp,一款很有趣的软件,可以创建你所想要的任何3D模型
  6. 计算机积木游戏,儿童智力开发游戏:四款适合幼儿的积木游戏
  7. 十道解分式方程及答案_解分式方程的题出20道还要带答案
  8. 特殊字符大全-希腊字母俄文注音拼音日文序集心型方形点数绘表(转载)
  9. windows10下whisper的安装使用和CUDA的配置
  10. PS制作个人LOGO技术总结