Избранное трейдера krit345
Все что описано в прошлом топике https://smart-lab.ru/blog/572400.php , относится к цене опциона. Именно в нем посчитана, заранее, волатильность и известно сколько раз по 100 купили, по 99 продали. В общем, это и есть цена опциона. При том, что не имеет значения, куда придет цена.
То же самое происходит и с нашим ДХ. Напомню как мы считали СКО https://smart-lab.ru/blog/572106.php .(CуммаN X^2-Xсреднее^2)/N-1. Как видно, само движение цены в расчетах волатильности участия не принимает. Если у нас среднее было 0,01 и цена менялась на 0,01 равномерно и прямолинейно, то это 0. И если цена пошла и пошла, а вы докупаете и докупаете, согласно дельте, то изменение цены опциона будет равно изменению цены вашей позиции в БА. Но в опционе еще зашита IV в тетте, которая будет его удешевлять. Однако, первичный инструмент у нас БА и цена формируется от его движений. Опцион это производный инструмент. И если мы ни чего не потеряли на ДХ, то почему обязаны списывать деньги со стоимости опциона? А надо. Надо списать тетту. Ну, мы тетту списываем, а IV приписываем. И это игры маркет мейкера. Теперь, если удастся продать такой опцион по новой IV + ожидания, что и дальше так пойдет, то мы в плюсе.
Частота ДХ. Трудно понять людям, которые считают доходность в пунктах, понятия через интеграл. Будем, по простому, в пунктах. Допустим, у вас есть опционная позиция и вы ее ДХ. То есть держите дельту точно такую же как и в опционе. Начальный ДХ 0,5. Это значит, что вы купили S*delta или 1000*0,5 актива. Предположим, цена прошла 20%, а дельта изменилась до 0,6, на 0,1. В конце этого движения мы должны и вы должны выровнять дельту 1000*0,6. То есть докупить контрактов на 100. При этом движении вы заработали 500*0,2=100 и конечный итог 1100. Конечно, если бы знали, что дельта станет 0,6, то могли купить сразу 1000*0,6 и 600*0,2=120. То есть 20 пунктов у нас упущенная прибыль. Но так как мы не знали, мы могли бы докупать постепенно с шагом изменения дельты. Тогда бы мы разбили изменение дельты 0,01, у нас бы появилось 0,1/0,01 десять шагов, где один холостой, то есть минус 1 шаг. Один шаг у нас 1000*0,5*0,2*0,01 в пунктах. Ну а цена получилась бы средней, так как мы начали покупать от 0,51, а закончили на 0,6. Таким образом, мы бы улучшили свой результат 120-100=20, 20/2-1, на 9 пунктов. И уровняв дельту на 0,6, у нас бы было 100+9=109 пунктов. Конечно это не 120, но и не 100. Я думаю тут не должно возникнуть вопросов. Как видите без интегралов.
Я разобью свою писанину на части. Что бы можно было делать ссылки на понятия, которые мы будем использовать. Да и короткие посты читать удобнее.
СКО или волатильность. Об этом столько писали, столько считали. Однако, до сих пор меня умиляет, что или кого называют волатильностью. Казалось бы не стоить об этом повторятся, но приходится. Итак Средне Квадратичное Отклонение. Берем закрытия дня и логарифмируем. LN(сегодня/вчера), называем приращением цены. Итак 100 дней. Находим среднее. Потом возводим в квадрат каждое значение LN(сегодня/вчера)^2. Это называется дисперсией. Из каждого значение отнимаем среднее ^2 (впрочем, там значения маленькие и на скорость пули не влияют). Иногда среднее не отнимают. Теперь находят сумму всех этих значений и делят на их количество (100) минус 1. После чего извлекают квадратный корень. Называем это сигмой
Получаем число. И это важно. Это число не АТR, не среднее, не коридор, не Болинжер Бенс. К графику цены оно не имеет ни какого отношения. Не надо откладывать сигмы от цены или умножать цену на сигму. Это СКО. Это переменная необходима, что бы подставить ее в формулу.
Еще раз про опционы. Мы много обсуждали улыбки, МаркетМ, прочие тонкости. Сей час для простых опционщиков. Нового ни чего не скажу, но мне кажется, что для многих это может стать откровением.
Как я понял, обычный, не квалифицированный, опционщик не будет заморачиваться всеми этими греками и улыбками. Я хочу показать, как работать с единичным опционом, его ДХ и через это торговлей волатильностью. Вы сами сможете сделать выводы.
Для начала немного теории. Цена опциона, как нам известно, равна S*N(d1)-К*N(d2). Что значит, есть цена S есть страйк К и еще хрень, одна из которой Дельта. И у нас есть некий график IV волатильности и HV волатильности на option.ru. Что это означает и как это работает?
У вас есть синяя линия IV. В любой момент времени вы можете купить/продать опцион согласно ее значению в процентах волатильности. Как только вы это сделали, она, для вас, становится прямой. Это ваша первая нога. На графике я нарисовал красные и зеленые линии. Вы взяли 32.5% волу и все. Другой волы в опционах для вас нет. Это фикс. Это страйк вашей стратегии. Все последующие изменения IV к вам отношения не имеют.
Чего только не придумают наши финансисты, чтобы заработать денег. Вот сейчас активно продвигают барьерные ноты. За рубежом я о такой практике не слышал, поэтому возможно это отечественное ноу-хау. На мой взгляд, это полумошенническая схема, сейчас попытаюсь объяснить это на пальцах.
Вот передо мной нота от одного нашего известного финансового института (не буду уточнять от какого именно, потому что смысл у всех одинаковый). Предлагается типа облигация с 10% купоном в валюте. В ноте прописаны аж 5(!!!) акций по которым должно выполниться условие — ни одна из них не должна упасть ниже барьера. Если падает ХОТЯ БЫ ОДНА из пяти то держатель ноты получает деньги исходя из пропорции к этой упавшей акции. В качестве примера, у вас в ноте будут Apple, Microsoft что-то еще выросшее и грохнувшийся The Kraft Heinz Company. Вложив в ноту 100 тысяч баксов на выходе вы получите акций этого KHC на 70 тысяч USD (берется отношение начальной цены самой плохой акции к ее конечной стоимости на дату погашения ноты). При этом четыре другие акции могут замечательно себя чувствовать и штурмовать хаи.

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По поводу нужности математики для трейдинга поломано не мало копий (информацию можно легко найти в интернете). Что характерно, кто разбирается в математике, тот говорит «Да, нужна», кто не очень — соответственно «Нет». Особенно мне запомнилась видео дискуссия между двумя моими хорошими знакомыми, один из которых (апологет математики) создал с нуля брокерскую компанию, продал ее и сейчас трудится в Финам, а другой оппонент, самый известный продавец краевых опционов,… ну вы знаете что и как.
Сам я в математике разбираюсь крайне слабо, несмотря на то, что в одном из моих дипломов записана специальность «математик». Поэтому статьи Дмитрия Новикова и комментарии его оппонентов, к сожалению, зачастую вводят меня в ступор. Самое обидное, что практическая польза ну никак не улавливается.
В силу такой ограниченности, приходится пользоваться простыми вещами, такими как, к примеру, правило трех сигм.
Поэтому для таких как я, предлагаю к рассмотрению модель продажи краевых опционов с последующим управлением позицией, основанную на упомянутом выше правиле.

