Избранное трейдера Laukar

по

Хорошие и плохие трейдерские привычки

👍👍👍Хорошие привычки:

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


🥵🥵🥵 Плохие привычки:

👉 не ставить стоп-лосс (не ограничивать риск)
👉 закрыв убыточную позицию тут же открывать новую (отыгрыш)
👉 спорить с рынком, покупать что сильно упало, шортить то, что сильно выросло
👉 торговать своё мнение о том, куда должен пойти рынок
👉 наращивать убыточную позицию
👉 использовать большие плечи
👉 открывать рискованные позиции перед закрытием рынка
👉 переносить позиции с большим плечом через ночь
👉 поиск информации, подтверждающий вашу позицию по рынку

Ну что, узнали свои привычки?
Хорошие и плохие трейдерские привычки

Это к сегодняшнему посту про принцип Далио №4.3.
Лучшее, что вы можете сделать для своего трейдинга — это развивать в себе хорошие привычки и избавляться от плохих.
Данный пост не относится к инвестированию. Про хорошие и плохие привычки инвесторов напишу отдельно.

Оптимизация портфеля акций. Спасает ли от кризиса в 2020.

Вот уже как скоро 70 лет пройдет, как Гарри Марковиц явил миру математическую модель оценки инвестиционного портфеля. После того, как она завоевала популярность среди портфельных менеджеров, в 1990 он получил Нобелевскую премию за вклад в экономику. Чрезвычайная популярность модели стала возможной благодаря увеличению мощности компьютеров, позволяющих за короткое время математически обработать огромный массив данных и выдать оптимальный результат.
 
С тех пор, как любой оператор ЭВМ смог управлять инвестиционным портфелем, произошла девальвация профессии инвестиционного менеджера. Однако, прежде чем делать скоропалительные выводы, стоит убедиться на практике — является ли математическая оптимизация Граалем будущей эффективности портфеля и может быть зря в инвестиционном сообществе таких управляющих свысока именуют Квантами .

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

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

Что делать в кризис? Почти что обычно...


         Спросили из одного СМИ «как правильно инвестировать и спекулировать в кризис»?

         Сначала я удивился и отмахнулся. Это странная постановка вопроса, все равно что «как правильно инвестировать осенью?», «как трейдить по пятницам?». Да также, как всегда. Универсальные правила не меняются.

         Потом подумалось, что как раз универсальные правила – в кризис выпирают особенно хорошо. Например…

         Долевые активы (акции), как ни странно, безопаснее долговых (депозиты, облигации).

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



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

Три грааля l 3 часть

    • 20 апреля 2020, 09:46
    • |
    • Larry99
  • Еще

Грааль №3. Три индейца. После некоторого тренда три последовательно
восходящие вершины образуются на одной линии. Это лучший признак
истощения тренда. Ждем первую же полновесную импульсную свечу в
обратном направлении и открываем сделку. Стоп за границей последней
вершины или еще лучше за границей импульсной свечи
Три грааля l 3 часть



Анализ акций языком, понятным даже вашей бабушке

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

Анализ акций языком, понятным даже вашей бабушке

Неужели так сложно объяснить простыми словами то, что лежит на поверхности? Давайте попробуем разобраться.

Представьте, если вы вдруг захотите купить какой-нибудь маленький бизнес. Салон красоты, палатку с шаурмой, ресторан. Что угодно. Какие вопросы вы будете задавать продавцу:

  • Вы вообще прибыльны?
  • Через сколько мои вложения окупятся?
  • На что тратите больше всего?
  • Есть ли у вас долги?


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

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

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


