При данном исследовании было потрачено немало труда, поэтому ссылка на автора при перепечатке обязательна. © Simix.
Сразу скажу что расчёт ГО тема скользкая, т.к. представляет собой величину умозрительную — риск. Есть люди, которые прыгают с парашютом для развлечения, а я считаю что этот риск слишком велик чтобы прыгать без необходимости. То есть риск зависит от того, кто смотрит. Если бы мы все знали реальные риски той или иной ситуации, то была бы не жизнь, а красота. Поэтому ровно такое же ГО как в QUIKе вы не получите никаким оффлайновым алгоритмом. Биржа имеет насчёт ГО свои взгляды, собственные поправочные коэффициенты и собственный модуль, который работает только с подключением к бирже.
Но посчитать ГО в оффлайне всё-таки можно.
Чтобы как-то ограничить и описать риск количественно, биржа вводит ряд предположений и условий, а также приводит открытую
методику которыми мы и воспользуемся:
1. Планки. Верхняя планка и нижняя планка определяют коридор изменения цены в рамках одной сессии. Тем самым биржа ограничивает риск просто физически, волевым решением. Это очень хорошо. Значения планок можно узнать на сайте биржи для данного Базового Актива (БА).
Верхний лимит 154 550
Нижний лимит 143 370
http://moex.com/ru/contract.aspx?code=RTS-12.13
Обозначим эти значения
H и
L. А максимальный сессионный ход базового актива обозначим
D= H-L. Запомните эти буквы, они нам пригодятся.
2. Размером необходимого ГО считается количество денег, которое должно быть на счету, чтобы в самом худшем случае ликвидировать позицию в ноль в течение сессии.
3. Чтобы вычислить худшие случаи, мы должны уметь считать профиль нашей позиции P/L. Тогда РТС считает что худшим случаем будет точка максимальной просадки нашего профиля в удвоенном диапазоне хода базового актива: от
БА-D до
БА+D.
4. Для опционно-фьючерсного портфеля есть ещё варианты сценариев — по волатильности. Таким образом нам нужно посчитать профиль 2 раза:
а) Волатильность уменьшилась.
б) Волатильность увеличилась.
РТС предлагает считать ещё случай, когда волатильность осталась неизменной, но я считаю что этот сценарий всегда лежит между а) и б).
Результатом будет точка максимальной просадки портфеля во всех случаях.
Теперь пару-тройку ноу-хау и допущений от автора Simix, то есть от меня.
При перепечатке ссылка на автора обязательна
© Simix
1. Мне интересны только портфели, построенные на одном базовом активе, поэтому для портфелей с разными БА надо знать дополнительные коэффициенты корреляции, чтобы можно было правильно суммировать ГО. У биржи есть какие-то соображения на этот счёт, у меня — нет.
2. Если вы посчитаете всё как написано выше, то увидите что точки максимальной просадки не дают правильного результата. На самом деле здесь мы используем небольшой хак:
ГО дериватива зависит от параметра «Дельта»! Видимо РТС справедливо думает что опцион похож на фьючерс ровно в степени, насколько его дельта близка к единице. А ГО фьючерса мы считать умеем.
Если вы посчитаете ГО для фуча, вы обнаружите чудо:
ГОфуч() = D * стоимость_пункта = (H-L) * стоимость_пункта
Распространяя это правило на проданный опцион получаем:
ГОопцион(х,v) = D * стоимость_пункта * ∆(x,v)
Где
x — это точка максимальной просадки (минимального значения профиля P/L в диапазоне расчётов от
БА-D до
БА+D )
v — вола данного опциона с учётом сценария
Эта функция универсальна и для фуча и для опциона, т.к. дельта фуча = 1. Поэтому её можно применять целиком для портфеля деривативов. Если только вы умеете считать по нему дельту.
Купленный опцион, немного выпадает из этого правила: он наоборот даёт максимальный убыток в точке где дельта стремится к нулю, значит купленные опционы будут учтены именно минимальным значением портфеля. Таким образом комбинируя эти правила берём максимальное ГО из двух случаев.
Вот как это выглятит в железе:
D = H-L;
lowPt = БА — D;
highPt = БА + D;
double COptPortfel::
scenaryGO(double lowPt, double highPt, time_t tm)
{
double minVal = INT_MAX;
double minValBA = 0;
double step = (highPt-lowPt)/16;
for (double d=lowPt; d<highPt; d+=step)
{
double val = calcValue(d, tm);
// значение портфеля в точке d
// — находим где просадка самая большая
if (val < minVal)
{
// minValBA = значение БА в точке макс. просадки
// minVal = стоимость портфеля в точке макс. просадки
minValBA = d; minVal = val;
}
}
// — считаем дельту в точке мин. значения
// если ГО по дельте меньше ГО по значению, оставляем ГО по значению
// tm = текущее время
double deltaGO = -abs(calcDelta(minValBA, tm))*D;
minVal = min(minVal, deltaGO);
return minVal;
}
Я считаю ГО в терминах максимальной просадки, поэтому все значения ГО должны быть отрицательными. Если максимальная просадка всё-равно выше нуля (вы нашли грааль) то вы переходите в "
GOd mode" и ваше ГО=0 $-).
3. Немного о выборе точек расчёта профиля P/L внутри расчётного диапазона: Я беру просто 15 последовательных точек внутри отрезка плюс концы отрезка. РТС советует брать ещё дополнительно точки страйков, т.к. там просадка самая большая особенно близко к экспирации. Но это вы допишите сами, я пока не сделал.
4. Последний штрих — это сценарии волатильности. Сценарий высокой волатильности методом научного тыка был определён как просто умножение всей улыбки на 1.5 (+50%). Соответственно сценарий низкой волатильности — деление всей улыбки на 1.45 (-45%)
// волатильность понизилась
Session.kSigma = 1 — 0.45;
// kSigma — множитель волатильности для всех формул
dGO = min(dGO, scenaryGO(lowPt, highPt, nowTime));
// волатильность повысилась
Session.kSigma = 1 + 0.5;
dGO = min(dGO, scenaryGO(lowPt, highPt, nowTime));
Данная методика не даёт точного совпадения с QUIK и option.ru, но неплохо приближена к ним, она использует правильный теоретический фундамент, который совпадает с методикой биржи, а самое главное — со здравым смыслом.
Встроенный в тестер опционных стратегий, особенно динамических стратегий, этот алгоритм позволяет не парить в облаках сказочных доходностей, а чётко даёт представления о рамках реальности, заданных ГО. Не давайте ГО ни в реале ни в бэк-тестинге превысить 2/3 депозита и всё точно будет пучком. Удачи!
С большим уважением,
Энергетический дятел.
-Верхний лимит/Нижний лимит в истории как брать? Что-то не соображу никак.
сейчас берите 7.5% от цены закрытия, вот Ваш диапазон, а если необходима тонкая настройка, проверяйте дни когда была планка, или те диапазоны когда меняли ГО. можно проверить в quik или в новостях биржи, так Вы определить основные диапазоны времени когда-какое было ГО.
но по решению комитета, могут как захотят.
ГО увеличится в соответствии с правилами клиринга (на 50% сейчас).
moex.com/a1463
произведение ГО фьючерса на ту дельту (от цены БА и вол) при которой профиль позиции в диапазоне между планками минимален (при самом худшем случае в т.ч. при 3 сценариях симметричного пропорционального сдвига улыбок, вниз на -45%, текущий, и +45%)
это я опечатался
если будут ещё вопросы, постараюсь ответить в Вс вечером, пишите сюда
дельте, веге, гамме, ванне, вомме.
Нам нужен экстремум по PnL дифференцируем, приравниваем дельту-гамму, определеем S, ну а потом изменения по грекам, через дельту и умножаем на ГО.
Все равно ведь это примерно, а с греками, там наверно посокращается многое, так что может будет даже удобнее.
Option.ru не показатель, у них оценка ГО тоже приблизительная, я сравнивал их оценку с биржевой и получал разбежность в разы больше заявленных 5%.
кто парсить умеет — автоматизирует
Поэтому реально при расчетах используется диапазон от двух планок вниз до двух планок вверх. То есть, при ГО 7.5% вам нужно отложить 7.5% вниз и 7.5% вверх. Тогда максимальная потеря по фьючерсу от текущей точки до наихудшей на исследуемом диапазоне как раз составит 7.5%.
Насколько мн известно, сценарных точек всего используется 7: центр, описанные 2 границы и каждый отрезок вниз и вверх делится на 3 равные части (то есть, еще по 2 точки на каждой половинке).
Никаких поправок с умножением на дельту биржа не делает, иначе для дельта-нейтральной позиции у вас получатся нулевые риски.
Также биржа не производит никакого сальдирования между разными базовыми активами. То есть, ГО по позициям в фьючерсах и опционах на Сбербанк, Газпром и индекс РТС просто равно сумме ГО по каждому базовому активу.
И с дельтой — считается не прибыль/убыток по профилю, а дельта. Далее по формуле ГОопцион(х,v) = D * стоимость_пункта * ∆(x,v).
Т.е. максимальный убыток измеряется в эквиваленте фьючерса в любой момент времени.
Путы:
110:48
130:-115
Коллы:
150:-73
160:61
165:24.
В случае автора, физического смысла в определении ГО нет, просто перемасштабируется график дельты в ГО раз, и определяется худший случай в узком диапазоне, это недоVAR получается, несоразмерные величины. ГО фиксированное, а дельту берете на другом смещении от БА.
ГОопцион(х,v) = D * стоимость_пункта * ∆(x,v)
D=148950*7.5%=11171*0.6375*28=199402
А если волу поднять до 100% то дельта будет 31. ГО вырастет на 21000 и будет 220000.
Какое сейчас реальное ГО биржи за эту позицию? Наверно в диапазоне 200-220 тысяч?
В чем вопрос то?
тут ведь штука в чем: если вы начнете рассчитывать D=H-L в случае с купленным опционом, то у вас запросто возникнет ситуация, когда риски превышают стоимость этого опциона (поскольку наибольшая возможная цена этого опционам между планками H может быть очень высокой — во много раз текущей стоимости опциона). А это не есть здорово и вызывает праведный гнев участников торгов.
Поэтому при расчете рисков обязательно искать самый плохой сценарий, отложенный от текущей точки, а не максимум минус минимум возможной стоимости позиции между планками. Что биржа и делает.
Я писал от общей парадигме расчета рисков позиции. И опцион может быть вовсе не только в деньгах, но и без денег. В частности, то, о чем я писал выше, это что по купленному безденежному опциону колл ценой 50 пунктов как-то негоже брать 500 пунктов залогов только из-за того, что на правом риск-лимите он будет стоить 500 пунктов.
Я много раз подступался к методике биржи, но мне показалось сделать в точности как они — дело для меня неподьёмное. Считать риски по каждому активу, а затем суммировать с учётом спредов, ликвидности, минимальным риском проданного опциона и т.п. Я понял что за разумное время я этого не сделаю, поэтому действительно, я почитал различные методики SPAN, VAR, фортс и попробовал сделать что-то похожее по духу, но более доступное для реализации.
И чтобы можно было ЭТО применять на практике, я решил что пусть лучше ГО будет завышено, чем занижено.
Удивительно что и подгонять ничего не пришлось. Всё получилось очень естественно. Я ещё буду проводить тесты совпадений на реальных портфелях и позже опубликую результаты. Пока могу сразу сказать что на ближних страйках ГО у меня завышается, на дальних оно равно бирже. Это связано с тем что биржа учитывает «минимальный риск проданного опциона» отдельно по опционам, а я считаю пока весь портфель сразу и вынужден сделать этот перекос.
По волатильности:
А почему вам кажется что +50% по воле — это очень круто?
Смотрим на индекс RTSVX. 18 марта 2013г. Low=18,85, High=25,85. Это +37% просто день на вскидку, лень искать уверен что есть и +50%. Что было в авг 2011 я уж не говорю. Падает волатильность медленнее, поэтому взято -45% или даже -40% (буду ещё перепроверять).
Да согласен, методика немного сырая, но раз уж я обещал Евгению что напишу — выложил пока то что есть. Пока что с этим можно работать, потому что тестер на истории уже готов и вообще без ГО его запускать — только терять время.