mysql中计算最大回撤_基金最大回撤算例(Java 1.8)

本文介绍了如何使用Java 1.8计算基金的最大回撤,通过三种不同级别的方法比较效率,涉及净值数据处理、下降趋势点的筛选,并提供了相应的代码示例。
摘要由CSDN通过智能技术生成

1、测试数据源:长盛电子信息主题灵活配置混合(000063),2013-05-10~2016-04-15全部历史净值数据。数据净值曲线:

08b05ce0d596c72a04d00d75c1365631.gif

2016-4-17 18:26:30 上传

下载附件 (16.76 KB)2、写了三种方式做比较,Level1是参考了一些资料做的模版;Level2在前者基础上做了循环点的修改,将净值中所有下降沿的顶点和终点成对筛选出来,存为一个集合。经运行测试,Level1和Level2两者消耗时间相当;Level3将净值中所有下降沿的顶点值和终点值筛选出来,分别存为集合。当最大回撤出现在数据靠后位置时,减少了搜寻最低点的次数,此时Level3有一定优势。

3、主要代码如下:class ValueSample

{

private static ArrayList valueCollection = new ArrayList<>();// 净值集合

private static ArrayList maxCollection = new ArrayList<>();// 下降趋势顶部索引集合

private static ArrayList minCollection = new ArrayList<>();// 上升趋势底部索引集合

private static ArrayList IndexCollection = new ArrayList<>();// 趋势点索引集合

public static void main(String[] args)

{

//.....此处省略导入净值到valueCollection的过程。

// 最大回撤,Level1

long start = System.nanoTime();

System.out.println("L1最大回撤=" + getMaxDrawdownLevel1());

long end = System.nanoTime();

System.out.println("L1用时:" + (en

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值