Избранное трейдера wertiks
Я страшно злюсь на инвесторов. Еще злюсь на бухгалтеров. Из книжки в книжку, из статьи в статью гуляют определения, при виде которых простой смертный начинает хлопать глазами. Его мозг перестает воспринимать информацию.
Неужели так сложно объяснить простыми словами то, что лежит на поверхности? Давайте попробуем разобраться.
Представьте, если вы вдруг захотите купить какой-нибудь маленький бизнес. Салон красоты, палатку с шаурмой, ресторан. Что угодно. Какие вопросы вы будете задавать продавцу:
Всем привет.
Все кто давно пользуется терминалом Квик – знают, что со временем он начинает «подтормаживать», долго загружаться, медленно переключаться между вкладками, а в особо тяжёлых случаях проводить заявки с задержкой. А это уже чревато потерей реальных денег….
В этой статье мы рассмотрим простые действия для ускорения работы Квика, которые нужно проводить регулярно, как сервисное обслуживание в автомобиле. А чтобы был спортивный интерес – проведем замер скорости загрузки терминала.
Поехали!
Итак – включаем секундомер и делаем первоначальные замеры:
Результат времени загрузки до появления окна загрузить новую версию
1 минута 21 секунда.
Ну что ж…. За работу:
1-е что мы сделаем удалим лог файл, который больше всего влияет на загрузку. Переходим в папку с Квиком
Российские брокеры не являются налоговыми агентами по доходам, полученным от дивидендов, купленных на Санкт-петербургской бирже (БКС, Открытие, например). К примеру, у меня были акции NVIDIA, по которым я получил в 2019 году дивиденды. Помимо этого, часть акций я продал, зафиксировав прибыль от курсовой разницы. Налог на прибыль от изменения курсовой разницы рассчитал и уплатил мой брокер, а вот по полученным дивидендам – нет. Поэтому обязанность по уплате налога ложится на плечи инвесторов. До 30 апреля 2020 года следует подать налоговую декларацию и до 15 июля заплатить рассчитанный налог. Как это пошагово сделать будет рассказано в этом посте.
Для удобства Вы можете читать наши статьи в Telegram «ИнвестГазета»
Сначала нужно запросить у вашего брокера брокерский отчет за тот период, когда были получены дивиденды. Это должен быть скан документа с синей печатью (думаю это стандартная процедура для брокеров и они знают, какие подтверждающие документы предоставлять).
Текущий импульс роста с 23 марта самый сильный с мая 1933 года, а закрытие недели было самым мощным с 1938 года, т.е. почти никто из ныне живущих в мире не видел ничего подобного в осознанном состоянии. Как так вышло?
На самом деле весело, интересно и даже смешно (при условии, что вас нашпиговали седативными средствами и наркотой чуть менее, чем полностью и у вас полностью атрофировалось то, что принято называть совестью) наблюдать за тем, как рушится этот мир, как все то, к чему человечество привыкло исчезает. Весело и забавно смотреть, как миллионы людей по всему миру теряют работу и средства к существованию с полным истощением потребительских и корпоративных сбережений, как накаляется потенциал голодных бунтов, как бизнесы с вековой историей встают на грань банкротства, развертывая каскад дефолтов по всем уровням, как заводы и сектор услуг по всей планете остановлен, цепочки поставок разрушаются, а у правительств практически всех стран мира отсутствует запас прочности и возможности для демпфирования деструктивных потенциалов. В конце концов забавно смотреть за смертями в прямом эфире, самое настоящее реалити шоу! Больше крови, больше трупов, больше разрушений! Как же далеко они зашли в своем идиотизме?!
К черту перспективы дивидендов и байбеков.
После всех вычислений, приведенных в этой и этой публикациях, можно углубиться в статистический анализ и рассмотреть метод наименьших квадратов. Для этой цели используется библиотека statsmodels, которая позволяет пользователям исследовать данные, оценивать статистические модели и выполнять статистические тесты. За основу были взяты эта статья и эта статья. Само описание используемой функции на английском доступно по следующей ссылке.
Сначала немного теории:
О линейной регрессии
Линейная регрессия используется в качестве прогнозирующей модели, когда предполагается линейная зависимость между зависимой переменной (переменная, которую мы пытаемся предсказать) и независимой переменной (переменная и/или переменные, используемые для предсказания).
TICER = "SBER"; CLASS_CODE = "TQBR"; FilePath = getScriptPath() .. "\\export.txt";--путь к файлу save = false;--сохранять данные в файл если false нет, true да f = nil; stopped = false; t_id = nil H = -1; M = -1; VSELL = 0; VBUY = 0; CDelta = 0; CountTrans = 0; PriceTrans = 0.0; t = ""; function OnInit() CountTrans = 0; if save then f = io.open(FilePath,"w"); end CreateTable(); end function main() while not stopped do if IsWindowClosed(t_id) then stopped = true; end sleep(10); end end function CreateTable() t_id = AllocTable(); AddColumn(t_id, 0, "Время", true, QTABLE_STRING_TYPE, 10); AddColumn(t_id, 1, "BUY", true, QTABLE_INT_TYPE, 10); AddColumn(t_id, 2, "SELL", true, QTABLE_INT_TYPE, 10); AddColumn(t_id, 3, "Дельта V", true, QTABLE_INT_TYPE, 10); AddColumn(t_id, 4, "AVG Цена", true, QTABLE_DOUBLE_TYPE, 15); AddColumn(t_id, 5, "Накопленная Дельта", true, QTABLE_INT_TYPE, 15); AddColumn(t_id, 6, "Кол-во сделок", true, QTABLE_DOUBLE_TYPE, 12); tab = CreateWindow(t_id); local NAME = tostring(getParamEx(CLASS_CODE,TICER,"LONGNAME").param_image); SetWindowCaption(t_id, TICER.." ("..NAME..") Баланс покупок/продаж"); SetTableNotificationCallback(t_id, EventCallBack); end function Calc(alltrade) if bit.test(alltrade.flags, 0) then VSELL = VSELL+alltrade.qty; --Продажа else VBUY = VBUY+alltrade.qty; end CountTrans = CountTrans+1; PriceTrans = PriceTrans+alltrade.price; end function OnAllTrade(alltrade) if alltrade.sec_code == TICER then local Rows, Col = GetTableSize(t_id); if H==-1 or H~= alltrade.datetime.hour then H = alltrade.datetime.hour; M = alltrade.datetime.min; t = tostring(alltrade.datetime.hour)..":"..tostring(alltrade.datetime.min); end if M==alltrade.datetime.min then Calc(alltrade); else M=alltrade.datetime.min; InsertRow(t_id, -1); local Delta = VBUY-VSELL; Price = PriceTrans/CountTrans; SetCell(t_id, Rows, 6, tostring(CountTrans)); SetCell(t_id, Rows, 0, t); SetCell(t_id, Rows, 1, tostring(VBUY)); SetCell(t_id, Rows, 2, tostring(VSELL)); SetCell(t_id, Rows, 3, tostring(Delta)); local SEC_SCALE = tostring(getParamEx(CLASS_CODE,TICER,"SEC_SCALE").param_value); SEC_SCALE = string.format("%.0f",SEC_SCALE); SetCell(t_id, Rows, 4, string.format("%."..SEC_SCALE.."f", tostring(Price))); if Rows>=2 then local OldPrice = tonumber(GetCell(t_id,Rows-1,4).image); if OldPrice>Price then Red(Rows,4); else Green(Rows,4); end CDelta = tonumber(GetCell(t_id,Rows-1,5).image); CDelta = CDelta + Delta; else CDelta = Delta; end SetCell(t_id, Rows, 5, tostring(CDelta)); if Delta<0 then Red(Rows,3); end if Delta>0 then Green(Rows,3); end if CDelta<0 then Red(Rows,5); end if CDelta>0 then Green(Rows,5); end if save then local Str = tostring(H)..";"..tostring(M)..";"..tostring(VBUY)..";"..tostring(VSELL)..";" ..tostring(Delta)..";"..tostring(Price)..";"..tostring(CDelta); Str=Str.."\n"; SaveFile(Str); end t = tostring(alltrade.datetime.hour)..":"..tostring(alltrade.datetime.min); VBUY = 0;VSELL = 0; PriceTrans = 0; CountTrans = 0; Calc(alltrade); end end --if alltrade.sec_code == TICER then end function SaveFile(Str) if f ~= nil then f:write(Str); f:flush(); end end function Red(row,col) SetColor(t_id, row, col, RGB(255,0,0), RGB(0,0,0), RGB(255,0,0), RGB(0,0,0)); end function Yellow(row,col) SetColor(t_id, row, col, RGB(240,240,0), RGB(0,0,0), RGB(240,240,0), RGB(0,0,0)); end function Green(row,col) SetColor(t_id, row, col, RGB(0,200,0), RGB(0,0,0), RGB(0,200,0), RGB(0,0,0)); end function EventCallBack(t_id, msg, par1, par2) if msg==QTABLE_CLOSE then OnStop(); end; end function OnStop(s) if f ~= nil then f:close(); end if t_id ~= nil then DestroyTable (t_id); end; stopped = true; end