Избранное трейдера Георгий Харитонов

по

Создаём рынок волатильности по теории оптимальной улыбки (Market Making Volatility by STO)


Сегодня мы будем выступать в качестве поставщика бесконечной ликвидности по опционам. То есть мы будем безотказно играть в игру с нулевой суммой так, чтобы, как минимум, не проиграть, а это возможно только в том случае, если мы будем продавать и покупать волатильность по цене, соответствующей седловой точке в игре покупателя и продавца, то есть по цене GTO (game theory optimal). Иными словами, мы будем заниматься непосредственно pricing'ом опционов, назначая цены put'ам и call'ам, таким образом, чтобы ни одна стратегия и ни один набор случайных, стохастических стратегий не мог получить положительное преимущество при игре с нами.

Чтобы назначать цену волатильности, для начала, не плохо было бы принять какую-либо модель волатильности. Например, это может быть модель случайного процесса, подчинённого логистическому распределению:

Создаём рынок волатильности по теории оптимальной улыбки (Market Making Volatility by STO)
Рис.1. Распределение логарифмических приращений цен акций ПАО Газпром и их аппроксимация логистическим распределением.


или распределению Лапласа:

( Читать дальше )

Грааль знакомого трейдера. Раздаю, качайте. +Анонс предстоящих раздач.

Прежде анонс что планирую выложить на всеобщее обозрение в скором времени.
Ну наверно самое интересное это расширенный курс обучение-грааль от Майтрейда. 
Да, да 6 часов видеокурса обучения от SUPER-VIP трейдера Виктора Тарасова победитиля ЛЧИ ни одного месяца в минус. Стоимость 40тыщ я вам предоставлю бесплатно.
Курс Ивана Коваль-Зайцева. Да это тот кто всех достал своей рекламой на Ютубе, от которого ушла жена когда он не зарабатывал, но потом создал свою систему вернулась жена купил дом и машину. Своими знаниями он поделится с вами бесплатно конечно с помощью Байкала и его бесплатной раздачей. Просмотрев его курс к вам не только вернется жена, нет, вы найдете лучше, моложе!
Есть даже Булыгина))) 
И это еще не все! 

Теперь по теме топика. Начинаем.

1. Основа
(стоп, соотношение, вероятность)
3 правила соблюдение которых обязательно.
Стоплосс.
Стопы надо ставить всегда!
Соотношение риск к прибыли. 
Минимальное соотношение — 1 к 2. Это значит что рискуя 5 пунктами твоя потенциальная прибыль должна быть минимум 10, лучше больше.



( Читать дальше )

Тестирование случайных чисел и Фибоначчи на примерах. Привет трейдеру с Уолл Стрит

Добрый день.
Еще вчера была идея, понять смысл фибоначчи, как их натягивать, если идет тренд, как быть и вообще, как отрабатываются. <видел одного хорошего человека, нахваливал эту штуку>

Вообщем из всех графиков, не смог толком даже найти нормальные волны, чтобы он себя в деле показал. Ведь его от минимума до максимума волны нужно тащить, даже не зная, закончился ли рост-падение. Значит просто выискивал подходящие волны и все.



( Читать дальше )

Выбор Брокера по тарифам (ФИНАЛ).

На российском рынке не один, а целых ДВА брокера вдохновились примером американского брокера Robinhood и отменили брокерскую комиссию, причем один из них является крупнейшим классическим брокером и его знают практически все!

Что за …. (благотворительность такая) — подумал я. И с изрядной долей скепсиса начал «чесать репу». Для нашего рынка, это буквально как красная тряпка для быков, что-то совершенно необычайное! Об этом должны кричать из каждого «утюга»! Но я что-то не вижу рекламы на первом канале (юмор), что еще больше провоцирует всякие инсинуации: в чем здесь подвох?

Выбор Брокера по тарифам (ФИНАЛ).

Лучший способ разобраться в этом вопросе – сравнить реальные условия этих «брокеров без комиссии» с остальными «обычными» брокерами на конкретном примере, рассмотрев все их скрытые комиссии под микроскопом. С этой целью, я реанимировал свой старый пост посвященный выбору брокера по тарифам и заодно, по многочисленным просьбам адептов спекулятивного цеха, увеличил количество тестируемых брокеров



( Читать дальше )

Как заработать на модных сервисах?