--[[
индикатор: 
канал на последнем зигзаге
индикатор строит канал по зигзагу, показывает слом тренда при выходе цены за границы канала
параметры:
  Procent - величина зигзага в %
  k - коэффизиент ширины канала
  Ext - =0-канал стоится по средним =1-канал стоится по экстремуму
--]]
Settings=              
        {                          
            Name = "Zigzag_channel_inc",   -- название индикатора
            Procent=5,               -- величина зигзага в % 
            k=2,			         -- коэффизиент ширины канала
            Ext=1, -- =0-канал стоится по средним =1-канал стоится по экстремуму
            shif=0,			
            line=                                     
                {                               
                    {  
                        Name = "zigzagline",
                        Type =TYPE_LINE,
                        Width = 1,
                        Color = RGB(120,90, 140)
                    },
					{  
                        Name = "cur1",
                        Type =TYPE_LINE,
                        Width = 1,
                        Color = RGB(0,0, 0)
                    },
					{  
                        Name = "cur2",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(0,200, 200)
                    },
					{  
                        Name = "cur3",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(200,200, 0)
                    },
					{  
                        Name = "cur4",
                        Type =TYPE_LINE,
                        Width = 1,
                        Color = RGB(0,0, 0)
                    },
					{  
                        Name = "cur5",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(0,0, 255)
                    },
					{  
                        Name = "cur6",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(255,0, 0)
                    },
					{  
                        Name = "cur7",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(255,0, 0)
                    },
					{  
                        Name = "cur8",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(255,0, 0)
                    },
					{  
                        Name = "cur9",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(255,0, 0)
                    },
					{  
                        Name = "cur10",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(255,0, 0)
                    },
					{  
                        Name = "cur11",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(0,0, 0)
                    },
					{  
                        Name = "cur12",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(0,0, 0)
                    }
                }
       }


function Init()

  y1 = nil
  y2 = nil
  y3 = nil  
  y4 = nil  
  x1 = 1
  x2 = 1
  x3 = 1
  x4 = 1  
  
  oldindex = 1
  
  a_01 = 0
  b_01 = 0
  a_02 = 0
  b_02 = 0
  
  vminus_01 = 0
  vplus_01 = 0  
  vminus_02 = 0
  vplus_02 = 0  
  vFrom_01 = 1
  vTo_01 = 1
  vFrom_02 = 1
  vTo_02 = 1
  
  vminus = 0
  vplus = 0
  vminus_n = 0
  vplus_n = 0  
  
  ret = 0
  
  last_ind = 1

  v1=nil
  v2=nil
  v3=nil
  v4=nil
  v5=nil
  v6=nil
  v7=nil
  v8=nil
  v9=nil
  v10=nil
  v11=nil
  v12=nil
  v13=nil  
  
  return 13
end

