Ram*_*amy 11 sql sql-server sql-server-2005
编辑:值得回顾第一个答案的评论部分,以更清楚地了解问题.
编辑:我正在使用SQLServer 2005
之前发布了类似于此的内容,但我认为海报没有给出足够的信息来真实地解释最大抽奖是什么.我对max max draw的所有定义都来自本文的(前两页):http: //www.stat.columbia.edu/~vecer/maxdrawdown3.pdf
实际上,您可以通过数学方式定义一些术语:
运行最大值,M t
M t = [0,t](S u)
中的最大u,其中S t是股票S的价格,时间t.
缩编,D t
D t = M t - S t
Max Draw Down,MDD t
MDD t = [0,t]中的最大u(D u)
所以,实际上需要确定的是一段时间内给定股票的一组高价和低价的当地最大值和最小值.我有一个历史报价表,其中包含以下(相关)列:
Run Code Online (Sandbox Code Playgroud)stockid int day date hi int --this is in pennies low int --also in pennies因此,对于给定的日期范围,您将在该日期范围内每天看到相同的stockid.
编辑:
高和低是白天高,每天低.
一旦确定了局部最大值和最小值,您可以将每个最大值与其后的每个最小值配对并计算差值.从该组中,最大差异将是"最大下拉".
然而,困难的部分是找到那些最大和最小的.
编辑:应该注意:如果股票在其最高买入点买入并以低点卖出点卖出,则最大亏损定义为假设损失的价值.股票不能以maxval之前的最小值出售.因此,如果全局最小值位于全局最大值之前,则这两个值不能提供足够的信息来确定最大值.
我们需要在问题域中考虑一些事情:
问题在于定义 MAXES 和 MINS,通过曲线函数我们可以应用微积分,可惜我们不能。明显地
解决这个问题的一种方法是定义一个游标并对其进行暴力破解。函数式语言也有很好的工具集来解决这个问题。