Поколение миллениалов много времени проводит онлайн.
Сейчас это самая активная часть населения и целевая аудитория множества модных интернет-сервисов.
Наш ведущий аналитик Вадим Кравчук рассказал возможно ли на этом заработать. А если возможно, то как?

Эксперт сравнил акции eBay, TripAdvisor и Square — компаний, ориентированных на молодое поколение потребителей.

TripAdvisor

TripAdvisor провел IPO в 2012 году и пока не может похвастаться стабильностью. Однако у компании есть устоявшаяся сильная команда, качественный сервис и относительно стабильные денежные потоки. По мультипликаторам TripAdvisor оценен чуть дороже eBay, но, как и подобает новому амбициозному проекту на рынке, не платит дивиденды.

Вызывает беспокойство стагнация выручки в последние годы. Компания почти не растет, поэтому акции закономерно снижаются и сейчас торгуются вблизи уровней 2013 года. Прибыль компании на текущий момент является достаточно низкой, и акции могут стоить еще дешевле в перспективе ближайших месяцев.

( Читать дальше )

Друг мой, скальпер еще тот, + 34% за день.

Общаюсь с одним знакомым. Молодой студент, скальпинг любит, впрочем, как и многие нетерпеливые трейдеры. Сразу оговорюсь, что скальпинг — очень тяжелый вид спекуляций. Но торгует он не часто, 3-5 дней в месяц, этого хватает, чтобы выглядеть не как выжатый лимон и снимать деньги с рынка.

Трейдером его назвать язык не повернется, но уже второй год все еще снимает сливки с рынка. Вчера мне прислал свою работу по Доллар-Рублю, на что ожидал наверное услышать от меня признания, что он крут.



( Читать дальше )

Camarilla Equation. Индикатор для QUIK. Часть 3.

    • 22 августа 2019, 12:29
    • |
    • XXM
  • Еще
Получил такое сообщение:

привет!
у меня в квике стояла камарилла аж с 2014 года, когда вы выложили здесь этот индикатор.
квик обновился до 8 и камарилла пропала.
это не исправить?

Глянул по тэгу https://smart-lab.ru/tag/Camarilla/ и вот они:
1. Camarilla Equation. Индикатор для QUIK.
2. Camarilla Equation. Индикатор для QUIK. Часть 2.

Выкладываю вариант, не зависящий от обновлений QUIK.

-- Camarilla.lua
Settings={
	Name = "Camarilla",
	period = 'D',
	line =
		{
			{Name = "S5", Color = RGB(255, 0, 0), Type = 1, Width = 2},
			{Name = "S4", Color = RGB(255, 165, 0), Type = 1, Width = 2},
			{Name = "S3", Color = RGB(255, 255, 0), Type = 1, Width = 2},
			{Name = "PP", Color = RGB(0, 255, 0), Type = 1, Width = 2},
			{Name = "R3", Color = RGB(0, 191, 255), Type = 1, Width = 2},
			{Name = "R4", Color = RGB(0, 0, 255), Type = 1, Width = 2},
			{Name = "R5", Color = RGB(139, 0, 255), Type = 1, Width = 2},
		}
}

local math_floor = math.floor
local levels = 0
local ydH, ydL, ydC, ydO = {},{},{},{}
local PP, R3, R4, R5 = 0,0,0,0
local S3, S4, S5 = 0,0,0
	local delta = 0
	local cl = 0
local predThisDay=0
local function dTs(t) return 100*(100*t.year+t.month)+t.day; end
local OldDay = ''	-- для выделения начала торгового дня

function Init ()
	local t=getDataSourceInfo()
	local tt = t.interval
	if tt == -3 then 
		message('Месячный график не обрабатывается.',1)
		return 
	end
	return 7
end

