-2

嗨,我在 java 中有以下函数,它似乎在计算最大回撤时按预期工作。

功能如下:

        DecimalFormat df = new DecimalFormat("########");
        double max_dd = 100;
        for(double t0:returns.keySet()){
            for(double t1:returns.keySet()){

                if(t1>t0){
                    double r = returns.get(t1)/returns.get(t0)-1;
                    if(r<max_dd){
                        max_dd = r;
                        System.out.println(df.format(t1) +"," +df.format( t0) + "," + max_dd + "," +returns.get(t1) + "," + returns.get(t0));
                    }
                }
            }
        }

我在这里得到一个结果。

然后我在python中运行以下函数:

pd下面是熊猫,这是常用的表示法。

def max_dd_(ser):
    max2here = pd.expanding_max(ser)
    dd2here = ser - max2here
    return dd2here.min()

结果是一个非常不同的数字。

数据来自同一个源文件,格式为:(Date,Wealth例如:2014-01-1,12.5)

由于简单和透明,我信任 java 代码,但由于简洁,我更喜欢 python。

关于我可能在这里遗漏的任何指示?

4

1 回答 1

0

数学是不同的。Py 函数应该是:

def max_dd_(ser):
    max2here = pd.expanding_max(ser)
    dd2here = ser / max2here - 1
    return dd2here.min()
于 2015-05-10T12:46:51.307 回答