You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Python Numpy的数组最大回撤(局部最值差)计算实现问询

原代码问题说明

  • 仅对比相邻元素的差值,没有计算「当前值相对于此前历史峰值的最大跌幅」,不符合最大回撤的定义
  • 直接对numpy数组做if cumsum[prev] > cumsum[current]的判断会触发布尔数组歧义的报错,逻辑不成立
  • 返回值和打印逻辑混乱,无法统一输出符合要求的结果

正确实现代码

import numpy as np

def MXincrementedDrawdown(cumsum):
    # 计算截至每个位置的历史累计最大值
    running_max = np.maximum.accumulate(cumsum)
    # 计算每个位置的回撤值
    drawdowns = cumsum - running_max
    # 取最大回撤(最小的回撤值对应最大跌幅)
    max_drawdown = drawdowns.min()
    if max_drawdown >= 0:
        print("No drawdown")
    else:
        print(max_drawdown)

# 测试数组
A = np.array([0,2,5,44,-12,3,-5])
B = np.array([0,10,-110,23,45,66,30,2,12])
C = np.array([0,10,11,-23,45,11,66,45,4,12])
D = np.array([0,5,6,7,8])

MXincrementedDrawdown(A)
MXincrementedDrawdown(B)
MXincrementedDrawdown(C)
MXincrementedDrawdown(D)

输出结果

-56
-120
-62
No drawdown

内容的提问来源于stack exchange,提问作者tony selcuk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 13:45:05