function OnCalculate (index)
	local time tt=T(index); ---время из свечи
	--local ThisDay=dTs(tt)	-- дата в формате yyyyMMdd
	local tDay=dTs(tt)	-- дата в формате yyyyMMdd
	local ThisDay = tDay
	if Settings.period == 'W' then
		ThisDay=tt.week_day	-- номер недели
	end
	if index == 1 then
		--message('First ThisDay = '..tostring(ThisDay),1)
		local t=getDataSourceInfo()
		--7.2.5 Функция предназначена для получения информации об источнике данных для индикатора.
		local scale = getSecurityInfo(t.class_code, t.sec_code).scale	--	NUMBER, Количество значащих цифр после запятой
		mul = 10^scale  -- возведение в степень
		local tt = t.interval
		if tt == -3 then tt = 'месяц' 
		elseif tt == -2 then tt = 'неделя'
		elseif tt == -1 then tt = 'день' 
		else
			tt = tt..' мин.'
		end
		--message(t.sec_code..'('..t.class_code..'), цифр после запятой: '..scale..', mul = '..mul..', дата = '..ThisDay,1)
		levels = levels + 1
		if ThisDay ~= OldDay then
			OldDay = ThisDay
		end	
		predThisDay = ThisDay
		--
		delta = H(index) - L(index)
		cl = C(index)
		R5 = (H(index) / L(index))*cl
		calcLevels(index)
		local per = 'daily'
		if Settings.period == 'W' then
			per = 'weekly'
		end
		message('Camarilla '..per..', Т = '..tt..', © xsharp.ru 20.06.2015', 1)
		return
	end
	if Settings.period == 'W' then
		if ThisDay < OldDay then	-- для неделек
			OldDay = OldDay + 1
			if OldDay ~= ThisDay then
				OldDay = ThisDay
			end
			levels = levels + 1
			delta = ydH[levels-1] - ydL[levels-1]
			cl = ydC[levels-1]
			R5 = (ydH[levels-1] / ydL[levels-1])*cl
			calcLevels(index)
			--if index<120 then
			--message('index= '..tostring(index)..', Смена недели: '..tostring(ThisDay)..', OldDay: '..tostring(OldDay)..', d='..tDay..', R3= '..R3..', PP= '..cl..', S3= '..S3,1)
			--end
			predThisDay = ThisDay
		else
			if ThisDay ~=predThisDay then
				--message('index= '..tostring(index)..', ThisDay= '..tostring(ThisDay)..', predThisDay: '..tostring(predThisDay)..', d='..tDay..', R3= '..R3..', PP= '..cl..', S3= '..S3,1)
				predThisDay = ThisDay
				OldDay = OldDay + 1
			end
			ThisDayF(index)
		end
	elseif Settings.period == 'D' then
		if ThisDay ~= OldDay then	-- для дневок
			OldDay = OldDay + 1
			if OldDay ~= ThisDay then
				OldDay = ThisDay
			end
			levels = levels + 1
			delta = ydH[levels-1] - ydL[levels-1]
			cl = ydC[levels-1]
			R5 = (ydH[levels-1] / ydL[levels-1])*cl
			calcLevels(index)
			--if index<120 then
			--message('index= '..tostring(index)..', Смена недели: '..tostring(ThisDay)..', OldDay: '..tostring(OldDay)..', d='..tDay..', R3= '..R3..', PP= '..cl..', S3= '..S3,1)
			--end
			predThisDay = ThisDay
		else
			if ThisDay ~=predThisDay then
				--message('index= '..tostring(index)..', ThisDay= '..tostring(ThisDay)..', predThisDay: '..tostring(predThisDay)..', d='..tDay..', R3= '..R3..', PP= '..cl..', S3= '..S3,1)
				predThisDay = ThisDay
				OldDay = OldDay + 1
			end
			ThisDayF(index)
		end
	elseif Settings.period == 'H4' then
		if ThisDay ~= OldDay then	-- для дневок
			OldDay = OldDay + 1
			if OldDay ~= ThisDay then
				OldDay = ThisDay
			end
			levels = levels + 1
			delta = ydH[levels-1] - ydL[levels-1]
			cl = ydC[levels-1]
			R5 = (ydH[levels-1] / ydL[levels-1])*cl
			calcLevels(index)
			--if index<120 then
			--message('index= '..tostring(index)..', Смена недели: '..tostring(ThisDay)..', OldDay: '..tostring(OldDay)..', d='..tDay..', R3= '..R3..', PP= '..cl..', S3= '..S3,1)
			--end
			predThisDay = ThisDay
		else
			if ThisDay ~=predThisDay then
				--message('index= '..tostring(index)..', ThisDay= '..tostring(ThisDay)..', predThisDay: '..tostring(predThisDay)..', d='..tDay..', R3= '..R3..', PP= '..cl..', S3= '..S3,1)
				predThisDay = ThisDay
				OldDay = OldDay + 1
			end
			ThisDayF(index)
		end
	end
	return S5, S4, S3, cl, R3, R4, R5
end

