Избранное трейдера Чужой
А в 2020 году их было 5..
Привет! Я решил актуализировать прошлогоднее видео по налоговым льготам для частного инвестора и сразу обнаружил плохую новость:
В 2020 году мы не платили налог по купонам с облигаций (ОФЗ, муниципальных и даже некоторых корпоративных). А в 2021 году этой налоговой льготы уже нет — и налог придется платить, 13%.
Так что -1 льгота… А вот, что осталось:
1. ИИС (Индивидуальный Инвестиционный Счет).
ИИС — главная налоговая льгота для инвесторов в России. Если у вас до сих пор не открыт ИИС счёт — обязательно откройте его прямо сейчас (можно по моей реферальной ссылке — вы и я получим бонусы): можете не класть на него деньги, а срок для получения льготы у вас при этом будет идти.
Издержки – то, что вы платите брокеру за покупку/продажу активов и их учет, на них повлиять возможно только путем выбора брокера с оптимальным для вас тарифом.
Мы хотим, чтобы нам объясняли так, чтобы было понятно. Когда видишь формулу и формулировку дюрации в википедии, становится совсем непонятно.
Дюрация — средневзвешенный срок потока платежей, причём весами являются дисконтированные стоимости платежей.
Здесь периодически возникают статьи про применение нейронок в трейдинге.
Я решил поделиться примером того, как в одном пайплайне (единая структура программного кода) можно построить, обучить и протестировать нейронку в торговом алгоритме.
Статья будет более полезна и понятна тем, кто имеет хоть небольшой опыт работы с Python.
Итак, наша задача проверить, есть ли вообще надежда на успешное применение нейронных сетей в трейдинге, проверить гипотезу на простом алгоритме, понять, как можно в случае успеха перенести все на боевую среду (реальный торговый робот), и желательно, продемонстрировать все это понятно и доходчиво.
Чтобы в конце концов сделать вывод о перспективности применения нейронок, будем соревноваться с индексом РТС.
Сразу сделаю дисклеймер, все рассматриваемые и полученные в статье результаты являются лишь простым примером, и применять их на реальных деньгах не рекомендую. И я не буду давать теорию по нейронным сетям и работе с ними. Всё это находится/читается/выучивается.
Умение правильно читать финансовую отчетность компаний — очень полезный навык для инвестора.
В этой статье разберем ключевые моменты, ошибки и нюансы при чтении бухгалтерских и финансовых отчетов компаний.
Какие бывают финансовые отчеты?Финансовые отчеты можно классифицировать по:
Здесь название говорит само за себя. Квартальный финансовые отчет содержит промежуточные данные, например только за 2 квартал текущего года, а годовой — данные за весь год.
В квартальных отчетах также часто присутствуют данные за весь период с начала года. Например, в отчете за 3 квартал, будут данные за 9 месяцев с начала года:
из квартального отчета компании Лукойл🎣 Знаете притчу про дровосеков? Поспорил молодой дровосек со старым кто больше деревьев повалит за день. И вот молодой принялся рубить деревья изо всех сил. Как устанет, присядет отдыхать, и не слышит как старый рубит. Один раз, второй, третий… седьмой. На восьмой раз сел и думает: «Ну как старику за мной угнаться, если я со всей энергией рублю, и он отдыхает столько же как и я. Он то точно старее и слебее меня — проиграет». Приходит вечером к старику проверять и в изумлении замечает, что тот почти в двое больше дров нарубил. Не понимая как это возможно он спрашивает у старика:" Я рубил не останавливаясь, а отдыхал только когда сильно уставал, как тебе это удалось?!". На что опытный и мудрый лесоруб отвечал:«Я очень часто останавливался для того, что бы наточить свой топор».
😎 Кстати, вспоминается книга Тони Роббинса, который говорит в ней, что одни из самых успешных людей в своей профессии, это те, кто большее количество времени не выполняет свою работу а обучается и оттачивает свои навыки. Так вот — об этой книге я узнал от друга, а потом еще и прочитал в одной интересной статье: https://interesno.co/education/e2aa3d00c0a8
local stopped game = { cell = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}, best = 0, -- key = nil, -- t = nil, colors = { [0] = QTABLE_DEFAULT_COLOR, [2] = RGB(248,248,255), [4] = RGB(255,239,213), [8] = RGB(255,222,173), [8] = RGB(255,218,185), [16] = RGB(205,92,92), [32] = RGB(255,69,0), [64] = RGB(238,238,0), [128] = RGB(238,118,33), [256] = RGB(255,160,122), [512] = RGB(255,0,0), [1028]= RGB(238,18,137), [2048]= RGB(139,0,0) }, create_table = function(self) self.t = AllocTable() for i = 1,4 do AddColumn(self.t, i, "", true, QTABLE_INT_TYPE, 10) end CreateWindow(self.t) SetWindowPos(self.t,100,100,300,130) for i = 1,4 do InsertRow(self.t,i) end SetTableNotificationCallback(self.t, function(_t, msg, _p, key) if msg == QTABLE_VKEY then self.key = key elseif msg == QTABLE_CLOSE then stopped = true end end) SetWindowCaption(self.t, "2048 game by www.bot4sale.ru") end, draw = function(self) local cell = self.cell for row=1,4 do for column=1,4 do local value = cell[(row-1)*4 + column] SetCell(self.t,row,column,value==0 and "" or tostring(value)) SetColor(self.t,row,column,game.colors[value],0,game.colors[value],0) end end end, incr = function(self) local t,open = self.cell,{} for i=1,16 do if t[i]==0 then open[#open+1]=i end end t[open[math.random(#open)]] = math.random()<0.1 and 4 or 2 end, pack = function(self,ofr,oto,ost,ifr,ito,ist) local t = self.cell for outer=ofr,oto,ost do local skip = 0 for inner=ifr,ito,ist do local i = outer+inner if t[i]==0 then skip=skip+1 else if skip>0 then t[i-skip*ist],t[i],self.diff = t[i],0,true end end end end end, comb = function(self,ofr,oto,ost,ifr,ito,ist) local t = self.cell for outer=ofr,oto,ost do for inner=ifr,ito-ist,ist do local i,j = outer+inner,outer+inner+ist if t[i]>0 and t[i]==t[j] then t[i],t[j],self.diff,self.best = t[i]*2,0,true,math.max(self.best,t[i]*2) end end end end, move = function(self,dir) local loopdata = { {0,12,4,1,4,1}, {0,12,4,4,1,-1}, {1,4,1,0,12,4}, {1,4,1,12,0,-4} } local ofr,oto,ost,ifr,ito,ist = table.unpack(loopdata[dir]) self:pack(ofr,oto,ost,ifr,ito,ist) self:comb(ofr,oto,ost,ifr,ito,ist) self:pack(ofr,oto,ost,ifr,ito,ist) end, full = function(self) local t = self.cell for r=0,12,4 do for c=1,4 do local i,v = r+c,t[r+c] if (v==0) or (c>1 and t[i-1]==v) or (c<4 and t[i+1]==v) or (r>0 and t[i-4]==v) or (r<12 and t[i+4]==v) then return false end end end return true end, play = function(self) math.randomseed(os.time()) self:incr() self:incr() while not stopped do self:draw() if self.best == 2048 then message("Поздравляю!\n\nwww.bot4sale.ru") break end if self:full() then message("Game Over!") break end self.diff = false if self.key==0x25 then -- Left self:move(1) elseif self.key==0x27 then -- Right self:move(2) elseif self.key==0x26 then -- Up self:move(3) elseif self.key==0x28 then -- Down self:move(4) end self.key = nil if self.diff then self:incr() end sleep(100) end end, rules = function() message("Правила игры:\n\nВ каждом раунде появляется плитка номинала «2» или «4». Нажатием стрелки игрок может скинуть все плитки игрового поля в одну из 4 сторон. Если при сбрасывании две плитки одного номинала «налетают» одна на другую, то они превращаются в одну, номинал которой равен сумме соединившихся плиток. После каждого хода на свободной секции поля появляется новая плитка номиналом «2» или «4». Если при нажатии кнопки местоположение плиток или их номинал не изменится, то ход не совершается. Если в одной строчке или в одном столбце находится более двух плиток одного номинала, то при сбрасывании они начинают соединяться с той стороны, в которую были направлены.\nЛевый столбец с номерами строк участия в игре не принимает.\n\ns_mike@rambler.ru") end } local game = game -------------------------------------------------- function main() game:create_table() game:rules() game:play() end
Оригинал здесь