Избранное трейдера АлексейФ

по

Как увидеть Сигму?

HV, IV, RV, LV, SV – каких только волатильностей не напридумывали….

Куда опционщику смотреть? Что брать за основу? Это я еще про методы измерения не упомянул. Хотя с методами измерения HV – более-менее сошлись во мнении, что Yang-Zhang рулит. Вроде как адекватно описывает.

Не будем оспаривать, по крайней мере не в этой статье.

Я за другое – КАК ЭТО ВСЕ УВИДЕТЬ? В книжках учат наложить два графика друг на друга – HV на IV (ну или на оборот). Посмотреть кто выше – того продать, кто ниже – того купить:
Как увидеть Сигму?

Волатильность — это «медленная цена» или просто стоимость. Т.е. цена опциона зависит от базового актива, дней до экспиры и уровня страха трейдеров. Меняется она очень быстро. Чтобы оценивать именно стоимость опциона (страховки) – как раз и используется IV волатильность. Далее трейдерам нужно понять какая «медленная цена» у самого базового актива – HV волатильность. Вот для нее придумали формулы измерения исторической волатильности. Если погружаться в эти формулы, то начинают появляться новые параметры – приращение доходности, дисперсия и среднеквадратичное отклонение — сигма. Если первые два параметра это промежуточные вычисления, то сигма используется уже более активно. Господин Гаусс когда-то доказал, что в нормально распределенных случайных процессах в 68% случаев изменение величины (у нас это приращение доходности) от среднего не превысит одной сигмы. Те, кто давно в рынке скажут – рынок ни капли не нормально распределяет свои приращения и поправят Гаусса до величины 58%. Всё это интересно, занимательно, но заставляет нас ворошить знания по теорверу и статистике. А нам – трейдерам – дайте лучше кнопку «БАБЛО», а не вот это вот все…..



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

Индикатор A_zig_channel_nested

--[[
индикатор: 


--]]
Settings=              
        {                          
            Name = "A_zig_channel_nested",   -- название индикатора
          --  leng=50,               -- длина 	
			proc0=10,
			proc=2,
			delt=40,
			minh = 0.5,
            line=                                     
                {                               
  					{  
                        Name = "cur1",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(0,0,0)
                    },
					{  
                        Name = "cur2",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(0,0,0)
                    },
					{  
                        Name = "cur3",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(0,0,0)
                    },
					{  
                        Name = "cur4",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(0,0,0)
                    },
					{  
                        Name = "cur5",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(0,0,0)
                    },
					{  
                        Name = "cur6",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(255,0,0)
                    },
					{  
                        Name = "cur7",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(0,0,255)
                    },
					{  
                        Name = "cur8",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(255,0,0)
                    },
					{  
                        Name = "cur9",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(0,0,255)
                    },
					{  
                        Name = "cur10",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(255,0,0)
                    },
					{  
                        Name = "cur11",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(0,0, 255)
                    },
					{  
                        Name = "cur12",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(255,0, 0)
                    },
					{  
                        Name = "cur13",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(0,0,255)
                    },
					{  
                        Name = "cur14",
                        Type =TYPE_LINE,
                        Width = 2,
                        Color = RGB(0,0,0)
                    }
                }
       }


function Init()


  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  
  v14=nil  
  

  y_1 = nil
  y_2 = nil
  x_1 = 1
  x_2 = 1
  x_3 = 1
  
  sz = 1
  
  minh = 0

  
  return 14
end