function round(value)
	return math_floor(value*mul + 0.5) / mul
end

function ThisDayF(index)
	ydC[levels] = C(index)
	if H(index) > ydH[levels] then
		ydH[levels] = H(index)
	end
	if L(index) < ydL[levels] then
		ydL[levels] = L(index)
	end
end

function calcLevels(index)
	ydO[levels] = O(index)
	ydH[levels] = H(index)
	ydL[levels] = L(index)
	ydC[levels] = C(index)
	--
	R3 = cl + delta * 1.1/4
	R4 = cl + delta * 1.1/2
	--
	S3 = cl - delta * 1.1/4
	S4 = cl - delta * 1.1/2
	S5 = cl - (R5-cl)
	--
	R5 = round(R5)
	R4 = round(R4)
	R3 = round(R3)
	S3 = round(S3)
	S4 = round(S4)
	S5 = round(S5)
end
  • обсудить на форуме:
  • QUIK

История одного ИИС

В начале августа я закрыл ИИС, открытый в феврале 2016 и вывел деньги и оставшиеся бумаги, которые было жалко продавать.

Хочется подвести итоги, зафиксировать и проанализировать, в первую очередь, для самого себя, полученные за 3,5 года результаты.

Может, что-то из полученного мной опыта, кому-то еще будет полезно.

В далеком уже, кажется, 2016 году появилась возможность инвестировать деньги, полученные от продажи доли в бизнесе.

На тот момент в активе у меня, кроме денег, была пара слитых на ФОРТС депозитов, с десяток прочитанных книг по техническому анализу и азам инвестиций, огромная самоуверенность и желание играть на бирже… Так себе инструментарий, да… )

Цель была, конечно же, была довольно скромна: зарабатывать 50% годовых и накопить к старости мильярд… )) обязательно долларов...

Но как это сделать, представления не было, предыдущий опыт показывал, что гораздо легче все слить, чем хоть что-то заработать, поэтому стратегия на первый год была предельно проста:

  1. Вложить деньги с минимальным риском и постараться их не потерять.
  2. Получить налоговый вычет.


( Читать дальше )

Мартингейл через опционы. Спасет ли время?

Хочу поделиться своим виденьем торговли вертикальными спредами.
Для начала картинки
Мартингейл через опционы. Спасет ли время?
Мартингейл через опционы. Спасет ли время?

( Читать дальше )

Упрощенный алгоритм индикатора zigzag

в дальнейшем в него встрою сигналы и наклонные уровни

Упрощенный алгоритм индикатора zigzag

--[[
параметры: 
Procent - процент зигзага 
--]]
Settings={
Name="ZIGZAGPROF",
Procent=1,
    line=                                     
                {  
					{  
                        Name = "cur1",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(0,0, 0)
                    }				
                }
}

function Init()
  
  y1 = nil
  y2 = nil
  x1 = 1
  x2 = 1
    
  return 1
  
end

function OnCalculate(index)

  de = Settings.Procent

  vl = C(index)
  if index == 1 then 
	y1 = vl
    y2 = vl
  else   
	  if C(index) > y1*(1+de/100) and y1 < y2 then 
	    x2 = x1
	    y2 = y1	
	    x1 = index 
	    y1 = C(index)	        
	  end 	
	  if C(index) > y1 and C(index) > y2 then 
	    x1 = index 
	    y1 = C(index)	  			  
	  end 
	  	  		
	  if C(index) < y1*(1-de/100) and y1 > y2 then 
	    x2 = x1
	    y2 = y1
	    x1 = index 
	    y1 = C(index)	  		
	  end 	
	  if C(index) < y1 and C(index) < y2 then 
	    x1 = index 
	    y1 = C(index)	  			  
	  end 	  	  		
	end 	
  
  if x1 ~= index then 
    curfrom = x1
	curto = index
  else 
    curfrom = x2
	curto = x1
  end 
 
  if curto ~= curfrom and curfrom ~= nil and curto ~= nil then 
    if C(curto) ~= nil and C(curfrom) ~= nil then 
      k = (C(curto)- C(curfrom))/(curto- curfrom)  
      for i = curfrom, index  do
        curv = i*k + C(curto) - curto*k  		          
	    SetValue(i, 1, curv)
      end   	
	end 
  end 
  
  return vl
 
  
end


 

 
  • обсудить на форуме:
  • Quik Lua

....все тэги
UPDONW
Новый дизайн