|
@@ -2,16 +2,18 @@ package com.simuwang.calc;
|
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
import com.smppw.common.pojo.dto.CompoundRet;
|
|
|
-import com.smppw.utils.BigDecimalUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
import java.util.List;
|
|
|
|
|
|
@Service
|
|
|
public class CompetitionIndicatorCalcService {
|
|
|
|
|
|
- private static final BigDecimal INDICATOR_MAX_VALUE = new BigDecimal(999999999);
|
|
|
+ private static final BigDecimal INDICATOR_INVALID_VALUE = new BigDecimal(999999999);
|
|
|
+
|
|
|
+ private static final BigDecimal INDICATOR_MAX_VALUE = new BigDecimal(999999998);
|
|
|
|
|
|
/**
|
|
|
* 计算年化收益率
|
|
@@ -76,8 +78,12 @@ public class CompetitionIndicatorCalcService {
|
|
|
return null;
|
|
|
}
|
|
|
if (maxDrawDown.compareTo(BigDecimal.ZERO) == 0) {
|
|
|
+ return INDICATOR_INVALID_VALUE;
|
|
|
+ }
|
|
|
+ BigDecimal calmarRatio = retA.divide(maxDrawDown).setScale(4, RoundingMode.HALF_UP);
|
|
|
+ if (calmarRatio.compareTo(INDICATOR_INVALID_VALUE) > 0) {
|
|
|
return INDICATOR_MAX_VALUE;
|
|
|
}
|
|
|
- return BigDecimalUtils.divide(retA, maxDrawDown);
|
|
|
+ return calmarRatio;
|
|
|
}
|
|
|
}
|