function recalcline(num1, num2, vFrom, vTo, index, delt)
--[[
 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 --]]


  
	  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, vTo do
        y = a*i + b		
		if C(i) < y and i <= vTo then
            if y-C(i) > vminus then
              vminus = y-C(i) 			
            end				
        end		  
		if C(i) > y and i <= vTo then  
            if C(i)-y > vplus then
              vplus = C(i)-y 			
            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 	--]]	

      --  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 	--]]	

       -- end 		
	   end
	   --end
	   
		  if vTo+delt > index then
		    delt = 0
		  end 
	   
	   
	   if minh*C(vFrom)/100 < vplus + vminus then 
       for i = vFrom, vTo+delt do
	    if i <= index then 
          y = a*i + b	
          m = 0
          if C(vTo) >	C(vFrom) and y+vplus < C(vTo)+2*(C(vTo)-C(vFrom)) and y+vplus > C(vFrom)-2*(C(vTo)-C(vFrom)) then
            m = 1
		  end 	
          if C(vTo) <	C(vFrom) and y+vplus < C(vFrom)+2*(C(vFrom)-C(vTo)) and y+vplus > C(vTo)-2*(C(vFrom)-C(vTo)) then
            m = 1
		  end 
		  if i <= vTo then
			m = 1
		  end 			  
          if m == 1 then		  
	        SetValue(i, num1, y+vplus)
			Setval(i, num1, y+vplus)
		  end 
          m = 0
          if C(vTo) >	C(vFrom) and y-vminus < C(vTo)+2*(C(vTo)-C(vFrom)) and y-vminus > C(vFrom)-2*(C(vTo)-C(vFrom)) then
            m = 1
		  end 	
          if C(vTo) <	C(vFrom) and y-vminus < C(vFrom)+2*(C(vFrom)-C(vTo)) and y-vminus > C(vTo)-2*(C(vFrom)-C(vTo)) then
            m = 1
		  end 
		  if i <= vTo then
			m = 1
		  end 		  
          if m == 1 then		  
	        SetValue(i, num2, y-vminus)		  
			Setval(i, num2, y-vminus)
		  end 	
		end 
	   end 	
	  
      end
	  end 

 
 return 0
end 

function channel(curto, curfrom, index, num1, num2, num3, num4, num5, num6)

	  a1 = 0
	  a2 = 0
	  a3 = 0
	  a4 = 0
	  n = 0
	  a = 0
	  b = 0  
     for i = curfrom, curto 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 = curfrom, curto  do
        y = a*i + b		
		if y>C(i) and y-C(i) > vminus then
	        vminus = y - C(i)
        end		  
		if y<C(i) and C(i)-y > vplus then
	        vplus = C(i) - y
		end   
       end 
	   
       --[[
	    if vminus_n ~= 0 then
	     vminus = 2*vminus/vminus_n          
	    end 
	    if vplus_n ~= 0 then
	     vplus = 2*vplus/vplus_n          
	    end 
		--]]
		

  x1 = curfrom
  x2 = curfrom
  x3 = curfrom
  y1 = C(x1) 
  y2 = C(x2) 
  y3 = C(x3)   
  
  --de = 0.5*(vplus + vminus)/C(index-leng) --/(C(index-leng) - (a*(index-leng) + b - vminus))
  de = proc*C(curfrom)
  
          delt = 10
		  
		  if curto+delt > index then
		    delt = 0
		  end 

	   
	   if minh*C(curfrom)/100 < vplus + vminus then 
		  for i = curfrom, curto+delt do
		    y = a*i + b	
			
            m = 0
            if C(curto) >	C(curfrom) and y+vplus < C(curto)+2*(C(curto)-C(curfrom)) and y+vplus > C(curfrom)-2*(C(curto)-C(curfrom)) then
              m = 1
		    end 	
            if C(curto) <	C(curfrom) and y+vplus < C(curfrom)+2*(C(curfrom)-C(curto)) and y+vplus > C(curto)-2*(C(curfrom)-C(curto)) then
              m = 1
		    end 
			if i <= curto then
			  m = 1
			end 
            if m == 1 then				
		      SetValue(i, num5, y + vplus)
			  Setval(i, num5, y+ vplus)	
			end 
			--SetValue(i, 2, y)
            m = 0
            if C(curto) >	C(curfrom) and y- vminus < C(curto)+2*(C(curto)-C(curfrom)) and y- vminus > C(curfrom)-2*(C(curto)-C(curfrom)) then
              m = 1
		    end 	
            if C(curto) <	C(curfrom) and y- vminus < C(curfrom)+2*(C(curfrom)-C(curto)) and y- vminus > C(curto)-2*(C(curfrom)-C(curto)) then
              m = 1
		    end 
			if i <= curto then
			  m = 1
			end 			
            if m == 1 then		
			  SetValue(i, num6, y - vminus)				  
              Setval(i, num6, y-vminus)			  
		    end
			
    	   --vl = C(i) -- (y - vminus)
		   vl = C(i) -- (y - vminus)
    	   if i == curfrom then 
	 	     y1 = vl
     	     y2 = vl
			 y3 = vl
    	   else   
	  	    if (vl > y1+de and y1 < y2) or (x1==curfrom and vl > y1) then 
	   	     x3 = x2
	   	     y3 = y2
	   	     x2 = x1
	   	     y2 = y1	
	   	     x1 = i
	   	     y1 = vl
	  	    end 	
	 	    if vl > y1 and vl > y2 then 
	 	     x1 = i
	 	     y1 = vl	  			  
	 	    end 
	  	  		
	 	    if (vl < y1-de and y1 > y2) or (x1==curfrom and vl < y1) then 
	   	     x3 = x2
	   	     y3 = y2			
	  	     x2 = x1
	  	     y2 = y1
	   	     x1 = i
	   	     y1 = vl	  	
	 	    end 	
	 	    if vl < y1 and vl < y2 then 
	  	     x1 = i
	  	     y1 = vl	  			  
	 	    end 	  	  		
		   end 		  
		 
		  end 
		  
		  --[[
          k = (C(x1)- C(x2))/(x1- x2)  
          for i = x2, x1  do
            curv = i*k + C(x1) - x1*k  		          
	        SetValue(i, 4, curv)
          end   		  

          k = (C(x2)- C(x3))/(x2- x3)  
          for i = x3, x2  do
            curv = i*k + C(x2) - x2*k  		          
	        SetValue(i, 5, curv)
          end  		
          --]]
		  
		  recalcline(num1, num2, x2, x1, index, 20)
		  
		  recalcline(num3, num4, x3, x2, index, 20)
	   
     end 
	 end 