function recalcline(num, index, rec)

 if index == Size()-sh and rec == 0 then
   for i = 1, index do
     if m == 1 then 		
	   SetValue(i, 3, nil)
	   SetValue(i, 4, nil)
	 end
     if m == 2 then 		
	   SetValue(i, 6, nil)
	   SetValue(i, 7, nil)
	 end 	 
   end 
 end 

 if index == Size()-sh or rec == 1 then
	
  if num == 1 then 
	  vFrom = 0 --[[ --]] 
	  vTo = 0
	if x3 < x2 then 
	    vFrom = x3
	    vTo = x2
	  else
	    vFrom = x2
	    vTo = x3
	  end 
  end
  if num == 2 then 
	  vFrom = 0
	  vTo = 0
	  if x1 < x2 then 
	    vFrom = x1
	    vTo = x2
	  else
	    vFrom = x2
	    vTo = x1
	  end 
  end    
  
      if vFrom < 1 then
	    vFrom = 1
	  end 	
  
	  a1 = 0
	  a2 = 0
	  a3 = 0
	  a4 = 0
	  n = 0
	  a = 0
	  b = 0
      for i = vFrom, vTo do
        n=n+1	  
	    a1 = a1+i*C(i)
	    a2 = a2+i
	    a3 = a3+C(i)
	    a4 = a4+i*i	
	  end
	  if((n*a4 - a2*a2) ~= 0) then	  
	  
	  -- if oldindex ~= Size() then
	   a = (n*a1 - a2*a3)/(n*a4 - a2*a2)
	   b = (a3 - a*a2)/n

	   vminus = 0
	   vplus = 0
	   vminus_n = 0
	   vplus_n = 0
       for i = vFrom, index do
        y = a*i + b		
		if C(i) < y and i <= vTo then
		  if ex == 0 then 
	        vminus = vminus + y - C(i)
            vminus_n = vminus_n + 1	
		  else 
		    if i == vFrom then 
			  vminus = 0
			end
            if y-C(i) > vminus then
              vminus = y-C(i) 			
            end				
		  end 
        end		  
		if C(i) > y and i <= vTo then
		  if ex == 0 then 
	        vplus = vplus + C(i) - y
	        vplus_n = vplus_n + 1
		  else 
		    if i == vFrom then 
			  vplus = 0
			end		  
            if C(i)-y > vplus then
              vplus = C(i)-y 			
            end			
		  end 
		end 
        m = 0
        if C(vTo) >	C(vFrom) and y < C(vTo)+0.1*(C(vTo)-C(vFrom)) and y > C(vFrom)-0.1*(C(vTo)-C(vFrom)) then
          m = 1
		end 	
        if C(vTo) <	C(vFrom) and y < C(vFrom)+0.1*(C(vFrom)-C(vTo)) and y > C(vTo)-0.1*(C(vFrom)-C(vTo)) then
          m = 1
		end 
        if m == 1 then 		
	      --SetValue(i, 2, y)
        end 		
	   end
	   --end
	  
	   if ex == 0 then  
	    if vminus_n ~= 0 then
	     vminus = kk*vminus/vminus_n          
	    end 
	    if vplus_n ~= 0 then
	     vplus = kk*vplus/vplus_n          
	    end 
	   end 	  
      end

  if num == 1 then 
    a_01 = a
    b_01 = b 
    vminus_01 = vminus
    vplus_01 = vplus
	vFrom_01 = vFrom
    vTo_01 = vTo
  end
  if num == 2 then 
    a_02 = a
    b_02 = b  
    vminus_02 = vminus
    vplus_02 = vplus
	vFrom_02 = vFrom
    vTo_02 = vTo	
  end  
  return 1 
 end
 
 return 0
end 

function levels(x, y, num, index, rec)

  if y ~= nil and x ~= 1 and (index ==Size() or rec==1) then 
  
    for i = 1, index do	
	  if i >= x then 
	    SetValue(i, num, y)
      else 		
	    SetValue(i, num, nil)
	  end 
    end
	
  end 

end

function inclevels(x_1, y_1, x_2, y_2, y_3, index, num, rec)

  if y_2 ~= nil and x_2 ~= 1 and (index ==Size() or rec==1) then 
  
   need = 1
   for i = x_2+1, x_1-1 do	  
     y = ((y_2 - y_1)*i - x_1*y_2 + x_2*y_1 )/(x_2-x_1)
     if (y_1 < y_3 and C(i) < y ) or (y_1 > y_3 and C(i) > y ) then 
	   need = 0
	   break
	 end 	 
   end 
   --need = 1
   if need == 1 then 
    for i = x_2, index do	  
	
	  y = ((y_2 - y_1)*i - x_1*y_2 + x_2*y_1 )/(x_2-x_1)
	
	  if i >= x_2 then 
	    if i > x_1 and (C(Size())*1.3 < y or C(Size())*0.7 > y) then 
	      SetValue(i, num, nil)
        else 		
	      SetValue(i, num, y)
	    end 
      else 		
	    SetValue(i, num, nil)
	  end 
    end
   end 
   
  end 

end

