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

по

Компании с ежемесячными дивидендами

Как и обещал рассказываю про компании с ежемесячными дивидендами.

Кстати, в комментариях меня спросили:

«Вопрос почему рынок эти дивы не видит, и не исправляет ситуацию, или мы все таки, чего-то не знаем или не видим.»

Ответ очень прост: всё внимание рынка приковано к крупным компаниям типа Apple, Tesla или Microsoft, у которого дивидендная доходность аж 0,8% годовых :)

А хорошие средние компании просто никто не знает и не покупает.

Так вот я рассказываю про именно такие малоизвестные, при этом стабильные и высокодоходные компании:

Компании с ежемесячными дивидендами

1. Pembina Pipeline Corporation (PBA)

Корпорация владеет трубопроводами, по которым транспортируются жидкие углеводороды и продукты природного газа, произведенные в Западной Канаде.

Также владеет предприятиями по сбору и переработке газа, инфраструктурой и логистикой нефти и природного газа.

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

Почему дневные изменения цен акций не следуют Распределению Парето?

Я рассчитал распределение изменений цены акций (дифф). Имеются ввиду мультипликативны изменения (diff), во сколько раз меняется цена акции за каждый день, d(t) = p(t) / p(t-1)

Насколько я знаю, распределение должно выглядеть как распределение по Power law (распределение Парето). С CDF, являющейся линией на графике log-log.

Но CDF который я получил не похож на линию на графике log-log. Почему?

Mожет ли это быть вызвано тем, что распределение имеет два хвоста вместо одного? Поскольку имеются два редких событий: редкие огромные ежедневные падения цен с d <0,7 и редкие огромные ежедневные повышения цен d > 1,4

Насколько мне известно, линейный тест распределения парето на логлог графике используется для распределений с одним хвостом. Как например распределение богатства у людей. Можно ли его также использовать для распределения с двумя хвостами?

Пример

Ежедневные цены на 4 акции за пару лет, нормированные на 1 за первый день.

Почему дневные изменения цен акций не следуют Распределению Парето?



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

Алгоритмический трейдинг для профессионалов. Е.Малыхин (отзыв о книге)

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

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

"Дьяволы"

Рекомендую посмотреть сериал «Дьяволы», выпущенный в 2020 году. Фильм привлек мое внимание своей реалистичностью. Трейдеры 
крупного банка зарабатывают на банкротстве мелких банков, что приводит к обнищанию вкладчиков. Трейдеры-хакеры меняют цифры 
на табло, «рисуют нужную цифру», нарушая закон, единицы только имеют доступ к инсайдерской информации. Также показана как некоторые 
трейдеры банка продают конкурентам или журналистам, СМИ информацию, что приводит к убыткам. Эти богачи, которые зарабатывают огромные
деньги на «крови», т.е. за счет разорения других, несчастны в личной жизни и одиноки. Стоит посмотреть этот фильм, чтобы знать эту «ку

Акции ВТБ. Как правильно считать мультипликаторы.

Всем хорошо знакомы обыкновенные акции банка ВТБ. 
Они торгуются на Мосбирже. 
Но не все помнят, если вообще знают, о том, что помимо обыкновенных, есть ещё привилегированные акции ВТБ. 
Эти акции нигде не торгуются, но их владельцы получают по ним дивиденды, которые примерно в два раза больше, чем по обыкновенным. 


( Читать дальше )
  • обсудить на форуме:
  • ВТБ

Доработанный индикатор уровней Zigzag_channel_fast


Доработанный индикатор уровней Zigzag_channel_fast
Как им пользоваться:
в папке QUIK\LuaIndicators создаем текстовый файл с содержимым кода индикатора
добавляем индикатор на график
задаем параметр чувствиельности инлдикатора — Процент
индикатор показывает уровни, в которых находится тренд
если тренд еще не сформировался, то границы канала могут расширяться по мере движения цены
если в канале уже есть локальные вершины, то при следующем походе индикатора к границе канал возмен разворот тренда или коррекции в рамках данного канала
--[[
индикатор торговой системы QUIK: 
канал на последнем зигзаге
индикатор строит канал по зигзагу, показывает слом тренда при выходе цены за границы канала
параметры:
  Procent - величина зигзага в %
  k - коэффизиент ширины канала
  Ext - =0-канал стоится по средним =1-канал стоится по экстремуму
Как им пользоваться:
в папке QUIK\LuaIndicators создаем текстовый файл с содержимым кода индикатора
добавляем индикатор на график
задаем параметр чувствиельности инлдикатора — Процент
индикатор показывает уровни, в которых находится тренд
если тренд еще не сформировался, то границы канала могут расширяться по мере движения цены
если в канале уже есть локальные вершины, то при следующем походе индикатора к границе канал возмен разворот тренда или коррекции в рамках данного канала  
--]]
Settings=              
        {                          
            Name = "Zigzag_channel_fast",   -- название индикатора
            Procent=5.0,               -- величина зигзага в % 
            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(255,0, 0)
                    }
                }
       }


