Избранное трейдера ✔Бизне$$ Ангел ✰

по

Сэкономил – значит заработал. Сэкономил на налогах – приятно заработал.

Всем привет! 

В преддверии 2020 года, в связи с необходимостью декларировать наличие зарубежного брокерского счета, решил разобраться в вопросах налогообложения при работе с Interactive Brokers. В процессе придумал алгоритм по оптимизации налогоблагаемого дохода.

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

  1. Берете стоимость открытия позиции
  2. Берете стоимость закрытой позиции
  3. Перемножаете на курс ЦБ на дату открытия и закрытия
  4. Считаете профит
  5. Умножаете Дивиденды на курс ЦБ
  6. Умножаете всякие платежи и комиссии на курс ЦБ

В итоге получается сумма, с которой и нужно посчитать налог.

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



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

Модель Курбаковского, сглаживание и нормировка

Большое спасибо Виталию Курбаковскому, что опубликовал свою обобщенную модель ценообразования опционов (1, 2, 3, 4, 5). Давно хотелось подобную модель, с минимум параметров, физический смысл которых был бы более-менее понятен. Чтобы можно было осознано свои параметры модели задавать, а не подгоняться под рынок и слепо за ним идти. Модель, которую использует биржа (с шестью параметрами ABCDES) под такой запрос не подходит. Попробуй там пойми, все ли шесть параметров сейчас имеют справедливые и оправданные значения, или с каким-то из параметров можно поспорить. И слишком уж она гибкая. Бывало смотришь — выскочила какая-то котировка за модель, только соберешься по ней ударить, а программа параметры модели подкорректировала и услужливо изогнула кривую с учетом новой котировки. И то, что только что
выбивалось за модель, стало ей соответствовать. Пробовал еще модель китайской улыбки, там и параметров поменьше и смысл у них попонятнее, но очень уж плохо она подгоняется под рынок. И тут, на счастье, Виталий поделился своей моделью и все подробно объяснил. Реализовал у себя и оказалось — то что надо. И в рынок хорошо вписывается, и параметры имеет понятные.



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

Инструкция по заполнению декларации 3-НДФЛ для сальдирования убытка

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

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

Я специально для вас подготовила видео, в котором я рассказываю, как заполнить декларацию 3-НДФЛ (на примере 2018 года) в программе налоговой службы. Это удобно, быстро. Вы сами сможете все увидеть.

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

В видео идет описание:

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

Качайте, алгоритмы и стратегии для торговли на NYSE и NASDAQ. +список сайтов.

Представляю три стратегии и алгоритма для торговли акциями на NYSE и NASDAQ.
По сути они мало чем отличаются друг от друга. 1-й вариант наиболее полноценный. Самым оптимальным вариантом думаю будет сделать самому один свой из этих трех, взяв с каждого наиболее полезное и подходящее под себя. Так же в конце топика будет список брокеров и полезных сайтов для торговли.
Здесь весь материал выкладывать не буду, его много только по первому варианту 45 страниц. Предоставлю несколько скринов с каждого варианта.
Ссылка на весь материал внизу топика.
Качайте, алгоритмы и стратегии для торговли на NYSE и NASDAQ. +список сайтов.
Качайте, алгоритмы и стратегии для торговли на NYSE и NASDAQ. +список сайтов.

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

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

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

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

--[[
параметры: 
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



Управляемое Чубайсом "Роснано" отчиталось о 14 млрд рублей полугодового убытка. Ёжкин кот!

В I полугодии 2019 года АО «Роснано» получило чистый убыток по МСФО в 13,9 млрд рублей против 2,2 млрд рублей чистой прибыли годом ранее, следует из отчета компании. В компании полугодовые результаты назвали ожидаемыми.

«Убыток сформирован, в основном, снижением справедливой стоимости по отдельным инвестпроектам, что объясняется, в первую очередь, внешним фактором – негативным влиянием курсовых разниц. Также существенное негативное влияние на финансовый результат продолжает оказывать высокий уровень расходов по обслуживанию внешнего долга, не характерный для фондов прямых и венчурных инвестиций», – сообщили в пресс-службе АО.

Финансовый результат «Роснано» от активов, оцениваемых по справедливой стоимости через прибыль или убыток, показал отрицательную величину (-8,2 млрд рублей).

Мда. Охренеть. А какже? Как как же вот это короткое заявление всего полгода назад? (посмотрите-оно всего 15сек)
https://youtu.be/_lzr2UXAI1g



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

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

Индикатор на базе объемов и цены, показывающий точки входа и выхода

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


Settings={
Name="VDIV",
period=20,
periodma=15,
    line=                                     
                {                               		
                    {  
                        Name = "cur1",
                        Type =TYPE_LINE,
                        Width = 1,
                        Color = RGB(255,0,0)
                    },				
                    {  
                        Name = "cur2",
                        Type =TYPE_LINE,
                        Width = 1,
                        Color = RGB(0,0,0)
                    }
                }
}
--[[

-- кривая объемов
описание свойств:

period: сколько баров берутся в подсчет
weighted: =0 - обычная, =1 - взвешанная
proportional: =1- считается: volume*(close-open)/(hight-low), =0 - считается: volume*sign(close-open)

--]]

function Init()

  mas = {} 
  return 3
  
end

function OnCalculate(index)
  	

	  sumv1 = 0
	  sumv2 = 0


	if index >= Settings.period then 
	  for i=index-Settings.period+1, index do    
	    if V(i) ~= nil and C(i) ~= nil then
	      if C(i) > O(i) then
		    sumv1 = sumv1+V(i)*(C(i) - O(i))
	      else
		    sumv2 = sumv2+V(i)*(O(i) - C(i))	
	      end
        end 
	  end 
	else
	  sumv1 = nil	
	  sumv2 = nil
	end	
	
	if sumv2 ~= 0 and sumv2 ~= nil then 
	  vdiv = sumv1/sumv2
	  vdiv2 = sumv2/sumv1
	  vdiv3 = vdiv - vdiv2
	else	
	  vdiv = nil
	  vdiv2 = nil
	  vdiv3 = nil
	end
	
	mas[index] = vdiv3
	
	ma = 0
	if index >= Settings.periodma then 
	  for i=index-Settings.periodma+1, index do    
	    if mas[i] ~= nil then		  
          ma = ma + mas[i]			
		end 
	  end
	end  
    ma = ma/Settings.periodma		
	
  return ma, 0


end
  • обсудить на форуме:
  • Quik Lua

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