[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 statistics, kurtosis 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']])
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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