function Init()

  y1 = nil
  y2 = nil
  y3 = nil  
  x1 = 1
  x2 = 1
  x3 = 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
  
  return 10
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 i>0  then 
		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	
        end		
		if i>0  then 
		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 
		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)

  if y ~= nil and x ~= 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 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  
  
   
  if index > Size()-sh then  
    --return nil, nil, nil, nil, nil, nil, nil 	 
    return v1, v2, v3, v4, v5, v6, v7, v8, v9, v10 
  end 
  
  vl = C(index)
  if vl~=nil then 
   if index == 1 then 
	y1 = vl
    y2 = vl
   else   
	  if C(index) > y1*(1+de/100) and y1 < y2 then 
	    x3 = x2
	    x2 = x1
		y3 = y2
	    y2 = y1	
	    x1 = index 
	    y1 = C(index)	
        ret = recalcline(1, index, 0)
        ret = recalcline(2, index, 0)   
        levels(x1, y1, 8, index)		
		levels(x2, y2, 9, index)
		levels(x3, y3, 10, 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 
	    x3 = x2
	    x2 = x1
		y3 = y2		
	    y2 = y1
	    x1 = index 
	    y1 = C(index)	  	
        ret = recalcline(1, index, 0)
        ret = recalcline(2, index, 0)
        levels(x1, y1, 8, index)		
		levels(x2, y2, 9, index)
		levels(x3, y3, 10, index)
	  end 	
	  if C(index) < y1 and C(index) < y2 then 
	    x1 = index 
	    y1 = C(index)	  			  
	  end 	  	  		
	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
        lpr = C(Size()-sh)
        ret = recalcline(1, index, 1)
        ret = recalcline(2, index, 1)	
		
		if y1 ~= nil then 		
		 if y1 >	lpr*0.9 and y1 < lpr*1.1 then 
		  levels(x1, y1, 8, index)
         end 
        end 		
        if y2 ~= nil then 				
		 if y2 > lpr*0.9 and y2 < lpr*1.1 then 		
		  levels(x2, y2, 9, index)
         end 
		end 
        if y3 ~= nil then 		
		 if y3 > lpr*0.9 and y3 < lpr*1.1 then 		
		  levels(x3, y3, 10, index)
         end 		  
		end 
    
    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 = 1, index do		   		
	     SetValue(i, 3, nil)	
         SetValue(i, 4, nil)	 
	     SetValue(i, 6, nil)	
         SetValue(i, 7, nil)	
		-- SetValue(i, 8, nil)	 
	   --  SetValue(i, 9, nil)	
        -- SetValue(i, 10, nil)	
       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 

end

Торгуем по динамической лесенке 06.09.21.

Депозит 1.470.000 рублей.

Лимит на 1 акцию 210.000 рублей. Лимит на 1 сделку 30.000 рублей.

Текущая сетка динамической лесенки.

Торгуем по динамической лесенке 06.09.21.

Сделки по акциям.

Полюс Long31.08 13300 2 акции.

Текущие позиции по акциям.

Газпром Long 07.07 297,0 100 акций.

ГМКН Long12.04 25200 2 акции.

Лукойл Long25.06 6800 4 акции.

Новатэк Long18.08 1815 17 акций.

Полюс Long19.04 15200 6 акций, Long31.08 13300 2 акции.

Роснефть Long15.03 580,0 50 акций.

Сбербанк Long10.08 330,0 90 акций.

Текущая лесенка по акциям.

 Торгуем по динамической лесенке 06.09.21.



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

Расслоение регионов России

Недавно Тимофей провел анализ российских компаний, на предмет эффективности использования трудовых ресурсов, такое же сравнение можно произвести и среди всех регионов и федеральных округов. Увидим какие регионы эффективнее всего вносят вклад в добавленную стоимость на душу населения. 
ВРП буду использовать за 2019 год, Росстат 2020 ещё не обзавелся и численность граждан на 1 января 2021 года (завысим показатели, ведь за это время произошло вымирание)
Основная таблица выглядит так:Расслоение регионов России
В среднем на 1 россиянина в месяц приходится 54 тысячи рублей ВРП.


По федеральным округам картина следующая:
Центр: 69929
Северо-запад: 62894
Юг: 33362
Кавказ: 19201
Приволжье: 40412
Урал: 89404
Сибирь: 44982
Дальний восток: 61253

Удивлены? Я — да. Урал оказался самым богатым федеральным округом. С Северным Кавказом удивлений нет, как и с аграрным югом (сюда можно и большую долю Приволжья приписать). 
 В чем же таится богатство Урала? В том, что Тюменская область относится к УФО. Почти 200 тысяч ВРП на человека находится именно там. Свердловская область — вторая по производству имеет лишь 49 тысяч ВРП, а Курганская и вовсе 23 тысячи.



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

Гипотеза Коллатца и метод Монте-Карло при поиске Грааля.

    • 28 августа 2021, 18:26
    • |
    • П М
  • Еще
Все знают известную гипотезу Коллатца о числовых рядах и метод численных экспериментов Монте-Карло, который применяли в Лос-Аламосе при создании ядерной бомбы США. *)

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


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

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