end 

function Setval(i, num, v)
 
 if sz == i then 
  if num == 1 then v1 = v end 
  if num == 2 then v2 = v end 
  if num == 3 then v3 = v end 
  if num == 4 then v4 = v end   
  if num == 5 then v5 = v end 
  if num == 6 then v6 = v end 
  if num == 7 then v7 = v end 
  if num == 8 then v8 = v end 
  if num == 9 then v9 = v end 
  if num == 10 then v10 = v end 
  if num == 11 then v11 = v end 
  if num == 12 then v12 = v end 
  if num == 13 then v13 = v end 
  if num == 14 then v14 = v end   
 end
 
end 

function OnCalculate(index)
  
 -- leng = Settings.leng
  minh = Settings.minh
  delt = Settings.delt
  delt2 = delt
  proc0 = Settings.proc0
  proc0 = proc0/100
  proc = Settings.proc
  proc = proc/100
  sz = Size()
  
  
  vl = C(index)
  if index == 1 then 
	y_1 = vl
    y_2 = vl
  else   
	  if C(index) > y_1*(1+proc0) and y_1 < y_2 then 
	    x_3 = x_2
	    x_2 = x_1
	    y_2 = y_1	
	    x_1 = index 
	    y_1 = C(index)	        
	  end 	
	  if C(index) > y_1 and C(index) > y_2 then 
	    x_1 = index 
	    y_1 = C(index)	  			  
	  end 
	  	  		
	  if C(index) < y_1*(1-proc0) and y_1 > y_2 then 
	    x_3 = x_2
	    x_2 = x_1
	    y_2 = y_1
	    x_1 = index 
	    y_1 = C(index)	  		
	  end 	
	  if C(index) < y_1 and C(index) < y_2 then 
	    x_1 = index 
	    y_1 = C(index)	  			  
	  end 	  	  		
	end 	
  
  if x_1 ~= index then 
    curfrom = x_1
	curto = index
  else 
    curfrom = x_2
	curto = x_1
  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, 10, curv)
      end   	
	end 
  end --]]

  
  if index == sz then 
--[[
     curto = x_1
	 curfrom = x_2
  
     k = (C(curto)- C(curfrom))/(curto- curfrom)  
     for i = curfrom, curto  do
       curv = i*k + C(curto) - curto*k  		          
	   SetValue(i, 11, curv)
     end   --]]
 
     curto = index
	 curfrom = x_1
  --[[
     k = (C(curto)- C(curfrom))/(curto- curfrom)  
     for i = curfrom, curto  do
       curv = i*k + C(curto) - curto*k  		          
	   SetValue(i, 10, curv)
     end  --]]
  
  
     channel(curto, curfrom, index, 6, 7, 8, 9, 1, 2) 
	 
     curto = x_1
	 curfrom = x_2	 
	 
	 channel(curto, curfrom, index, 10, 11, 12, 13, 3, 4) 
	 
  end   
 
    return v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11 , v12, v13, v14

end

Как торгуем в майские/коронавирусные выходные

В период майских праздников Московская и Санкт-Петербургская биржи будут работать по следующему графику:

 

1–3 мая и 9–11 мая 2020 года – выходные праздничные дни, торги в указанные дни не проводятся.

30 апреля, 6–8 мая 2020 года – рабочие дни, торги проводятся в обычном режиме.
 

 

