01-06 Histograms and scatter plots

  • 峰度 kurtosis
    峰度为正,fat tails 尾部比一般Gaussian分布要大;峰度为负,skinning tails,与fat tails相反。

  • 如何绘制直方图

def test_run():
    #Read data
    dates = pd.date_range('2009-01-01', '2012-12-31')
    symbols = ['SPY']
    df = get_data(symbols, dates)
    #compute daily returns
    daily_returns = compute_daily_returns(dt)
    daily_returns.hist(bins = 20) #hist=histogram直方图,此处bins默认为10
    plt.show
  • 计算直方图统计值
plt.axvline(mean, color = 'w', linestyle = 'dashed', linewidth = 2)
plt.axvline(std, color = 'r', linestyle = 'dashed', linewidth = 2)
plt.axvline(-std, color = 'r', linestyle = 'dashed', linewidth = 2)
plt.show()
#compute kurtosis 计算峰度
print daily_returns.kurtosis()

#比较:mean >> return, std>>volatility(risk)
  • 同时绘制两个直方图
#两个图分开画
def test_run():
    #Read data
    dates = pd.date_range('2009-01-01', '2012-12-31')
    symbols = ['SPY', 'XOM']
    df = get_data(symbols, dates)
    plot_data(df)
    #Compute daily returns
    daily_returns = compute_daily_returns(df)
    plot_data(daily_returns, title = "Daily returns", ylabel = "Daily returns")
    #Plot histogram directly from dataframe
    daily_returns.hist(bins = 20)
#两张图叠在一起
def test_run():
    #Read data
    dates = pd.date_range('2009-01-01', '2012-12-31')
    symbols = ['SPY', 'XOM']
    df = get_data(symbols, dates)
    plot_data(df)
    #Compute daily returns
    daily_returns = compute_daily_returns(df)
    #compute and plot both histograms on the same chart
    daily_returns['SPY'].hist(bins = 20, label = 'SPY')
    daily_returns['XOM'].hist(bins = 20, label = 'XOM')
    plt.legend(loc = 'upper right')
    plt.show()
  • python中的散点图
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from util import get_data, plot_data
def compute_daily_return(df):
    daily_returns = df.copy()
    daily_returns[1: ] = (df[1: ] / df[: -1].values) - 1
    daily_returns.ix[0, : ] = 0
    #set daily returns, for row 0 to 0
    return daily_returns
def test_run():
    #Read data
    dates = pd.date_range('2009-01-01', '2012-12-31')
    symbols = ['SPY', 'XOM', 'GLD']
    df = get_data(symbols, dates)
    #compute daily returns
    daily_returns = compute_daily_returns(df)
    #Scatterplot SPY vs XOM
    daily_returns.plot(kind = 'scatter', x = 'SPY', y = 'XOM')
    beta_XOM, alpha_XOM = np.plotfit(daily_returns['SPY], daily_returns['XOM'], 1)
    print "beta_XOM = ",beta_XOM
    print "\n alpha_XOM = ", alpha_XOM
    plt.plot(daily_returns['SPY'], beta_XOM * daily_returns['SPY'] + alpha_XOM, '-', color = 'r')
    plt.show()
    #Scatterplot SPY vs GLD, 把上文XOM全换成GLD
    #Calculate correlation coefficient
    print daily_returns.corr(method = 'pearson')
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 日收益率(每日回报)直方图呈正态分布每日回报值的直方图中,X 轴表示上下变化率 (%),Y 轴表示发生次数。我们在...
    D_Major阅读 6,268评论 0 0
  • 数据分析入门 数据分析入门常见问题汇总 Python初学者们 - Anaconda入门使用指南 Python学习利...
    amoyyean阅读 11,257评论 7 61
  • “嘿!我的UX工作做得挺好啊!” 值得庆幸的是,在工作了几年以后,我没有经常听到这句话。但事实是——我们工作的...
    IrioLee阅读 3,480评论 0 3
  • 覆盆子清晨的血液 选择亚麻的白色作为爱情。 清晨充溢着光辉和甜蜜 把纯洁的面容俯向苹果。 橘子里的太阳和月亮 携手...
    云浅攸攸阅读 5,276评论 0 1
  • “你们所有待抽签的老师,今天一晚上的琢磨,最少会抵上你平时一个月的学习效果。”今天的开班课上万主任这样说。 我顿时...
    夏薇AN阅读 2,939评论 0 2