Избранное трейдера Value
Российские брокеры не являются налоговыми агентами по доходам, полученным от дивидендов, купленных на Санкт-петербургской бирже (БКС, Открытие, например). К примеру, у меня были акции NVIDIA, по которым я получил в 2019 году дивиденды. Помимо этого, часть акций я продал, зафиксировав прибыль от курсовой разницы. Налог на прибыль от изменения курсовой разницы рассчитал и уплатил мой брокер, а вот по полученным дивидендам – нет. Поэтому обязанность по уплате налога ложится на плечи инвесторов. До 30 апреля 2020 года следует подать налоговую декларацию и до 15 июля заплатить рассчитанный налог. Как это пошагово сделать будет рассказано в этом посте.
Для удобства Вы можете читать наши статьи в Telegram «ИнвестГазета»
Сначала нужно запросить у вашего брокера брокерский отчет за тот период, когда были получены дивиденды. Это должен быть скан документа с синей печатью (думаю это стандартная процедура для брокеров и они знают, какие подтверждающие документы предоставлять).
str='C:\\curl-7.63.0-win64-mingw\\bin\\curl.exe --socks5 127.0.0.1:9150 ' str=str..'"https://api.telegram.org/botидентификаторвашегобота/sendMessage?chat_id=айдивашегоаккаунта&text=' str=str..переменная1..": "..переменная2 str=str..'"' os.execute(str)Приведенный код будет слать в телеграм значения двух переменных, разделенных двоеточием.
Отобрал самые лучшие и удобные сервисы для поиска акций. Среди множества торговых инструментов на американских рынках (и не только) эти ресурсы помогут вам отобрать лучшие акции для торговли и инвестиций.
1.FINVIZ
Финвиз один из самых удобных инструментов для поиска акций. Он позволяет отбирать акции по заданным условиям из тысяч акций на фондовых рынках США. Множество трейдеров ежедневно используют данный сайт. Он считается самым лучшим для отбора.
2. Google Finance
https://www.google.com/finance/stockscreener
Разработка от компании Гугл. Позволяет отслеживать новости по выбранным акциям и облегчает отбор путем ввода нужных критериев.
Привет, новая неделя – новый бэктест факторной стратегии на Мосбирже. В прошлый раз была проверена стратегия Value через мультипликаторы P/E и P/BV https://smart-lab.ru/blog/609357.php В этот раз мы проверили стратегию Momentum на российских акциях.
Суть ее очень проста – покупаем акции, которые сильнее всего выросли за последние 6 месяцев и шортим акции с худшей динамикой цены за тот же период. Стратегия получается рыночно нейтральной (в теории, на самом деле — корреляция с рынком очевидна) и если у такого лонг-шорт портфеля есть положительная доходность, то мы можем сказать, что на Мосбирже есть моментум эффект.
Воспользовавшись поиском по Смартлабу можно найти несколько интересных исследований по моментуму (если что-то упущено, пожалуйста, дайте ссылку в комментариях) – «Есть ли сила в моментуме» от at6 https://smart-lab.ru/blog/596080.php и «Как обогнать индекс (пример выигрышной торговой стратегии)» от AlexChi https://smart-lab.ru/blog/499362.php
void lua_pushnumber (lua_State *L, lua_Number n);
const char *lua_pushstring (lua_State *L, const char *s);
lua_Number lua_tonumber (lua_State *L, int index);
const char *lua_tostring (lua_State *L, int index);где L — указатель Lua-стэка, а index — абсолютный или относительный индекс переменной в стэке.
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
Привет, в этом исследовании протестируем идею покупки недооцененных акций на нашем рынке по мультипликаторам P/E и P/BV за последние 17 лет. Достаточный срок, который включает периоды роста, спадов и нудного боковика. До 2004г. количество ликвидных бумаг было совсем скромным, а основная активность концентрировалась в РАО ЕЭС.
Обычно упоминанием низких мультипликаторов заканчивается инвестиционная идея от брокеров или телеграм каналов: «Компания Х заканчивает цикл инвестиций в новое производство, ожидаем существенного роста бизнеса. Также у компании самый низкий P/E в отрасли, хороший момент для покупки». Не проще ли просто купить 25% лучших ликвидных акций с наименьшим P/E, раз в месяц перетряхивать портфель и получать доходность выше рынка? После тестов этой стратегии на Python выводы не столь однозначны.
Моментальная оговорка – авторские инвестиционные идеи, драйверы и опыт сложно загнать в рамки механического бэктеста, поэтому они никак не учитываются в разборе. Линчевание и погружение в бизнес по Баффету эффективно проводить, когда ты управляющий крупнейшего фонда и имеешь прямой контакт с директорами компаний. Покупка кофе на остановках Газпромнефти имеет спорное влияние на инвестиционный анализ, а финансовые отчеты доступны каждому.