资产收益率与风险

资产收益率与风险

pandas读取数据可以使用一列作为索引(时间)
data=pd.read_csv('',index_col='')
data.index=pd.to_datetime(data.index)
data.index.name='Date'

收益率计算

直接算
close # Date price

# 价格滞后一期
lagclose=close.shift(1)
# 一期收益率
simpleret=(close-lagclose)/lagclose
simpleret.name='simpleret'
# 两期收益率
simpleret2=(close-close.shift(2))/close.shift(2)
simpleret2.name='simpleret2'

# 合并
calret=pd.DataFrame({'close':close,'lagclose':lagclose})
calret=pd.merge(calclose,pd.DataFrame(simpleret))
calret['simpleret2']=pd.DataFrame(simpleret)
ffn库
import ffn
# 价格计算收益率
ffnsimpleret=ffn.to_returns(close)
ffnsimpleret.name='ffnsimpleret'

# 复利收益率
ffncomporet=ffn.te_log_returns(close)
ffncomporet.name='ffncomporet'
可以直接调用DataFrame的plot方法绘制图
simpleret.plot() # 收益率
((1+simpletret).cumprod()-1).plot() # 累计收益率

风险度量

方差
.var()
.std()
下行风险(Downside Deviation)

资产价格低于无风险收益率部分的发散程度

def cal_downside_deviation(returns,rf=None):
	if rf==None:
		rf=returns.mean()
	temp=returns[returns<rf]
	dev=(sum((rf-temp)**2)/len(returns))**0.5
	return dev
风险价值(Risk at Value)

在α%置信水平下,可能发生的最大损失。

历史模拟法(用历史数据分布计算)
returns.quantile(0.05)
returns.quantile(α%)
协方差矩阵法(用正态分布)
from scipy.stats import norm
norm.ppf(α%,returns.mean(),returns.std())
期望亏空(ES)

​ 收益率低于VaR的期望。

returns[returns<=returns.quantile(0.05)].mean()
最大回撤
maxdrawdown=ffn.calc_max_drowdown(returns)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yoo_6young

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值