2015-05-10 2 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 благодаря простоте и прозрачности, но предпочитают python из-за его краткости.

Любые указатели на то, что мне здесь не хватает?

+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() 
Смежные вопросы