计算年化收益和夏普率的多种python代码实现
时间: 2024-03-02 18:49:25 浏览: 270
(三)python计算夏普率
5星 · 资源好评率100%
计算年化收益和夏普率是金融领域常用的指标,以下是多种Python代码实现:
1. 使用numpy和pandas库
```python
import numpy as np
import pandas as pd
# 假设有一组收益率数据,存储在列表returns中
returns = [0.01, 0.02, 0.03, -0.01, -0.02]
# 计算年化收益率
annual_return = (1 + np.mean(returns)) ** 252 - 1
# 计算波动率
volatility = np.std(returns) * np.sqrt(252)
# 计算夏普比率
sharpe_ratio = (annual_return - 0.03) / volatility
# 输出结果
print("年化收益率:{:.2f}%".format(annual_return * 100))
print("波动率:{:.2f}%".format(volatility * 100))
print("夏普比率:{:.2f}".format(sharpe_ratio))
```
2. 使用scipy库
```python
from scipy.stats import norm
# 假设有一组收益率数据,存储在列表returns中
returns = [0.01, 0.02, 0.03, -0.01, -0.02]
# 计算年化收益率
annual_return = (1 + np.mean(returns)) ** 252 - 1
# 计算波动率
volatility = np.std(returns) * np.sqrt(252)
# 计算夏普比率
sharpe_ratio = (annual_return - 0.03) / volatility
# 计算夏普比率的p值
p_value = norm.cdf(sharpe_ratio)
# 输出结果
print("年化收益率:{:.2f}%".format(annual_return * 100))
print("波动率:{:.2f}%".format(volatility * 100))
print("夏普比率:{:.2f},p值:{:.4f}".format(sharpe_ratio, p_value))
```
3. 使用quantstats库
```python
import quantstats as qs
# 假设有一组收益率数据,存储在列表returns中
returns = [0.01, 0.02, 0.03, -0.01, -0.02]
# 将收益率数据转换为DataFrame格式
df = pd.DataFrame(returns, columns=["returns"])
# 使用quantstats库计算年化收益率、波动率和夏普比率
qs.extend_pandas()
annual_return = qs.stats.annual_return(df)
volatility = qs.stats.volatility(df)
sharpe_ratio = qs.stats.sharpe_ratio(df)
# 输出结果
print("年化收益率:{:.2f}%".format(annual_return * 100))
print("波动率:{:.2f}%".format(volatility * 100))
print("夏普比率:{:.2f}".format(sharpe_ratio))
```
以上三种方法都可以计算年化收益率和夏普比率,只是实现方式略有不同。需要注意的是,这些计算结果都是基于历史数据的,不能保证未来表现。
阅读全文