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

по

Заполнение декларации по дивидендам, полученным на СПБ

Российские брокеры не являются налоговыми агентами по доходам, полученным от дивидендов, купленных на Санкт-петербургской бирже (БКС, Открытие, например). К примеру, у меня были акции NVIDIA, по которым я получил в 2019 году дивиденды. Помимо этого, часть акций я продал, зафиксировав прибыль от курсовой разницы. Налог на прибыль от изменения курсовой разницы рассчитал и уплатил мой брокер, а вот по полученным дивидендам – нет. Поэтому обязанность по уплате налога ложится на плечи инвесторов. До 30 апреля 2020 года следует подать налоговую декларацию и до 15 июля заплатить рассчитанный налог. Как это пошагово сделать будет рассказано в этом посте.

Для удобства Вы можете читать наши статьи в Telegram «ИнвестГазета»

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



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

Приобретения и инвестиции. Одинаковые правила.

Сегодня очередной урок курса «Инвестиционная стратегия Баффета». Я далек от мысли развивать ютуб канал но делаю курс в видеоформате потому-что так его продолжат смотреть. Если я опубликую текст, то после пары дней его больше никто не прочитает а видео продолжат смотреть. Как смотрят курс «Анализ финансовой отчетности», который я публиковал в далеком уже 2016 году. Для меня, как автора, это важно.



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

Telagram+Quik+Lua: сам себе мессенджер

Самый простой способ, которым я пользовался долгое время.
Нужно установить две программы: Tor browser и curl.
Первая, чтобы блокировки телеграма обходить. Вторая, чтобы сетевую команду исполнять.

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

В луа после этого всё предельно просто:
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. Каждая отправка сообщения сопровождается вызовом окна командной строки, которая всплывает поверх всех окон на одну-две секунды. Поэтому слать такие сообщения на машине, с которой вы работаете, чаще одного раза в минуту, не стоит.
2. Я таким способом пользовался больше года и считал, что он и легкий и надежный, но оказалось, что он легкий, но ненадежный. Один раз у меня случилась такая штука. Всплыло черное окошко командной строки, сообщение в телегу не ушло, окошко продолжило висеть. Видимо, какой-то сетевой сбой. И, как оказалось, квик-поток, вызвавший эту командную строку через os.execute, тоже завис и квик перестал коннектиться почему-то, потерял данные и тд. После того, как я это окошко закрыл крестиком, квик продолжил работу. Грубо говоря, из десятков тысяч запусков за год применения такого способа 1 вот такой глюк. Редко, но неприятно.

А какие вы знаете простые, легкие и надежные способы информирования без необходимости много кодить?


Отправка уведомлений из QUIK на смартфон

    • 14 апреля 2020, 18:52
    • |
    • iddqd3n
  • Еще
К торговому роботу надо было приделать какие-то уведомления, видел кучу вариантов разной степени извращённости, но ни одного адекватного и изящного. На форуме Арки вообще к решению так и не пришли :)

Для себя сделал простой выбор — Slack. Это что-то типа мессенджера («для рабочих групп», как они говорят) с простым и открытым API, без заморочек вообще. Если не нужно городить мощный функционал с форматированием, аватарками, вложениями и прочим, достаточно двух функций, реализованных через HTTP-запросы, которые можно отправлять хоть curl-ом из системной консоли. Для него полно готовых библиотек на любые ЯП, но мне они показались перегруженными в конкретно моём случае.

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

Топ лучших бесплатных скринеров для акций

Отобрал  самые лучшие и удобные сервисы для поиска акций. Среди множества торговых инструментов на американских рынках  (и не только) эти ресурсы помогут вам отобрать лучшие акции для торговли и инвестиций.

1.FINVIZ

finviz.com

Финвиз один из самых удобных инструментов для поиска акций. Он позволяет отбирать акции по заданным условиям из тысяч акций на фондовых рынках США. Множество трейдеров ежедневно используют данный сайт. Он считается самым лучшим для отбора.
Топ лучших бесплатных скринеров для акций


2. Google Finance

https://www.google.com/finance/stockscreener

Разработка от компании Гугл. Позволяет отслеживать новости по выбранным акциям и облегчает отбор путем ввода нужных критериев. 

Топ лучших бесплатных скринеров для акций



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

Большой бэктест стратегии Momentum на ММВБ. Или почему покупать акции на отскок – плохая идея?

