2015-05-10 35 views
-2

您好我在java中有以下功能,它在計算maximum drawdown時似乎按預期工作。在Java和python之間翻譯功能

的功能如下:

 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代碼由於簡單性和透明性,但更喜歡蟒蛇由於其簡潔。

任何關於我可能在這裏失蹤的指針?

+0

你應該給有關'pd'對象,'expanding_max'方法,更多的線索'dd2here' – marmeladze

+0

@marmeladze見上面。 pd是熊貓。 –

回答

0

數學是不同的。 PY功能應該是:

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