本文主要是介绍基金评价指标1——收益率、回撤、下行标准差、痛苦指数、夏普比率、索蒂诺比率,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 各个模块
- 1. 用生成随机数作为模拟的净值序列
- 2. 收益率相关计算
- 3. 风险指标计算
- 4. 综合评价
- 5. 异常的INF值处理
- 完整示例程序
基金的评价指标有许多,这一篇博客分享的是最常见的评价指标,包括以下内容:
- 单日涨跌幅
- 累计收益率
- 年化收益率
- 最大回撤:从历史上最高点到之后的最低点的最大跌幅
- 痛苦指数:创新高才会不痛苦,因此这个指标描述的是从上次创新高到现在的痛苦程度
- 涨跌幅_年化标准差:表示净值波动的程度
- 涨跌幅_年化下行标准差:由于向上波动代表盈利,向下波动代表亏损。而我们更在意亏损/风险时就会需要这个指标,计算方式是以日涨跌幅<平均涨跌幅的数据为样本,计算这些下跌超过平均数的标准差
- 夏普比率:(年化收益率-无风险收益率) / 年化标准差
- 索蒂诺比率:(年化收益率-无风险收益率) / 年化标准差
以上指标我们都使用pandas的向量化操作加速计算
各个模块
1. 用生成随机数作为模拟的净值序列
import pandas as pd
import numpy as np
from copy import deepcopy# 生成数据
_size = 500
net_value = 1 + pd.Series(np.random.normal(0, 0.01, size=_size)).cumsum()
net_value.index = pd.date_range("2024-01-01", periods=_size)
collect_df = pd.DataFrame({"单位净值": net_value})
2. 收益率相关计算
one_year_count = 365 # 表示一年又多少个数据点
# 收益率相关指标
collect_df['单日涨跌幅'] = collect_df['单位净值'] / collect_df['单位净值'].shift(1) - 1
collect_df["累计收益率"] = collect_df['单位净值'] - collect_df['单位净值'].iloc[0]
collect_df['年化收益率'] = collect_df['累计收益率'] / (collect_df.index - collect_df.index[0]).days * one_year_count
3. 风险指标计算
collect_df["最大回撤"] = collect_df['单位净值'].rolling(collect_df.shape[0], min_periods=0)
这篇关于基金评价指标1——收益率、回撤、下行标准差、痛苦指数、夏普比率、索蒂诺比率的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!