function OnCalculate(index)
  
  de = Settings.Procent
  kk = Settings.k 
  ex = Settings.Ext
  sh = Settings.shif
  
  v1=nil
  v2=nil
  v3=nil
  v4=nil
  v5=nil
  v6=nil
  v7=nil  
  v8=nil
  v9=nil
  v10=nil  
  v11=nil  
  v12=nil    
  
  if index > Size()-sh then  
    --return nil, nil, nil, nil, nil, nil, nil 	 
    return v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11 , v12, v13  
  end 
  
  vl = C(index)
  if index == 1 then 
	y1 = vl
    y2 = vl
  else   
	  if C(index) > y1*(1+de/100) and y1 < y2 then 
	    x4 = x3
	    x3 = x2
	    x2 = x1
		y4 = y3
		y3 = y2
	    y2 = y1	
	    x1 = index 
	    y1 = C(index)	
        ret = recalcline(1, index, 0)
        ret = recalcline(2, index, 0)   
        levels(x1, y1, 8, index, 0)		
		levels(x2, y2, 9, index, 0)
		levels(x3, y3, 10, index, 0)
		levels(x4, y4, 11, index, 0)
		inclevels(x1, y1, x3, y3, y2, index, 12, 0)
		inclevels(x2, y2, x4, y4, y3, index, 13, 0)
	  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 
	    x4 = x3
	    x3 = x2
	    x2 = x1
		y4 = y3
		y3 = y2		
	    y2 = y1
	    x1 = index 
	    y1 = C(index)	  	
        ret = recalcline(1, index, 0)
        ret = recalcline(2, index, 0)
        levels(x1, y1, 8, index, 0)		
		levels(x2, y2, 9, index, 0)
		levels(x3, y3, 10, index, 0)
		levels(x4, y4, 11, index, 0)
		inclevels(x1, y1, x3, y3, y2, index, 12, 0)
		inclevels(x2, y2, x4, y4, y3, index, 13, 0)		
	  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 
  	--]] 




	if index == Size()-sh and ret == 0 then
    
        ret = recalcline(1, index, 1)
        ret = recalcline(2, index, 1)	
		
		levels(x1, y1, 8, index, 1)		
		levels(x2, y2, 9, index, 1)
		levels(x3, y3, 10, index, 1)
		levels(x4, y4, 11, index, 1)

		inclevels(x1, y1, x3, y3, y2, index, 12, 1)
		inclevels(x2, y2, x4, y4, y3, index, 13, 1)
		
    end 	
	
	
	
	if index == Size()-sh  then  --- and index ~= last_ind
		  
	   if vTo_01 - vFrom_01 > 500 then
         vFrom_01 = vTo_01-500 
       end 	  
		  
       for i = vFrom_01, index do
        y = a_01*i + b_01 + vplus_01		
        m = 0
        if C(vTo_01) >	C(vFrom_01) and y < C(vTo_01)+0.3*(C(vTo_01)-C(vFrom_01)) and y > C(vFrom_01)-0.3*(C(vTo_01)-C(vFrom_01)) then
          m = 1
		end 	
        if C(vTo_01) <	C(vFrom_01) and y < C(vFrom_01)+0.3*(C(vFrom_01)-C(vTo_01)) and y > C(vTo_01)-0.3*(C(vFrom_01)-C(vTo_01)) then
          m = 1
		end 
        if m == 1 then 		
	      SetValue(i, 3, y)
		  if i == index then 
		    v3 = y 
		  end 
        end 	
		
        y = a_01*i + b_01 - vminus_01		
        m = 0
        if C(vTo_01) >	C(vFrom_01) and y < C(vTo_01)+0.3*(C(vTo_01)-C(vFrom_01)) and y > C(vFrom_01)-0.3*(C(vTo_01)-C(vFrom_01)) then
          m = 1
		end 	
        if C(vTo_01) <	C(vFrom_01) and y < C(vFrom_01)+0.3*(C(vFrom_01)-C(vTo_01)) and y > C(vTo_01)-0.3*(C(vFrom_01)-C(vTo_01)) then
          m = 1
		end 
        if m == 1 then 		
	      SetValue(i, 4, y)
		  if i == index then 
		    v4 = y 
		  end 
        end 			
	   end	  
	    
	   if vTo_02 - vFrom_02 > 500 then
         vFrom_02 = vTo_02-500  
       end 	 
	  
       for i = vFrom_02, index do
        y = a_02*i + b_02 + vplus_02		
        m = 0
        if C(vTo_02) >	C(vFrom_02) and y < C(vTo_02)+0.1*(C(vTo_02)-C(vFrom_02)) and y > C(vFrom_02)-0.1*(C(vTo_02)-C(vFrom_02)) then
          m = 1
		end 	
        if C(vTo_02) <	C(vFrom_02) and y < C(vFrom_02)+0.1*(C(vFrom_02)-C(vTo_02)) and y > C(vTo_02)-0.1*(C(vFrom_02)-C(vTo_02)) then
          m = 1
		end 
        if m == 1 then 		
	      SetValue(i, 6, y)
		  if i == index then 
		    v6 = y 
		  end 
        end 	
		
        y = a_02*i + b_02 - vminus_02		
        m = 0
        if C(vTo_02) >	C(vFrom_02) and y < C(vTo_02)+0.1*(C(vTo_02)-C(vFrom_02)) and y > C(vFrom_02)-0.1*(C(vTo_02)-C(vFrom_02)) then
          m = 1
		end 	
        if C(vTo_02) <	C(vFrom_02) and y < C(vFrom_02)+0.1*(C(vFrom_02)-C(vTo_02)) and y > C(vTo_02)-0.1*(C(vFrom_02)-C(vTo_02)) then
          m = 1
		end 
        if m == 1 then 		
	      SetValue(i, 7, y)
		  if i == index then 
		    v7 = y 
		  end 
        end 			
	   end	
	  
	  last_ind = index 
	end 
  
 
    return v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11 , v12, v13 

