Избранное трейдера Денис Жарков

по

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

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

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

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

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



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

Как посчитать популярные мультипликаторы без знания МСФО за минуту. Очень полезные короткие видео для начинающих.

Все на понятном и доступном языке. 
Видео разбиты на серии  стиле «а как посчитать…?» знание МСФО не требуется! К концу, вы научитесь строить и считать большинство мультов за минуту и не больше. Видосики короткие и без воды.
Как посчитать популярные мультипликаторы без знания МСФО за минуту. Очень полезные короткие видео для начинающих.
Рекомендуем самостоятельно собрать файл или просто скачать готовый пример из видео. 
Темы: 
1. Как посчитать, сколько годовых прибылей стоит компания. 
2. Как посчитать чистый долг. 
3. Как посчитать полную стоимость компании EV. 
4. Что такое EBITDA и как это считать. 
5. Как посчитать свободный денежный поток. 
6. Как посчитать мультипликатор P/BV. 
7. Как построить пузырьковую диаграмму. 
Внимание! Данный метод не является методическим пособием или последней инстанцией. Сообщество не несет ответственности за все сказанное в данном видео и тем более за сделки, заключенные на его основе.  
Данный метод является поверхностным и упрощенным для понимания начинающих инвесторов.

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

Тест стратегии скользящие средние.

Тест стратегии скользящие средние. 



Устанавливаем Скользящие средние на график
Moving Average 1, Moving Average 2, Moving Average 3.
Так же устанавливаем индикатор MACD

Условия для покупок:

1) Открываем сделку, как только Moving Average 1 пересекает Moving Average 2, Moving Average 3 снизу вверх и при этом получено подтверждение от индикатора MACD (один бар закрылся выше Нулевого уровня)
2) Стоп-лосс устанавливается на расстоянии в ____ пунктов.
3) После прохождения ____ пунктов закрываемся по тейку.


Условия для продаж:

1) Открываем сделку, как только Moving Average 1 пересекает Moving Average 2, Moving Average 3 сверху вниз и при этом получено подтверждение от индикатора MACD (один бар закрылся ниже Нулевого уровня).
2) Стоп-лосс устанавливается на расстоянии в ____ пунктов.
3) После прохождения ____ пунктов закрываемся по тейку.

тест си. комиссия 10 пунктов. открытия на утренних гэпах нет.

Тест стратегии скользящие средние.
Тест стратегии скользящие средние.

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

Практический пример использования Tensorflow serving для применения ваших моделей в любой среде алгоритмической торговли.

Всем привет, 

Я забыл, что видео посты на смарт-лабе сразу отправляются в бан :), поэтому немного текста.
Я как-то начал тему о том, что новые технологии очень помогают и облегчают жизнь алготрейдерам. И хотел показать как удобно использовать tensorflow serving, запущенный в docker контейнере, для использования моделей машинного и глубокого обучения. Так как такой метод позволяет быстро и лего развернуть, и использовать ваши модели почти в любой торговой среде.

И так, этот пост логическое завершение предыдущего: https://smart-lab.ru/blog/558070.php

Там было видео, в котором я рассмотрел подготовку данных. Мы получили исторические цены от yahoo сервиса, выбрали точки входа по нашей стратегии и подготовили датасет для алгоритма машинного обучения.

В сегодняшнем видео будет следующее:

— Используя tensorflow.keras api мы создадим две версии нейронной сети;
Сети очень простые и реализуют бинарную классификацию, отднако выходной слой имеет сигмоидную функцию активации и поэтому на выходе мы будем получать вероятность, а не конкретный класс. А как вы возможно помните, нейронная сеть нам нужна именно для того, что бы предстказывать вероятность получения нашей прибыли.

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

Перевод ЦБ между брокерами

Алгоритм перевода ценных бумаг (далее по тексту — ЦБ) между брокерами:
1. На счет должны быть куплены ЦБ
2. Подать по телефону поручение брокеру на перевод ЦБ с торгового депозитарного счета на основной депозитарный счет (как правило код счета 17 нулей). В некоторых депозитариях есть возможность делать перевод ЦБ с торгового счета, в таком случае этот пункт пропускаем.
3. Скачать реквизиты с официальных сайтов двух депозитариев (откуда и куда перевод)
4. После того как ЦБ будут переведены на основной депозитарный счет, нужно с паспортом поехать в ваш депозитарий (адрес узнавайте на официальном сайте вашего брокера/депозитария), взять с собой реквизиты куда переводить ЦБ, написать заявление на перевод ЦБ. Если в личном кабинете брокера есть возможность переводить ЦБ дистанционно, то ехать никуда не нужно
5. В этот же день поехать в тот депозитарий куда переводите ЦБ, взять с собой реквизиты откуда переводите ЦБ, написать заявление на прием ЦБ. Если в личном кабинете принимающего брокера есть возможность приема ЦБ дистанционно, то ехать никуда не нужно

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

Обобщённый подход к диверсификации рисков

Дополнение к серии «Портфельная оптимизация как бустинг на слабых моделях»


  • Обобщённая проблема