Settings={
Name="STATDIV3",
period=50,
line=
{
{
Name="curve",
Color=RGB(0,0,255),
Type=TYPE_LINE,
Width=1
},
{
Name="line",
Color=RGB(255,0,0),
Type=TYPE_LINE,
Width=1
},
{
Name="MA",
Color=RGB(0,0,255),
Type=TYPE_LINE,
Width=1
},
{
Name="MA2",
Color=RGB(0,128,128),
Type=TYPE_LINE,
Width=1
},
{
Name="line2",
Color=RGB(0,0,255),
Type=TYPE_LINE,
Width=1
},
{
Name="line3",
Color=RGB(0,128,128),
Type=TYPE_LINE,
Width=1
}
}
}
function Init()
cache_ind={}
cache_ind2={}
cache_ind3={}
return 2
end
function OnCalculate(index)
if index < Settings.period then
return nil
else
local sum1=0
local sum2=0
local sum0=0
local sum02=0
local sum03=0
for i=index-Settings.period+1, index do
do
if C(i) > O(i) then
sum1 = sum1 + C(i) - O(i)
sum2 = sum2 + C(i) - O(i)
else
sum2 = sum2 + O(i) - C(i)
end
end
cache_ind[index] = sum1/sum2
if index > Settings.period+12 then
--[[
sum0 = 1*cache_ind[index]+
(1)*cache_ind[index-1]+
(1)*cache_ind[index-2]+
(1)*cache_ind[index-3]+
(1)*cache_ind[index-4]+
(1)*cache_ind[index-5]+
(1)*cache_ind[index-6]+
(1)*cache_ind[index-7]+
(1)*cache_ind[index-8]+
(1/2)*cache_ind[index-9]+
(1/3)*cache_ind[index-10]+
(1/4)*cache_ind[index-11]+
(1/5)*cache_ind[index-12]
--]]
sum0 = 1*cache_ind[index]+
(1/2)*cache_ind[index-1]+
(1/3)*cache_ind[index-2]+
(1/4)*cache_ind[index-3]+
(1/5)*cache_ind[index-4]+
(1/6)*cache_ind[index-5]+
(1/7)*cache_ind[index-6]+
(1/8)*cache_ind[index-7]+
(1/9)*cache_ind[index-8]+
(1/10)*cache_ind[index-9]+
(1/11)*cache_ind[index-10]+
(1/12)*cache_ind[index-11]+
(1/13)*cache_ind[index-12]
end
--[[
sum0 = sum0/(1+1+1+1+1+1+1+1+1+1/2+1/3+1/4+1/5)
--]]
sum0 = sum0/(1+1/2+1/3+1/4+1/5+1/6+1/7+1/8+1/9+1/10+1/11+1/12+1/13)
cache_ind2[index] = sum0
if index > Settings.period+50 then
sum02 = 1*cache_ind2[index]+
(1)*cache_ind2[index-1]+
(1)*cache_ind2[index-2]+
(1)*cache_ind2[index-3]+
(1)*cache_ind2[index-4]+
(1)*cache_ind2[index-5]+
(1)*cache_ind2[index-6]+
(1)*cache_ind2[index-7]+
(1/2)*cache_ind2[index-8]+
(1/3)*cache_ind2[index-9]+
(1/4)*cache_ind2[index-10]+
(1/5)*cache_ind2[index-11]+
(1/6)*cache_ind2[index-12]
--[[
sum02 = 1*cache_ind2[index]+
(1/2)*cache_ind2[index-1]+
(1/3)*cache_ind2[index-2]+
(1/4)*cache_ind2[index-3]+
(1/5)*cache_ind2[index-4]+
(1/6)*cache_ind2[index-5]+
(1/7)*cache_ind2[index-6]+
(1/8)*cache_ind2[index-7]+
(1/9)*cache_ind2[index-8]+
(1/10)*cache_ind2[index-9]+
(1/11)*cache_ind2[index-10]+
(1/12)*cache_ind2[index-11]+
(1/13)*cache_ind2[index-12]
--]]
end
sum02 = sum02/(1+1+1+1+1+1+1+1+1/2+1/3+1/4+1/5+1/6)
--[[
sum02 = sum02/(1+1/2+1/3+1/4+1/5+1/6+1/7+1/8+1/9+1/10+1/11+1/12+1/13)
--]]
cache_ind3[index] = sum0 - sum02
if index > Settings.period+50 then
sum03 = 1*cache_ind3[index]+
(1/2)*cache_ind3[index-1]+
(1/3)*cache_ind3[index-2]+
(1/4)*cache_ind3[index-3]+
(1/5)*cache_ind3[index-4]+
(1/6)*cache_ind3[index-5]+
(1/7)*cache_ind3[index-6]+
(1/8)*cache_ind3[index-7]+
(1/9)*cache_ind3[index-8]+
(1/10)*cache_ind3[index-9]+
(1/11)*cache_ind3[index-10]+
(1/12)*cache_ind3[index-11]+
(1/13)*cache_ind3[index-12]
end
sum03 = sum03/(1+1/2+1/3+1/4+1/5+1/6+1/7+1/8+1/9+1/10+1/11+1/12+1/13)
end
if sum1/sum2 > 0.5 and sum03 > 0 then
sum1 = sum03
else
if sum1/sum2 < 0.5 and sum03 < 0 then
sum1 = sum03
else
sum1 = 0
end
end
return sum1, 0
end
endЛимитные ордера в стакане – что это и зачем нужно? Как извлечь из этого максимальную выгоду? Хотелось бы разобрать подробно эти вопросы.
Те, кто торгуют по стакану и постоянно следят за объемами, наверное, наблюдали, что как только цена в стакане подходит к лимитному объему, то объем отрабатывает три варианта:
1) Исполняется по рынку, и мы видим, как на индикаторе объемов (volume) происходит прирост объема на данном баре, тем самым игрок провел сделку по рынку.
2) Объем в стакане просто исчезает, и мы не видим его исполнения по рынку: могу предположить, что крупный игрок по каким-то условиям передумал войти в сделку.
3) И последний вариант – когда объем уходит от цены на несколько пунктов и не дает этим самым исполниться. Вот этот вопрос меня заинтересовал больше всех. Могу предположить, что таким образом Маркет-мейкер исполняет свои обязательства перед биржей в рамках договора

