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

по

"Дьяволы"

Рекомендую посмотреть сериал «Дьяволы», выпущенный в 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
    • |
    • П М
  • Еще
Все знают известную гипотезу Коллатца о числовых рядах и метод численных экспериментов Монте-Карло, который применяли в Лос-Аламосе при создании ядерной бомбы США. *)

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


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

Готовимся к изменению парадигмы рынка

Ну что, думаю, уже многим стал очевидно стремление к декарбонизации экономик.

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

  1. Рубль останется долгосрочно слабой валютой, так как без слабой валюты бюджет не выдержит структурной перестройки;
  2. На одно из ведущих мест в экспорте выйдет продукция сельского хозяйства;
  3. Большой положительной переоценке акций экспортеров будет мешать неопределенность экспортного регулирования и НДПИ. Система встроенных ограничений является основным риском вложения в такие компании.
  4. Пожалуй, самым серьезным потенциалом роста прибыли обладают отечественные агропромышленные холдинги, при этом надо иметь ввиду, что они до сих пор получают дотации от государства.


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

FXCN - насколько велик риск владения?

После недавнего прозрения, когда выяснилось, что далеко не все китайские акции одинаково полезны
https://smart-lab.ru/blog/714432.php
и после того, как мои опасения подтвердил глава SEC
https://smart-lab.ru/blog/716934.php
я решил прикинуть — насколько опасно покупать акции фонда FXCN?
Ведь если глава SEC говорит о китайских акциях с Каймановых Островов, что они пустышки, то необходимо относиться к этим словам серьёзно.
Поэтому я решил посчитать долю пустышек в фонде FXCN.

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

Волатильность и ее использование в инвестициях

Добрый вечер! Как получить высокую доходность от инвестиций, используя волатильность рынка?

Волатильность — один из важнейших показателей в инвестициях, который говорит о степени изменчивости цены актива за определённый промежуток времени. Например, акция стоит 100 рублей, и её цена каждый день может колебаться в пределах ± 10 рублей — это высокая #волатильность. Если цена акции относительно стабильна каждый день — это низкая волатильность.

Обычно у крупных и известных компаний низкая волатильность — их акции колеблются в пределах 0-1% каждый день. Акции мелких растущих компаний более волатильны — их акции могут расти и падать до 50% в день и более.

Для рынка в целом тоже можно измерить волатильность. Обычно для этих целей берут индекс, например, #индексМосБиржи или #S&P500. У крупных, развитых рынков волатильность меньше, чем у развивающихся.

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



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

Фортс: проскальзывания в этом году

При моём методе торговли рыночными ордерами по стакану наиважнейшее значение имеет знание реального проскальзывания.
Эталонная цена для меня это закрытие завершенной (предыдущей) минуты. Как только минута закрылась и клоуз определился,
если есть сигнал на трейд, то у меня в стакан кидается лимитная заявка по биду-0,2% или по аску+0,2%. Ну и получается какая-то цена сделки.
От каждого трейда я измеряю проскальзывание.
Получилась любопытная статистика в этом году:
Фортс: проскальзывания в этом году
Это в одну сторону из без учета комиссий брокера и биржи.
Самый скользкий оказался брент. Однако! По нему в тестах мне надо закладываться на -0,04% с каждого трейда.
Самый нескользкий это сишка (что не неожиданно). По ней в тестах надо учитывать хотя бы -0,01% с трейда.

Такие дела.

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



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