[Python] Histograms for analysis Daily return

 A histogram is an accurate representation of the distribution of numerical data. 

 

Y axis is the occurances, X axis is the % of daily return. 

 

There are three things can meature histogram

1. Standard deviation

2. Mean

3. Kurtosis : In probability theory and statisticskurtosis is a measure of the "tailedness" of the probability distribution of a real-valued random variable.

 

Plot a histogram:

复制代码
import os
import pandas as pd
import matplotlib.pyplot as plt

def compute_daily_return(df):
    dr = df.copy()
    dr = (df / df.shift(-1)) -1
    return dr

def histogram(df):
    dr = compute_daily_return(df)
    plot_data(dr, title="Daily returns", yLabel="Daily returns")
    dr.hist(bins=20)
    plt.show()


if __name__ == '__main__':
    df=test_run()
    #rolling_mean(df)
    histogram(df['SPY'])
复制代码

 

Plot 'mean' and 'std', Get 'kurtosis' value as well:

复制代码
def histogram(df):
    dr = compute_daily_return(df)
    plot_data(dr, title="Daily returns", yLabel="Daily returns")
    dr.hist(bins=20)
    

    # Get mean and standard deviation
    mean = dr.mean()
    print("mean=", mean)
    std = dr.std()
    print("std=", std)

    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()

    # Get kurtosis
    print("kurtosis=", dr.kurtosis())


if __name__ == '__main__':
    df=test_run()
    histogram(df['SPY'])
复制代码

 

Now, let see how to plot tow histgram in the same plot:

复制代码
def histogram(df):

    dr = compute_daily_return(df)
    plot_data(dr, title="Daily returns", yLabel="Daily returns")

    dr['SPY'].hist(bins=20, label="SPY") 
    dr['GLD'].hist(bins=20, label="GLD") 
    plt.legend(loc='upper right')

    # Get mean and standard deviation
    mean_spy = dr['SPY'].mean()
    mean_gld = dr['GLD'].mean()

    std_spy = dr['SPY'].std()
    std_gld = dr['GLD'].std()

    plt.axvline(mean_spy, color='w', linestyle='dashed', linewidth=2)
    plt.axvline(std_spy, color='r', linestyle='dashed', linewidth=2)
    plt.axvline(-std_spy, color='r', linestyle='dashed', linewidth=2)

    plt.axvline(mean_gld, color='b', linestyle='dashed', linewidth=2)
    plt.axvline(std_gld, color='g', linestyle='dashed', linewidth=2)
    plt.axvline(-std_gld, color='g', linestyle='dashed', linewidth=2)
    plt.show()

if __name__ == '__main__':
    df=test_run()
    histogram(df[['SPY', 'GLD']])
复制代码

 

posted @   Zhentiw  阅读(893)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2016-12-28 [GraphQL] Use GraphQL's List Type for Collections
2016-12-28 [GraphQL] Use GraphQL's Object Type for Basic Types
2016-12-28 [GraphQL] Create a GraphQL Schema
2014-12-28 [MEAN Stack] First API -- 5. Using $resource to setup REST app
点击右上角即可分享
微信分享提示