好吧,假设我有一个来自交易账户的简单表格,其中包含所有典型的交易信息:
Account ID Type OrderID Points NetPL Balance
13543564678 16 BUY 389745683 4.55 100.00 1,000,000.00
13543564678 16 BUY 389745684 4.55 100.00 1,000,100.00
13543564678 16 BUY 389745685 4.55 100.00 1,000,200.00
13543564678 16 SELL 389745686 4.55 100.00 1,000,300.00
13543564678 16 BUY 389745687 4.55 100.00 1,000,400.00
13543564678 16 SELL 389745688 4.55 100.00 1,000,500.00
13543564678 16 SELL 389745689 4.55 100.00 1,000,600.00
13543564678 16 SELL 389745690 4.55 -100.00 1,000,700.00
13543564678 16 SELL 389745691 4.55 -100.00 1,000,600.00
13543564678 16 SELL 389745692 4.55 -100.00 1,000,500.00
13543564678 16 SELL 389745693 4.55 -100.00 1,000,400.00
13543564678 16 SELL 389745694 4.55 100.00 1,000,300.00
13543564678 16 SELL 389745695 4.55 100.00 1,000,400.00
13543564678 16 BUY 389745696 4.55 100.00 1,000,500.00
13543564678 16 BUY 389745697 4.55 100.00 1,000,600.00
13543564678 16 BUY 389745698 4.55 100.00 1,000,700.00
13543564678 16 BUY 389745699 4.55 100.00 1,000,800.00
13543564678 16 BUY 389745700 4.55 100.00 1,000,900.00
13543564678 16 BUY 389745701 4.55 100.00 1,001,000.00
13543564678 16 BUY 389745702 4.55 100.00 1,001,100.00
13543564678 16 BUY 389745703 4.55 100.00 1,001,200.00
13543564678 16 BUY 389745704 4.55 -100.00 1,001,300.00
13543564678 16 BUY 389745705 4.55 -100.00 1,001,200.00
13543564678 16 BUY 389745706 4.55 -100.00 1,001,100.00
13543564678 21 BUY 389745707 4.55 -100.00 1,001,000.00
13543564678 21 SELL 389745708 4.55 -100.00 1,000,900.00
13543564678 21 SELL 389745709 4.55 -100.00 1,000,800.00
13543564678 21 SELL 389745710 4.55 -100.00 1,000,700.00
13543564678 21 BUY 389745711 4.55 -100.00 1,000,600.00
13543564678 21 SELL 389745712 4.55 -100.00 1,000,500.00
13543564678 21 BUY 389745713 4.55 -100.00 1,000,400.00
13543564678 21 SELL 389745714 4.55 -100.00 1,000,300.00
13543564678 21 SELL 389745715 4.55 100.00 1,000,200.00
13543564678 21 BUY 389745716 4.55 100.00 1,000,300.00
我在这里需要的是仅使用 sql 计算最大回撤。我可以在 java 上轻松地做到这一点(运行一个循环),但这应该是一个大查询的一部分,计算不同的 acc 参数。
所以让我解释一下公式:对于数据库中所有可用的 acc 记录,最大回撤是一个显示最大余额下降到负数的值。看看上面的 ex,第一个回撤是 400 美元(第一个负 100 美元部分),第二个更大,它是 1200 美元(第二个)。如您所知,这些回撤经常发生,因此 acc 历史应该有很多,而不仅仅是此处显示的 2 次。通常它会在一个巨大的数据集上计算这种数据,从 100,000 条记录开始。
env 是 oracle 11gr2,只读访问。任何聪明的想法将不胜感激!
好的,看起来系统会覆盖编辑,所以我必须将其放入 1 个合并中。我尝试添加一个 artif 列,其中映射负数交易为“Y”,并试图找到一种方法如何在它之后对它们执行 sum()。这里的问题是任何单个记录都可以超过任何结果记录的 sum()。