end

Прогноз на пик коронавируса и начало спада в РФ

    • 16 апреля 2020, 23:51
    • |
    • П М
  • Еще

Все данные сейчас удобно суммируются ежедневно на сайте университета Джона Хопкинса
coronavirus.jhu.edu/map.html

Там слева переключение по странам, а справа внизу есть переключение графика — общее число, логарифм и число зараженных в день.
Если очень грубо, то на примере америки, италии, германии, видно что пик эпидемии в стране наступает при числе зараженных в день примерно = 0.01% от всего населения.
т.е. в США 320 млн чел населения, максимум было 35.1К в день, а 320 000 000 * 0.0001 = 32 К
в Германии 80 млн, максимум был 6.9К в день.
в Италии 60 млн, пик 6.6К

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

пик держится примерно неделю. дальше идёт спад.

для РФ получаем на пике 14К зараженных в день.
если подходить «оптимистично» (с точки зрения срока наступления пика и спада),
то удвоение числа зараженных в день происходит каждые 5-7 дней. грубо неделя.

тогда получаем что сейчас 3.4К в день заражается в РФ.
через неделю 7К
через две недели уже 14К — пик.
плюс минус 3 дня в обе стороны — будет плато, дальше спад.

Итого я думаю что через 2.5 недели в РФ начнётся спад числа зараженных в день. К 9 мая мы начнём побеждать эту заразу, как печенегов.

Терпеть осталось недолго, берегите себя и своих близких!


Почему рынки во время кризиса падают на 50%

Почему рынки во время кризиса падают на 50%


Объяснение очень простое, все дело в принудительном закрытие лонгистов торгующих на плечи.
При падении на 10% закрывают лонгистов с 10м плечом, при 30% с 3м плечом при 50% со 2м плечом.
Далее маржиналов не остается, остаются только инвесторы без плечей. А они могу сидеть в акциях до посинения.
Поэтому рынок перестает падать.
Математика в чистом виде и никакого фокуса.

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