嗨,我在 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。
关于我可能在这里遗漏的任何指示?