Привет, новая неделя – новый бэктест факторной стратегии на Мосбирже. В прошлый раз была проверена стратегия 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



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

Интеграция Lua и С++ (2)


Обмен данными между Lua и Сpp осуществляется через Lua-стэк, то есть через специальным образом структурированное (по принципу Last In — First Out) пространство. 


Интеграция Lua и С++ (2)

Иллюстрация процесса добавления переменных в Cтэк (Push) и извлечения переменных из Стэка (Pop).

Иными словами, Lua стэк — это одномерный массив переменных (список, строка) с прямой (от 1 до n) индексацией.



Заполняется стэк командами lua_push (С-side) :

void lua_pushnumber (lua_State *L, lua_Number n);
const char *lua_pushstring (lua_State *L,  const char *s);

и другими. 


Новой переменной в стэке Луа длинной n автоматически присваивается индекс [n+1] или [-1], где n+1 — абсолютный индекс переменной, а -1 — индекс новой переменной относительно конца (!) стэка. 




Доступ, к переменным, соответственно осуществляется функциями lua_to (C-side) :

lua_Number lua_tonumber (lua_State *L, int index);
const char *lua_tostring (lua_State *L, int index);
где L — указатель Lua-стэка, а index — абсолютный или относительный индекс переменной в стэке.

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

Как подать налоговую декларацию для дивидендов с акций США торгуемых на бирже СПБ?

Извините, что не про коронавирус!
Как доплатить налоги с акций США биржи СПБ? И
Это очень частый вопрос на данном сайте… к сожалении очень мало информации. По умолчанию снимают 30%.0Если вы подписали форму W8-BEN, то вам надо доплатить 3%, а если не подписывали, не задекларировали, то 30%… а также есть шанс получить просьбу от налоговой заплатить ещё и 13%.
Краткая инструкция:
1. На сайте налоговой скачиваем программу декларация 2019 https://www.nalog.ru/rn77/program/5961249/:
Как подать налоговую декларацию для <a class=дивидендов с акций США торгуемых на бирже СПБ?" title="Как подать налоговую декларацию для дивидендов с акций США торгуемых на бирже СПБ?" />

2. Устанавливаем на компьютер.
3. Запускаем и приступаем к заполнению:
Как подать налоговую декларацию для дивидендов с акций США торгуемых на бирже СПБ?

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

Скрипт lua Баланс покупок/продаж

Всем привет. Переделал первоначальную версию скрипта. Исправил некоторые ошибки и немного расширил функционал. Теперь скрипт может сохранять данные в текстовый файл, который потом можно анализировать в другой программе (например exсel). Также, в отличии от первого варианта, скрипт показывает в таблице усредненную цену, по которой прошли сделки. В первом варианте отображалась цена последней сделки. И в скрипте добавлен показ накопленной дельты за все время пока скрипт работает.

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




Большой бэктест Value мультипликаторов по российским акциям 2004-2020. Консервативная среднесрочная стратегия с редкой балансировкой

Привет, в этом исследовании протестируем идею покупки недооцененных акций на нашем рынке по мультипликаторам P/E и P/BV за последние 17 лет. Достаточный срок, который включает периоды роста, спадов и нудного боковика. До 2004г. количество ликвидных бумаг было совсем скромным, а основная активность концентрировалась в РАО ЕЭС.

Обычно упоминанием низких мультипликаторов заканчивается инвестиционная идея от брокеров или телеграм каналов: «Компания Х заканчивает цикл инвестиций в новое производство, ожидаем существенного роста бизнеса. Также у компании самый низкий P/E в отрасли, хороший момент для покупки». Не проще ли просто купить 25% лучших ликвидных акций с наименьшим P/E, раз в месяц перетряхивать портфель и получать доходность выше рынка? После тестов этой стратегии на Python выводы не столь однозначны.

Моментальная оговорка – авторские инвестиционные идеи, драйверы и опыт сложно загнать в рамки механического бэктеста, поэтому они никак не учитываются в разборе. Линчевание и погружение в бизнес по Баффету эффективно проводить, когда ты управляющий крупнейшего фонда и имеешь прямой контакт с директорами компаний. Покупка кофе на остановках Газпромнефти имеет спорное влияние на инвестиционный анализ, а финансовые отчеты доступны каждому.



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

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