Избранное трейдера DvF
Предлагаю сразу определиться с терминологией. Так повелось, что почему-то трейдеры практически не употребляют понятие конвергенция (схождение), а обобщают под один термин — дивергенция (расхождение). При этом разбивают дивергенцию на два типа: бычья и медвежья. Думаю, это связано с тем, что под дивергенцией имелось в виду не тип отклонения графика (расхождение или схождение), а расхождение данных графика цены с данными индикатора в принципе. Это, на мой взгляд, неверно. Поэтому, в рамках данного поста, я буду называть вещи своими именами, и употреблять термины дивергенция и конвергенция. Теперь к сути.
Для поиска дивергенций и конвергенций используют индикаторы. Самыми популярными являются:
Для тех, кто начинает свой путь в опционах, хочу представить некоторые картинки, которые помогут получить представления о рисках продажи непокрытых опционов.
Исходные данные для графиков:
— Расчеты для опционов на индекс РТС;
— волатильность, принятая за 1 примерно = 22
— время до экспирации 500 торговых часов. (у меня расчеты в часах; 1 день = 14 часов)
Первая картинка это то, как обычно воспринимается повышение цен опционов в зависимости от изменения ожидаемой волатильности.
По горизонтальной оси отложены страйки, где 0 это центральный страйк. Вертикальная ось – цена опциона. Синяя линия – цены при волатильности принятой за( 1). Красная линия при волатильности (х1,1). Зеленая линия при волатильности (х1,2). Много линий рисовать не стал, поскольку картинка весьма очевидна.
Теперь посмотрим на ситуацию с повышением волатильности немного с другой стороны. Посмотрим во сколько раз
Settings= { Name = "Zigzag2", -- название индикатора delta=2, -- параметр индикатора line= { { Name = "zigzagline2", Type =TYPE_LINE, Width = 2, Color = RGB(120,90, 140) } } } function Init() vMin = 0 vMax = 0 vMinindex = 0 vMaxindex = 0 voldMinindex = 0 voldMaxindex = 0 return 1 end function OnCalculate(index) local printz = 0 if index == 1 then vMin = C(index) vMax = C(index) vMinindex = index vMaxindex = index voldMinindex = index voldMaxindex = index ve = C(index) else if voldMaxindex >= voldMinindex then if C(index) > (1 + Settings.delta/100)*vMin then vMin = C(index) vMax = C(index) vMaxindex = index voldMinindex = vMinindex vFrom = voldMaxindex vTo = vMinindex printz = 1 else if vMin > C(index) then vMin = C(index) vMinindex = index vFrom = voldMaxindex vTo = index printz = 0 else vFrom = vMinindex vTo = index printz = 0 end end else if voldMaxindex <= voldMinindex then if C(index) < (1 - Settings.delta/100)*vMax then vMax = C(index) vMin = C(index) vMinindex = index voldMaxindex = vMaxindex vFrom = voldMinindex vTo = vMaxindex printz = 1 else if vMax < C(index) then vMax = C(index) vMaxindex = index vFrom = voldMinindex vTo = index printz = 0 else vFrom = vMaxindex vTo = index printz = 0 end end end end if (printz == 1) or (Size() == index) then for i = vFrom, vTo do k = (C(vTo)- C(vFrom))/(vTo- vFrom); v = i*k + C(vTo) - vTo*k SetValue(i, 1, v) ve = v end if (Size() == index) then ve = C(index) if voldMaxindex >= voldMinindex then vFrom = voldMaxindex vTo = vMinindex end if voldMaxindex <= voldMinindex then vFrom = voldMinindex vTo = vMaxindex end for i = vFrom, vTo do k = (C(vTo)- C(vFrom))/(vTo- vFrom); v = i*k + C(vTo) - vTo*k SetValue(i, 1, v) end end end end return ve end
Settings= { Name = "Zigzag", -- название индикатора delta=3, -- параметр индикатора line= { { Name = "zigzagline", Type =TYPE_LINE, Width = 1, Color = RGB(120,90, 140) } } } function Init() vMin = 0 vMax = 0 vMinindex = 0 vMaxindex = 0 voldMinindex = 0 voldMaxindex = 0 return 1 end function OnCalculate(index) if index == 1 then vMin = C(index) vMax = C(index) vMinindex = index vMaxindex = index voldMinindex = index voldMaxindex = index v = C(index) else if voldMaxindex >= voldMinindex then if C(index) > (1 + Settings.delta/100)*vMin then vMin = C(index) vMax = C(index) vMaxindex = index voldMinindex = vMinindex vFrom = vMinindex else if vMin > C(index) then vMin = C(index) vMinindex = index vFrom = voldMaxindex else vFrom = vMinindex end end else if voldMaxindex <= voldMinindex then if C(index) < (1 - Settings.delta/100)*vMax then vMax = C(index) vMin = C(index) vMinindex = index voldMaxindex = vMaxindex vFrom = vMaxindex else if vMax < C(index) then vMax = C(index) vMaxindex = index vFrom = voldMinindex else vFrom = vMaxindex end end end end for i = vFrom, index do k = (C(index)- C(vFrom))/(index- vFrom); v = i*k + C(index) - index*k SetValue(i, 1, v) end end end
Для начала рассмотрим, как меняются цены опционов в зависимости от волатильности:
На данном графике 1 – это центральный страйк; Синяя линия – цены опционов на момент вашей продажи; Зеленая линия – цены опционов при увеличении волатильности в 1,5 раза; Красная линия – цены опционов при увеличении волатильности в 2 раза.
На первый взгляд, ничего трагичного не наблюдается
Теперь посмотрим не на сколько увеличиваются цены опционов, а во сколько раз увеличиваются цены.