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