Результаты оценки любых случайных величин представляют из себя случайную величину. Не исключением здесь будут оценки ковариации.

Особенно сильно эффект неточности полученных оценок (случайности статистик) будет проявляться в портфелях, составленных из большого количества ценных бумаг — большего или сопоставимого количеству располагаемых наблюдений. И, поскольку, в некотором приближении задача портфельного инвестирования сводится к поиску двух максимально независимых активов из множества:


Обобщённый подход к диверсификации рисков 

где R — коэффициент взаимной корреляции — её решение, естественным образом, будет располагаться в области максимально отрицательной статистической ошибки.

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

Индикатор наклонных уровней

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

Индикатор наклонных уровней

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

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

function OnCalculate(index)

  de = Settings.Procent
  
  delt = 0.01

  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
--]]
    
    lev = nil
	if x1 ~= x2 then  
     
	
	k = (C(x1)- C(x2))/(x1- x2)    
	maxd = 0
    for i = x2, x1  do
      
	  lev = i*k + C(x1) - x1*k  		
	  
	  if  C(x2) > C(x1) and lev <= H(i) 
	  then 
	    if maxd < H(i) - lev  then 
          maxd = H(i) - lev 
		end
        --maxd = 0.5		
      end 
	  
      if  C(x2) < C(x1) and lev >= L(i) 
	  then 
	    if maxd > L(i) - lev  then 
          maxd = L(i) - lev
		end 
		--maxd = -0.5
      end 	  
	  
    end   	
      
    lev = nil 
    --[[if x1 < index 
	  and 
	  (
	  C(x2) > C(x1) and C(x1) < C(index) 
      or 
      C(x2) < C(x1) and C(x1) > C(index) 	  
	 )
	then --]]
      lev = 
	    index*k + C(x1) - x1*k + 
		maxd
	--end   
    
	  
	  
	--[[  
	
	map = 10
	lev = 0
	if index-map+1 > 0 then 
      for i = index-map+1, index  do
        lev = lev + C(i)
      end   		
	  lev = lev/map
	  ma = lev
	end
	
	map = 30
	lev2 = 0
	if index-map+1 > 0 then 
      for i = index-map+1, index  do
        lev2 = lev2 + C(i)
      end   		
	  lev2 = lev2/map
	  ma2 = lev2
	end	

	
	if 
	  C(x2) > C(x1) and C(x1) < C(index) and C(index) > lev and C(index) - C(x1) > C(index)*delt
	  or 
	  C(x2) > C(x1) and C(x1) < C(index) and C(index) > lev2 
	then 
	  lev = C(x1)--*(1-delt)
	  prev = lev        
	else  	
	  if 
	    C(x2) < C(x1) and C(x1) > C(index) and C(index) < lev and C(x1) - C(index) > C(index)*delt
	    or
	    C(x2) < C(x1) and C(x1) > C(index) and C(index) < lev2 
	  then 
	    lev = C(x1)--*(1+delt)
	    prev = lev
	  else
        lev = lev2  
	  end		
    end	

	if 
	  C(x1) > C(x2) and ( lev < C(index) or prev == C(x2) )
	then 
	  lev = C(x2)--*(1+delt)
	  prev = lev
	end
	
	if
	  C(x1) < C(x2) and ( lev > C(index) or prev == C(x2) )
	then 
	  lev = C(x2)--*(1-delt)
	  prev = lev
	end	
	
    if C(x1) < C(x2) and ( lev < C(index) or prev == C(x1) )
	then         	  
	  lev = C(x1)
	  prev = lev
    end
	  
    if C(x1) > C(x2) and ( lev > C(index) or prev == C(x1) ) 
	then         	  
	  lev = C(x1)
	  prev = lev       		
	end
	 --]] 

	
  end   
  
  return  lev
 
  
end



Активы для разных типов рецессии

В прошлом посте я предположил, что снижение ставки ФРС подтвердило переключение рынка из стадии пика в стадию рецессии.
В этом попробую выбрать подходящие инвестиционные инструменты для различных её типов.

Вероятные сценарии развития экономики можно представить в виде вот такой матрицы:
Активы для разных типов рецессии
Международный банк прогнозирует замедление экономики. А это и называется рецессией.

Есть два типа рецессии:

  • Может сопровождаться инфляцией — стагфляция 70-х
  • А может нет -  дефляционные кризисы 2000 и 2008 гг. 
  • Или даже проходить сразу обе стадии: сперва дефляционный шок, а затем инфляция (Великая депрессия 1929-39 гг)


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

Семь типов тильта

 Семь типов тильта

Семь типов тильта по классификации Джареда Тендлера.

Тильт и причины сваливания в это состояние по классификации Джареда Тандлера бывают семи базовых типов.
Конечно, у каждого из попадавших в это состояние, есть свои нюансы и особенности, но так или иначе всегда есть преобладающая причина (форма), по которой тот или иной человек сваливается в состояние измененного сознания. 
Знание своего типа тильта дают возможность подойти к решению проблемы, поскольку человек будет знать, какой ситуации ему следует опасаться и избегать.

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

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

Упрощенный алгоритм индикатора 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
Новый дизайн