编辑:值得复习第一个答案的评论部分,以更清楚地了解问题。
编辑:我正在使用SQLServer 2005
之前曾发布过类似的内容,但我认为海报提供的信息不足以真正说明最大缩水是多少。我对最大缩水的所有定义都来自本文的(前两页):http : //www.stat.columbia.edu/~vecer/maxdrawdown3.pdf
有效地,您在数学上定义了一些术语:
最高运行时间,M t
M t = [0,t]中的最大u(S u) ,其中S t是时间t上股票S的价格。
压降D t
D t = M t -S t
最大压降,MDD t
MDD t = [0,t]中的最大u(D u)
因此,有效地需要确定的是给定股票在一段时间内从一组高价和低价中得出的局部最大值和最小值。我有一个历史报价表,其中包含以下(相关)列:
stockid int day date hi int --this is in pennies low int --also in pennies 因此,对于给定的日期范围,您将在该日期范围内每天看到相同的stockid。
stockid int day date hi int --this is in pennies low int --also in pennies
因此,对于给定的日期范围,您将在该日期范围内每天看到相同的stockid。
编辑: 嗨和低是一天的高和每天低。
一旦确定了本地的最大值和最小值,您就可以将每个最大值与之后的每个最小值配对,然后计算差值。从该组来看,最大差异将是“最大跌幅”。
但是,困难的部分是找到那些最大和最小。
编辑:应该注意:最大跌幅定义为假设股票在其最高买入点买入并在其最低卖出点卖出的情况下的假设损失值。股票不能在最高价之前的最低价出售。因此,如果全局minval在全局maxval之前,则这两个值不能提供足够的信息来确定max- drawdown。
我们需要在问题域中考虑一些事项:
问题在于定义MAXES和MINS,借助曲线的功能,我们可以应用微积分,而无法应用微积分。明显地
解决此问题的一种方法是定义一个游标并对其进行暴力破解。函数式语言也有很好的工具集可以解决此问题。