pandas计算最大回撤

需求

需要计算某股票在某个周期内的最大回撤率。
最大回撤定义:在选定周期内任一历史时点往后推,产品净值走到最低点时的收益率回撤幅度的最大值。

实现

思路就是将dataframe在groupby之后,通过apply函数处理每个分类的最大回撤,返回一个结果

import numpy as np
import pandas as pd
def getMaxDrawdown(x):
    j = np.argmax((np.maximum.accumulate(x) - x) / x)
    if j == 0:
        return 0
    i = np.argmax(x[:j])
    d = (x[i] - x[j]) / x[i] * 100
    return d

def applyMaxDrawdown(x):
    f = x.sort_values("date").reset_index()
    array = pd.Series(f["value"])
    return getMaxDrawdown(array)

总结

因参考文章实现的是一个series的数据,而我需要处理整个dataframe里面的指标,而这时还不太清楚pandas.groupby.apply的用法

  1. pandas.groupby.agg是对分组中的某一列进行处理,是将该列传递给agg的函数,当需要同时处理多个列时,agg就有点力不从心
  2. pandas.groupby.apply是对一个分组进行处理,会将整个分组作为参数传递给appy的函数,因此可以处理多列数据

参考文章

最大回撤率(Python实现)

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值