pandas计算最大回撤

简介: 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实现)

目录
相关文章
|
2月前
|
索引 Python
使用 pandas 对数据进行移动计算
使用 pandas 对数据进行移动计算
21 0
|
2月前
|
Python
Pandas:transform计算滚动平均
Pandas:transform计算滚动平均
27 0
|
4月前
|
SQL 并行计算 API
Dask是一个用于并行计算的Python库,它提供了类似于Pandas和NumPy的API,但能够在大型数据集上进行并行计算。
Dask是一个用于并行计算的Python库,它提供了类似于Pandas和NumPy的API,但能够在大型数据集上进行并行计算。
|
5月前
|
Python
pandas中groupby和shift结合实现相邻行的计算
pandas中groupby和shift结合实现相邻行的计算
84 0
|
6月前
|
数据可视化 Python
如何在Pandas中对数据集进行多级分组并进行聚合计算?
在Pandas中进行多级分组与聚合计算的步骤包括导入库(如pandas和matplotlib),准备数据集,使用`groupby()`方法分组,应用聚合函数(如`sum()`、`mean()`)及可视化结果。
73 11
|
Python
python计算的效率问题-pandas、numpy结合代替遍历pandas数据
python计算的效率问题-pandas、numpy结合代替遍历pandas数据
112 0
python计算的效率问题-pandas、numpy结合代替遍历pandas数据
量化交易系列【1】常用的Pandas数据统计及计算相关函数
量化交易系列【1】常用的Pandas数据统计及计算相关函数
量化交易系列【1】常用的Pandas数据统计及计算相关函数
|
数据挖掘 索引 Python
数据分析工具Pandas(6):Pandas统计计算和描述
数据分析工具Pandas(6):Pandas统计计算和描述
129 0
数据分析工具Pandas(6):Pandas统计计算和描述
|
Python
Python+pandas计算数据相关系数(person、Kendall、spearman)
Python+pandas计算数据相关系数(person、Kendall、spearman)
1102 0
Python+pandas计算数据相关系数(person、Kendall、spearman)
|
9天前
|
数据采集 存储 数据挖掘
Python数据分析:Pandas库的高效数据处理技巧
【10月更文挑战第27天】在数据分析领域,Python的Pandas库因其强大的数据处理能力而备受青睐。本文介绍了Pandas在数据导入、清洗、转换、聚合、时间序列分析和数据合并等方面的高效技巧,帮助数据分析师快速处理复杂数据集,提高工作效率。
30 0