Московская биржа

30 апреля, 6–8 мая 2020 года – торги в обычном режиме. 

4–5 мая 2020 года – торги на фондовом и срочном рынках будут проводиться в обычном режиме, на валютном – с ограничениями. 

9–11 мая 2020 года – выходные дни на всех рынках биржи.

 

Санкт-Петербургская биржа 

1, 4–8 и 11 мая 2020 года – торги в обычном режиме


Часть 3-1. Как я начал платить себе пенсию в 2032 году.

предыдущие посты:
Как я начал платить себе пенсию в 2032 году.
Часть 2. Как я начал платить себе пенсию в 2032 году.
Часть 2-1. Как я начал платить себе пенсию в 2032 году.
Часть 3-0. Как я начал платить себе пенсию в 2032 году.
     
     Вот я наконец-то и восстановился (почти). Полтора месяца назад, когда я закупил стройматериалы на дачу, и уже приехал их получать, внезапно получил ранение в виде прострела в пояснице. Как будто сам сатана тыкал в жопу вилами, приговаривая «Хорошо то как, Василий», но я не Василий, а ему было похрену.

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

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

Если уж все пишут про нефть и Мосбиржу - и я кратенько отпишусь

Executive summary:

Есть очень много людей, которые знают, как играть в футбол, как управлять государством и как построить самолет. Только очень жаль, что все они уже работают парикмахерами и таксистами. (Дж. Буш-Старший)

Если уж все пишут про нефть и Мосбиржу - и я кратенько отпишусь
… говно ты трейдер


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

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

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

Рекордные операционные показатели ФосАгро!

ФосАгро опубликовала операционные результаты за I кв. 2020 г. Компания за отчётный год увеличила производство удобрений на 8,6% по сравнению с аналогичным периодом прошлого года – до 2546,6 тыс. тонн. А вот производство апатитового и нефелинового концентратов увеличилось всего на 0,9% – до 2955 тыс. тонн. 

Рекордные операционные показатели ФосАгро!

Сильные производственные результаты обусловлены модернизацией производственных узлов на заводах в Череповце и Балаково, что в свою очередь позволило ФосАгро увеличить производство удобрений. Также компания постоянно запускает новые линии по производству удобрений, которые строила на протяжении последних нескольких лет. В частности, в этот раз, запустили линии производства сульфата аммония и серной кислоты в Череповце с проектной мощностью 300 тыс. тонн и 1 100 тыс. тонн в год соответственно. К тому же, это позволит более чем в 2 раза сократить закупки сульфата аммония, который используется, как сырьё в производстве сульфатных удобрений.



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

Эмитенты с отрицательным капиталом. Насколько плохи у них дела?

Решил вернуться к своей недавней статье
Акции с отрицательным значением цены на Мосбирже.
И провести более детальный анализ.
Вот эти эмитенты с аномалией. (ссылка и картинка из предыдущей статьи)
smart-lab.ru/q/shares_fundamental2/?field=bv_share&type=MSFO
+
Эмитенты с отрицательным капиталом. Насколько плохи у них дела?


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

На опционах можно зарабатывать такими стратегиями. В продолжение темы, затронутой коллегой FZF

Неделю назад в  smart-lab.ru/blog/614244.php  я описывал плюсы и минусы стратегии <Опционы RTS против опционов Si> и пообещал проверить ее на недельных опционах. Исполнять обещание начал 21.04.20, то есть за три дня до экспирации. Правила были такие:
— Открывать позиции при отклонении текущей волатильности опциона RTS от расчетной на 20%, закрывать при нулевом отклонении
— Открывать обе ноги как можно ближе к деньгам
— ГО по портфелю не должно превышать 2 млн руб
Все недостатки стратегии, о которых я упоминал, проявились в полной мере
— открытые позиции ушли глубоко в деньги
— расхождения волатильностей увеличивалось до 80% от расчетных
С учетом того, что у меня были свободные средства и того, что все само-собой прикроется в 18:45 четверга, я не стал париться с закрытием старых позиций и по мере расхождения волатильностей просто открывал новые <на деньгах>.
Как следствие — задействованное ГО возросло до 5 млн., максимальная просадка счета достигала 64 тыс руб. Вариационка по дням:

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

Президиум ВС РФ "карантинной" правоприменительной практике...

Вышел на днях любопытный и полезный документ
Президиум ВС РФ "карантинной" правоприменительной практике...

Скачать исходник можно тут... 
www.supcourt.ru/files/28856/


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