Избранное трейдера Роман Давыдов
При изучении годового отчёта ЦБ удивляет важная и оставшаяся малозаметной для широкой публики деталь. Руководство Центробанка прямо сообщает, что что с 2014 года (то есть с начала событий в Крыму) приняло решение завозить в режиме секретности на территорию России наличную иностранную валюту (доллары и евро). Сделано это было с единственной целью — избежать блокировки золотовалютных резервов.
«Начиная с 2014 года Банк России приступил к ускоренному наращиванию вложений в активы, которые не могут быть заблокированы (заморожены) недружественными государствами: золото, китайские юани и наличную иностранную валюту, завоз которой осуществлялся из–за границы в объемах, ограниченных возможностями логистики» (цитата по годовому отчёту ЦБ). Сколько за 8 лет было накоплено наличной массы ЦБ не сообщает. Но по разным косвенным и открытым данным речь идёт о 50–60 млрд в долларовом эквиваленте.
Это ответ на вопрос, почему руководство Центробанка не было уволено или отдано под суд, как призывали многие, после заморозки российских ЗВР. Не за что было увольнять руководство Центробанка. Также понятно теперь, почему ЦБ не отвечал публично на критику в свой адрес.
Не думал, что вернусь к этой схеме. В прошлом году впервые получил налоговый вычет по упрощенной схеме. Это очень удобно! Но как писал вчера, в моей налоговой что-то сломалось и упрощенка пока не работает. Пришлось подавать документы по-старому. Поэтому этот пост прежде всего для тех, кто оказался в такой же ситуации. К тому же обновился сайт личного кабинета налогоплательщика.
Еще одно отличие (оно же упрощение) по сравнению с прошлыми годами: сведения о вашем ИИС уже есть в налоговой системе, поэтому не нужно запрашивать документы у брокера.
Итак, по порядку.
Заходим в личный кабинет налогоплательщика. Выбираем пункт Доходы и вычеты.
Здесь будет список ваших деклараций 3НДФЛ. Если еще не подавали, то жмем кнопку Подать декларацию. Если она уже прошла проверку, то выбираем.
На этом этапе, возможно, система попросит вас сделать или перевыпустить неквалифицированную электронную подпись. Ее можно сгенерировать тут же на сайте.
=IMPORTxml(«iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities.xml?iss.meta=off&iss.only=securities&securities.columns=SECID,PREVADMITTEDQUOTE», concatenate("//row[@SECID='",A2,"']/@PREVADMITTEDQUOTE"))
Эту таблицу я впервые приводил в своем выступлении на конференции Смартлаба весной 2016-го и повторил на конференции 2018-го, акцентировав внимание на том, что хочу оформить письменно ниже
Что в таблице? В таблице доли участков RI (фьючерс на индекс РТС — прим. мое) из 10 приращений, как по отдельным периодам, так и в целом, которые я отнес к «трендам». Что я считал «трендом»? «Трендом» я считал участки, на которых среднее приращений цен (или приращений логарифмов цен, что эквивалентно) отлично от нуля и если оно больше нуля, то относим отрезок к «трендам вверх», а если меньше нуля – к «трендам вниз».
Какой использовался критерий? Обычный модифицированный критерий Стьюдента на отличие приращений логарифма(!) цены от приращений гауссовского процесса со средним нуль и дисперсией «почти равной» для 9 испытаний из 10 (нулевая гипотеза). Так как мы имеем критерий на различие сложной гипотезы против простой, то распределение статистики критерия точно известно нам только при простой гипотезе. И потому при априори выбранных границах критерия мы можем знать только вероятности попадания последовательности из 10 значений в наши «классы» при верности нулевой гипотезы.
Прошел полный месяц торгов, и мой робот показал +60%
В прошлом посте я просил у вас лайки, на данный пост я потратил 6 часов, которые мог бы потратить на что-то другое. Если вы хотите увидеть следующий пост, где мы уже будем подбирать параметры для нашей торговой системы. С вас 50 лайков :)
Сам я НЕ программист, мне нравится, когда мне рассказывают все по шагам. Бродя по интернету я нашел блог Игоря Чечета, который выложил небольшой курс по старту в backtrader: https://finlab.vip/wpm-category/btquikstart/
Я просто просмотрел все видео и повторял каждый шаг. Нет никакой магии. Просто смотрите и повторяете у себя.
Еще раз, для тех, кто читает слишком быстро: Просто смотрим видео, повторяем действия и у вас все получится.
Вначале стоит напомнить, для чего компании берут долгосрочный долг. Долгосрочный заём берётся для того, чтобы нарастить активы компании. Ведь мы знаем, что именно активы компании приносят выручку и, как следствие прибыль, кстати, последнее необязательно, если расходы компании превышают выручку.
С оставшихся денег, после выплаты всех текущих обязательств, компания может заплатить дивиденды акционерам, вывести и поделить прибыль, или нарастить собственный капитал, то есть активы.
Приветствую всех!
Сам я не программист, но решил написать скрипт, который будет выводить табличку по доходности синтетических облигаций (покупка акций/продажа фьючерса). Идея в получении дохода от контанго. Скрипт работает и табличка выводится, но через некоторое время появляется ошибка о недостатке памяти.
Подскажите, что я сделал не так?
<code>-- ©2022 by Aleksey Manin -- Таблица расчета доходности синтетической облигации -- Какие инструменты(тикеры) отслеживаем. Таблица пар тикер - площадка tickers = {GAZP = {GAZP = "TQBR", GZZ2 = "SPBFUT"}, SBER = {SBER = "TQBR", SRZ2 = "SPBFUT"}, PLZL = {PLZL = "TQBR", PZZ2 = "SPBFUT"}, GMKN = {GMKN = "TQBR", GKZ2 = "SPBFUT"}, LKOH = {LKOH = "TQBR", LKZ2 = "SPBFUT"}, AFLT = {AFLT = "TQBR", AFZ2 = "SPBFUT"}, NVTK = {NVTK = "TQBR", NKZ2 = "SPBFUT"}, YNDX = {YNDX = "TQBR", YNZ2 = "SPBFUT"}, --MOEX = {MOEX = "TQBR", MXZ2 = "SPBFUT"}, ALRS = {ALRS = "TQBR", ALZ2 = "SPBFUT"}, VTBR = {VTBR = "TQBR", VBZ2 = "SPBFUT"}, SNGS = {SNGS = "TQBR", SNZ2 = "SPBFUT"}, MGNT = {MGNT = "TQBR", MNZ2 = "SPBFUT"}, NLMK = {NLMK = "TQBR", NMZ2 = "SPBFUT"}, MTSS = {MTSS = "TQBR", MTZ2 = "SPBFUT"}, ROSN = {ROSN = "TQBR", RNZ2 = "SPBFUT"}} rows = {} -- Список строк в таблице по количеству тикеров oblig_t = AllocTable() -- Указатель на саму таблицу stopped = false -- Остановка скрипта -- Функция вызывается перед вызовом main function OnInit(path) AddColumn(oblig_t, 0, "Ticker_BA", true, QTABLE_STRING_TYPE, 8) -- "Ticker"- название первого столбца в таблице AddColumn(oblig_t, 1, "Lot_BA", true, QTABLE_INT_TYPE, 8) -- AddColumn(oblig_t, 2, "Ask_BA", true, QTABLE_DOUBLE_TYPE, 10) -- AddColumn(oblig_t, 3, "Ticker_F", true, QTABLE_STRING_TYPE, 10) -- AddColumn(oblig_t, 4, "Lot_F", true, QTABLE_INT_TYPE, 8) -- AddColumn(oblig_t, 5, "Bid_F", true, QTABLE_DOUBLE_TYPE, 10) -- AddColumn(oblig_t, 6, "Day_EXP", true, QTABLE_INT_TYPE, 10) -- AddColumn(oblig_t, 7, "Date_EXP", true, QTABLE_DATE_TYPE, 15) -- AddColumn(oblig_t, 8, "Dohod%", true, QTABLE_DOUBLE_TYPE, 10) -- AddColumn(oblig_t, 9, "Dohod", true, QTABLE_DOUBLE_TYPE, 10) -- CreateWindow(oblig_t) -- Создание окна таблицы SetWindowCaption(oblig_t, "Синтетическая облигация") -- Даем название таблице for ticker, two in pairs(tickers) do -- Перебираем пары БА-Фьючерс rows[ticker] = InsertRow(oblig_t, -1) -- Заносим тикер в список строк end end function Run() for ticker, two in pairs(tickers) do -- Перебираем пары БА-Фьючерс ask_ba = 0.0 bid_f = 0.0 lot_f = 0 for ticker_two, board in pairs(two) do -- Перебираем Тикеры внутри пары БА-Фьючерс if ticker == ticker_two then -- Если Тикер БА SetCell(oblig_t, rows[ticker], 0, ticker_two) -- Заполняем ячейке Тикера БА SetCell(oblig_t, rows[ticker], 1, -- Заполняем лот БА string.format("%u", getParamEx (board, ticker_two, "LOTSIZE").param_value)) ask_ba = getParamEx (board, ticker_two, "OFFER").param_value SetCell(oblig_t, rows[ticker], 2, string.format("%.2f", ask_ba)) -- Аск БА else -- Если Тикер фьючерса SetCell(oblig_t, rows[ticker], 3, ticker_two) -- Заполняем ячейку Тикера фьючерса lot_f = getParamEx (board, ticker_two, "LOTSIZE").param_value SetCell(oblig_t, rows[ticker], 4, string.format("%u", lot_f)) bid_f = getParamEx (board, ticker_two, "BID").param_value SetCell(oblig_t, rows[ticker], 5, string.format("%u", bid_f)) day_exp = getParamEx (board, ticker_two, "DAYS_TO_MAT_DATE").param_value SetCell(oblig_t, rows[ticker], 6, string.format("%u", day_exp)) SetCell(oblig_t, rows[ticker], 7, string.format("%u", getParamEx (board, ticker_two, "MAT_DATE").param_value)) --message('Дата:'..getParamEx (board, ticker_two, "MAT_DATE").param_type) end end sum_ba = ask_ba * lot_f --message('Тикер:'..ticker..' lot_f:'..lot_f..' sum_ba:'..sum_ba) sum_year = (bid_f - sum_ba) / day_exp * 365 percent = sum_year * 100 / sum_ba SetCell(oblig_t, rows[ticker], 8, string.format("%.2f", percent)) SetCell(oblig_t, rows[ticker], 9, string.format("%.2f", bid_f - sum_ba)) end end -- Функция вызывается перед остановкой скрипта function OnStop(signal) stopped = true end -- Функция вызывается перед закрытием квика function OnClose() stopped = true end; -- Основная функция выполнения скрипта function main() while not stopped do Run() sleep(10) end end</code>