翻译java和python之间的功能

时间:2015-05-10 04:19:48

标签: java python quantitative-finance

您好我在java中有以下功能,它似乎在计算maximum drawdown时按预期工作。

该功能如下:

        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。

关于我在这里可能缺少什么的任何指示?

1 个答案:

答案 0 :(得分:0)

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

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