edit: стоит рассмотреть раздел комментариев первого ответа, чтобы получить более четкое представление о проблеме.
edit: Я использую SQLServer 2005
что-то похожее на это было опубликовано раньше, но я не думаю, что плакат дал достаточно информации, чтобы по-настоящему объяснить, что такое максимальное сокращение. Все мои определения максимального вытягивания происходят из (первых двух страниц) этой статьи: http://www.stat.columbia.edu/~vecer/maxdrawdown3.pdf
у вас есть несколько терминов, определенных математически:
Running Maximum, M t
M t= max u в [0, t] (S u)
где S t - цена запаса, S, в момент времени, t.
Просадка, D t
D t= M t - S t
Max Draw Down, MDD t
MDD t= max u в [0, t] (D u)
Таким образом, эффективно то, что нужно определить, - это локальные максимумы и минимумы от набора высоких и низких цен за данный запас в течение определенного периода времени. У меня есть таблица исторических цитат со следующими (соответствующими) столбцами:
stockid int day date hi int --this is in pennies low int --also in pennies
поэтому для заданного диапазона дат каждый день будет отображаться тот же самый материал для этого диапазона.
EDIT:
hi и low являются высокими для дня и минимума для каждого дня.
после определения локального max и min, вы можете соединить каждый макс с каждым минусом, который приходит после него, и вычислить разницу. Из этого набора максимальной разницей будет "Макс. Ничья вниз".
Жесткая часть, однако, находит те max и min.
edit: следует отметить: максимальная просадка определяется как величина гипотетической потери, если акция куплена у нее наивысшей точкой покупки и продается на ней с понижением точки продажи. Запасы не могут быть проданы с минимальным значением, которое было до maxval. поэтому, если глобальное значение minval предшествует глобальному maxval, эти два значения не предоставляют достаточной информации для определения максимального просадки.