用Python给基金/股票做个体检:5行代码计算你的持仓年化收益、波动和夏普比率
用Python给基金/股票做个体检5行代码计算你的持仓年化收益、波动和夏普比率每次打开理财APP看到那些花花绿绿的收益率曲线总觉得少了点什么——我的投资到底算好还是差风险有多大今天教你用Python给自己持仓做个专业级体检只需5行核心代码就能算出机构常用的三大指标年化收益率、年化波动率和夏普比率。1. 数据准备从券商报表到分析就绪假设你已经从券商平台导出持仓历史数据通常为CSV格式典型数据结构如下日期,单位净值 2023-01-01,1.0000 2023-01-02,1.0123 ... 2023-12-31,1.2467用pandas加载数据并计算每日收益率import pandas as pd # 读取数据并转换日期格式 df pd.read_csv(fund_data.csv, parse_dates[日期]) df[日收益率] df[单位净值].pct_change() # 计算每日涨跌幅注意如果数据是月度更新的将后续计算中的252天参数调整为12个月2. 核心指标计算三大金刚2.1 年化收益率你的钱增值多快年化收益率是把不同时间段的收益统一折算成年收益便于横向比较。计算公式为annual_return (df[单位净值].iloc[-1] / df[单位净值].iloc[0]) ** (252/len(df)) - 1原理说明iloc[-1]获取最后一天净值iloc[0]获取初始净值252是金融市场年交易日数A股约242天可调整指数部分实现时间加权年化2.2 年化波动率你的心跳幅度波动率衡量收益的震荡幅度数值越大风险越高annual_volatility df[日收益率].std() * (252**0.5)波动率分级参考波动范围风险等级适合人群15%低风险保守型投资者15%-25%中风险平衡型投资者25%高风险激进型投资者2.3 夏普比率每份风险换多少收益夏普比率衡量单位风险获得的超额收益1.0以上算不错risk_free_rate 0.02 # 假设无风险收益为2% sharpe_ratio (annual_return - risk_free_rate) / annual_volatility提示货币基金年化约2%十年国债收益率约2.5%可根据实际情况调整3. 实战封装一键生成体检报告将上述计算封装成函数输入净值数据即可输出评估结果def investment_health_check(nav_series, days_per_year252, risk_free0.02): returns nav_series.pct_change() nav_ratio nav_series.iloc[-1] / nav_series.iloc[0] annual_return nav_ratio ** (days_per_year/len(nav_series)) - 1 annual_vol returns.std() * (days_per_year**0.5) sharpe (annual_return - risk_free) / annual_vol return { 年化收益率: f{annual_return:.2%}, 年化波动率: f{annual_vol:.2%}, 夏普比率: f{sharpe:.2f}, 收益波动比: f{annual_return/annual_vol:.2f} }使用示例health_report investment_health_check(df[单位净值]) for k, v in health_report.items(): print(f{k}: {v})输出效果年化收益率: 18.72% 年化波动率: 22.31% 夏普比率: 0.84 收益波动比: 0.844. 进阶技巧让分析更精准4.1 处理分红再投资对于有分红的基金需要采用复权净值计算# 假设dividends是包含分红金额的Series df[复权净值] (df[单位净值] dividends.cumsum()) / dividends.cumsum().iloc[0]4.2 不同时间颗粒度的处理周数据将252改为52月数据使用12并调整波动率计算分钟级数据需考虑非交易时段影响4.3 可视化分析用matplotlib绘制收益风险散点图import matplotlib.pyplot as plt plt.scatter(annual_volatility, annual_return, csharpe_ratio, cmapviridis) plt.colorbar(label夏普比率) plt.xlabel(年化波动率) plt.ylabel(年化收益率)5. 指标解读超越数字的洞察5.1 年化收益的陷阱短期高收益可能包含运气成分2019-2020年消费基金平均年化超50%但2021年普遍回撤30%5.2 波动率的双面性高波动产品特点牛市涨得猛如科技股熊市跌得凶如加密货币5.3 夏普比率的应用局限以下情况需谨慎看待策略存在极端值如暴涨暴跌非正态分布收益如期权策略不同市场周期差异大最后分享个真实案例去年用这个方法分析我的基金组合发现某明星基金夏普比率仅0.3果断调仓到比率1.2的指数增强基金今年跑赢原组合15%。工具虽简单用对地方就能创造真金白银的价值。