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

по

Бэнкинг по-Русски: Банк Кольцо-Урала. Работа над ошибками...

Помнится пару лет назад на конференции смартлаба я выступал c докладом о превентивном анализе балансов банков с целью выявления потенциальных рисков

Там при разборе различных паттернов был негативно оценен баланс банка Кольцо Урала по следующими причинам:

Бэнкинг по-Русски: Банк Кольцо-Урала. Работа над ошибками...
Доля кредитов юридическим лицам, выданных без залогов с низким уровнем резервирования за счет депозитов физлиц в 2015 году, была слишком высока и угрожала банку крахом....

Совсем недавно в комменте по югре меня упрекнули :
Бэнкинг по-Русски: Банк Кольцо-Урала. Работа над ошибками...

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

Бэнкинг по-русски: У банка Югра отозвали лицензию....

Бэнкинг по-русски: У банка Югра отозвали лицензию....

Вот так....
m.vedomosti.ru/finance/news/2017/07/28/726667-yugri

------------
Информация

Об отзыве у кредитной организации «ЮГРА» лицензии на осуществление банковских операций и назначении временной администрации

 

 

Приказом Банка России от 28.07.2017 № ОД-2138 с 28.07.2017 отозвана лицензия на осуществление банковских операций у кредитной организации ПУБЛИЧНОЕ АКЦИОНЕРНОЕ ОБЩЕСТВО БАНК «ЮГРА» ПАО БАНК «ЮГРА» (рег. № 880, г. Москва).

Деятельность ПАО БАНК «ЮГРА» была ориентирована на привлечение денежных средств населения и их размещение в активы неудовлетворительного качества. При этом кредитная организация самостоятельно не создавала резервов на возможные потери, адекватных принятым рискам. Государственной корпорацией «Агентство по страхованию вкладов», на которую приказом Банка России возложены функции временной администрации по управлению кредитной организацией, проведено обследование финансового положения банка. Итогом проведенного обследования стало объективное отражение стоимости активов в отчетности кредитной организации, что привело к полной утрате ее собственных средств (капитала).



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

Седой и Гном - в ожидании бури

История выдуманная. Все совпадения случайны


Седой сидел на открытой веранде крыши офисного центра и смотрел на Кремль. Долгожданное солнышко пригревало его. Седой щурился.

— Дождь пойдет, — заметив меня сказал он и кивнул в сторону стоящего рядом лежака, — садись, полялякаем

Седой в розовой тенниске, льняных брюках и мокасах на босу ногу выглядел отдыхающим на яхте олигархом. Если бы я не прошел только что через шумящий оупенспейс, то можно было подумать, что так и есть, только вместо моря за бортом — перерытая Москва.

— Активно у тебя там, — я кивнул в сторону офиса

— Ага. Копошатся трутни. Август на носу, — и Седой замолчал

я подождал секунд тридцать и, не выдержав, спросил:

— Ты же меня не за этим пригласил?

— Держи сока. Сочный!

Седой запустил руку куда-то под столик и достал из тени кувшин с апельсиновым фрешем. Сок, наливаясь, выплюнул кусочек льда и тот, плюхнувшись в стакан, оставил на тенниске Седого небольшое пятнышко. Прямо рядом с игроком в поло.



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

Бэнкинг по-Русски: "Секвестирование валюты баланса" БКС-банка. Не так страшен черт, как его малюют....

Всем привет!
После ЮгроКазуса пару недель назад, прогнозируемого снижения рейтинга у Банка Открытие и слухов вокруг структурных проблем «Карфагена» (так неформально называют  одну группу банков, связанную с одной северокавказской республикой) взор читателей смарт-лаба небезосновательно устремился к БКС-банку.

Поводом для этого стал почти двухкратное «секвестирование» (пропорциональное снижение активов и пассивов) валюты баланса банка за июнь 2017 года.

Давайте вместе разберем почему это произошло и чем это может грозить банку и рядовому инвестору Бкс_брокера.


Для начала, хотел бы обратить внимание, что БКС-Банк ИНВЕСТИЦИОННЫЙ, а это значит что основные его активы сосредоточены в ценных бумагах и операций по кредитованию банкой под залог этих бумаг.

Бэнкинг по-Русски: "Секвестирование валюты баланса" БКС-банка. Не так страшен черт, как его малюют....

Итак, мы видим, что доля кредитов Юридическим лицам крайне мала, а кредиты физлицам настолько ничтожны, что поместились в прочие активы.


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

Код робота на LUA для QUIK

В двух словах: робот анализирует спот, выставляет лимитные и стоп-лимитные заявки по фьючерсу. Делает пересчет сигналов по выбранному тайм-фрейму, снятие выставленных заявок, запись в файл текущего состояния, ведение логов, сообщения, запрос текущей позиции и пр. Из робота удалена алгоритмика вычисления сигнала и в текущем виде скрипт будет иметь сигнал на покупку на каждом баре.

Предназначается для новичков в алготрейдинге, что-то типа болванки.

Важно: выставление заявок я закомментировал, поэтому можете смело запускать этот скрит, он не натворит ужаса по счету.

require"QL"

log = "sbrf.log"
seccode = "SRM6"
lots_in_trade = 80
accnt = ""
better = -5
chart = "sberbankxxx"
is_run = true
prev_datetime = {}
len = 100
basis = 9
k_bal = {0,1,2,3}
sell = false
buy = false
id = 0
first = true

function trade_signal(shift)
        number_of_candles = getNumCandles(chart)
        bars_temp,res,legend = getCandlesByIndex(chart,0,number_of_candles-2*len-shift,2*len)
        bars={}

        i=len
        j=2*len
        while i>=1 do
                if bars_temp[j-1].datetime.hour>=10 then
                        sk=true
                        if bars_temp[j-1].datetime.hour==18 and bars_temp[j-1].datetime.min==45 then
                                sk=false
                        end
                        if sk then
                                bars[i]=bars_temp[j-1]
                                i=i-1
                        end
                end
                j=j-1
        end

        t = len+1

        do_sell = false
        do_buy = true

        value = 0
        if do_sell then value = 1 end
        if do_buy then value = -1 end
        toLog(log,"value="..value.." on candle: "..bars[len].datetime.year.."-"..bars[len].datetime.month.."-"..bars[len].datetime.day.." "..bars[len].datetime.hour..":"..bars[len].datetime.min.."   O="..bars[len].open.." H="..bars[len].high.." L="..bars[len].low.." C="..bars[len].close.." V="..bars[len].volume)
        return value
end

function mysplit(inputstr, sep)
        if sep == nil then
                sep = "%s"
        end
        local t={} ; i=1
        for str in string.gmatch(inputstr, "([^"..sep.."]+)") do
                t[i] = str
                i = i + 1
        end
        return t
end

function OnInit(path)
        log=getScriptPath()..'\\'..log
        toLog(log,"==========OnInit: START")
        toLog(log,"==========OnInit: FINISH")
end

function OnStop()
        is_run = false
        toLog(log,"==========OnStop: script finished manually")
end

function CheckBit(flags, bit)
   -- Проверяет, что переданные аргументы являются числами
   if type(flags) ~= "number" then error("Ошибка!!! Checkbit: 1-й аргумент не число!"); end;
   if type(bit) ~= "number" then error("Ошибка!!! Checkbit: 2-й аргумент не число!"); end;
   local RevBitsStr  = ""; -- Перевернутое (задом наперед) строковое представление двоичного представления переданного десятичного числа (flags)
   local Fmod = 0; -- Остаток от деления
   local Go = true; -- Флаг работы цикла
   while Go do
      Fmod = math.fmod(flags, 2); -- Остаток от деления
      flags = math.floor(flags/2); -- Оставляет для следующей итерации цикла только целую часть от деления
      RevBitsStr = RevBitsStr ..tostring(Fmod); -- Добавляет справа остаток от деления
      if flags == 0 then Go = false; end; -- Если был последний бит, завершает цикл
   end;
   -- Возвращает значение бита
   local Result = RevBitsStr :sub(bit+1,bit+1);
   if Result == "0" then return 0;
   elseif Result == "1" then return 1;
   else return nil;
   end;
end;

function killorders(ccode,scode)
    for i=0,getNumberOf("orders")-1,1 do
        local t=getItem("orders", i)
        if t ~= nil and type(t) == "table" then
            if( t.seccode == scode and CheckBit(t.flags, 0) == 1) then
                local transaction={
                    ["TRANS_ID"]=tostring(math.random(2000000000)),
                    ["ACTION"]="KILL_ORDER",
                    ["CLASSCODE"]=ccode,
                    ["SECCODE"]=scode,
                                        ["ACCOUNT"] = accnt,
                    ["ORDER_KEY"]=tostring(t.ordernum),
                }
                                res=sendTransaction(transaction)
            end
        end
    end
end

function killstoporders(ccode,scode)
    for i=0,getNumberOf("stop_orders")-1,1 do
        local t=getItem("stop_orders", i)
        if t ~= nil and type(t) == "table" then
            if( t.seccode == scode and CheckBit(t.flags, 0) == 1) then
                local transaction={
                    ["TRANS_ID"]=tostring(math.random(2000000000)),
                    ["ACTION"]="KILL_STOP_ORDER",
                    ["CLASSCODE"]=ccode,
                    ["SECCODE"]=scode,
                                        ["ACCOUNT"] = accnt,
                    ["STOP_ORDER_KEY"]=tostring(t.ordernum),
                }
                                res=sendTransaction(transaction)
            end
        end
    end
end


function main()
        toLog(log,"==========main: START")
        while is_run do
                if isConnected() == 1 then
                        ss = getInfoParam("SERVERTIME")
                        if string.len(ss) >= 5 then
                                hh = mysplit(ss,":")
                                str=hh[1]..hh[2]
                                h = tonumber(str)
                                if (h>=1000 and h<1400) or (h>=1405 and h<1845) or (h>=1905 and h<2350) then
                                        if first then
                                                for ti = 50,2,-1 do     trade_signal(ti) end
                                                if buy and not sell then message(seccode.." Current state: green and buy",1) end
                                                if sell and not buy then message(seccode.." Current state: red and sell",1) end
                                                if buy and sell then message(seccode.." ERROR: green and red",1) end
                                                if not buy and not sell then message(seccode.." WARNING: nothing",1) end
                                                first = false
                                        end
                                        prev_candle = getPrevCandle(chart,0)
                                        if not isEqual(prev_candle.datetime,prev_datetime) then
                                                current_value = trade_signal(1)

                                                if current_value ~= 0 then
                                                        optn = "B"
                                                        if current_value==1 then optn = "S" end
                                                        curvol=0
                                                        no=getNumberOf("FUTURES_CLIENT_HOLDING")
                                                        if no>0 then
                                                                for i=0,no-1,1 do
                                                                        im=getItem("FUTURES_CLIENT_HOLDING", i)
                                                                        if im.sec_code==seccode then
                                                                        curvol=im.totalnet
                                                                        end
                                                                end
                                                        end
                                                        trvol = -current_value*lots_in_trade-curvol
                                                        if trvol ~= 0 then
                                                                killorders("SPBFUT",seccode)
                                                                killstoporders("SPBFUT",seccode)
                                                                f = io.open(getScriptPath().."\\sbrf2_pos.txt","r")
                                                                sbrf2_pos=f:read("*n")
                                                                f:close()
                                                                f = io.open(getScriptPath().."\\sbrf3_pos.txt","r")
                                                                sbrf3_pos=f:read("*n")
                                                                f:close()
                                                                pr,n,l = getCandlesByIndex ("futsber", 0, getNumCandles("futsber")-1, 1)
                                                                local trans =
                                                                {
                                                                        ["ACTION"] = "NEW_ORDER",
                                                                        ["CLASSCODE"] = "SPBFUT",
                                                                        ["SECCODE"] = seccode,
                                                                        ["ACCOUNT"] = accnt,
                                                                        ["OPERATION"] = optn,
                                                                        ["PRICE"] = toPrice(seccode,pr[0].close+current_value*better),
                                                                        ["QUANTITY"] = tostring(math.abs(curvol-sbrf2_pos-sbrf3_pos)),
                                                                        ["TRANS_ID"] = tostring(getTradeDate().month*100+getTradeDate().day+id)
                                                                }
                                                                id = id+1
                                                                --res = sendTransaction(trans)
                                                                message(seccode.." Send : " .. res, 2)
                                                                toLog(log,"Send: ".. res)
                                                                for btr=0,200,5 do
                                                                        local trans =
                                                                        {
                                                                                ["ACTION"] = "NEW_STOP_ORDER",
                                                                                ["CLASSCODE"] = "SPBFUT",
                                                                                ["SECCODE"] = seccode,
                                                                                ["ACCOUNT"] = accnt,
                                                                                ["OPERATION"] = optn,
                                                                                ["PRICE"] = toPrice(seccode,pr[0].close-current_value*btr),
                                                                                ["STOPPRICE"] = toPrice(seccode,pr[0].close-current_value*(btr+better)),
                                                                                ["QUANTITY"] = tostring(6),
                                                                                ["TRANS_ID"] = tostring(getTradeDate().month*100+getTradeDate().day+id),
                                                                                ["EXPIRY_DATE"] = "GTC"
                                                                        }
                                                                        id = id+1
                                                                        --res = sendTransaction(trans)
                                                                        message(seccode.." Send : " .. res, 2)
                                                                        toLog(log,"Send: ".. res)
                                                                end
                                                                if current_value == 1 then
                                                                        message(seccode..' RED: buy->sell',1)
                                                                        toLog(log,"RED signal")
                                                                else
                                                                        message(seccode..' GREEN: sell->buy',1)
                                                                        toLog(log,"GREEN signal")
                                                                end
                                                        else
                                                                if current_value == 1 then
                                                                        message(seccode..' RED: buy->sell',1)
                                                                        toLog(log,"RED signal, but nothing to do")
                                                                else
                                                                        message(seccode..' GREEN: sell->buy',1)
                                                                        toLog(log,"GREEN signal, but nothing to do")
                                                                end
                                                        end
                                                else
                                                        if buy and not sell then toLog(log,"Nothing to do. Current state: green and buy",1) end
                                                        if sell and not buy then toLog(log,"Nothing to do. Current state: red and sell",1) end
                                                        if buy and sell then toLog(log,"Nothing to do. ERROR: green and red",1) end
                                                        if not buy and not sell then toLog(log,"Nothing to do. WARNING: nothing",1) end
                                                end
                                                prev_datetime = prev_candle.datetime
                                        end
                                end
                        end
                end
                sleep(5*1000)
        end
        toLog(log,"==========main: FINISH")
end
  • обсудить на форуме:
  • Quik Lua

Бэнкинг по-Русски: ЮгроНовости. По мотивам свежевышедшей отчетности...

1. Банк Югра, как и предполагалась ранее, своевременно (до 04 июня) сформировал 56.6 млрд резервов, одновременно распустив около 28 млрд

2. Кредитное обязательство УралВагонЗавода перед банком Югра на сумму 4 млрд руб ПРЕКРАЩЕНО !!!

3. Озвученного г-жой Анной Орленко «Вывода средств юрлиц на 45 млрд руб в июне»  НЕ БЫЛО !!!

4. При этом, банк «сумел создать» (другой формулировки я пока не нахожу)  активов в виде акций, с последующей переоценкой в разы в течении месяца на сумму под 20 млрд:

Бэнкинг по-Русски: ЮгроНовости. По мотивам свежевышедшей отчетности...


Учитесь, блин, Трейдеры!!! ;)))



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

Бэнкинг по-Русски: "Высоколиквиды" Промсвязьбанка

После грандиозного освещения в СМИ краха банка Югра, мне отовсюду посыпался шквал  вопросов и про другие системообразующие банки.
В частности дядя Миша спрашивал про ПромсвязьБанк.

Сразу хочу отметить, что ничего похожего на «ЮгроКейс»© там нет и бежать сломя голову и выводить оттуда ни в койм случае не нужно!!

Но некоторые достойные внимания и дальнейшего наблюдения моменты все же имеются:

Бэнкинг по-Русски: "Высоколиквиды" Промсвязьбанка

Если мы сравним структуру активов сейчас и пару лет назад, то легко заметить, что доля кредитов ЮЛ существенно сократилась, а доля Высоколиквидных активов (Коррсчета и касса) в РАЗЫ выросла.

Формально это должно быть очень хорошо, можно было б сказать что банк создает подушку ликвидности и т.д.

Но как на самом деле ???

При более глубоком изучении, видно, что 120 млрд из этого «высоколиквида», это стабильный, по сути неснижаемый, остаток на НОСТРО счете в рублях в каком-то российском банке, не раскрывающем публичную отчетность.  




Бэнкинг по-Русски: "Высоколиквиды" Промсвязьбанка

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

Бэнкинг по-Русски: Есть ли 75 млрдная тетрадка в Югре??? Факты и слухи, котлеты и мухи....

Аккурат сегодня утречком, в некоторых СМИ появились громкие заявления о вероятных забалансовых вкладах в Банке Югра в обьеме до 75 млрд руб

Бэнкинг по-Русски: Есть ли 75 млрдная тетрадка в Югре??? Факты и слухи, котлеты и мухи....
При всем моем специфическом и скептическом отношении к хозяйственной деятельности данного финансового учреждения, хотел бы отметить, что данная информация не совсем корректно изложена....

Вчера около 13 часов утра прошла следующая информация из надежного источника:
----------

[10.07, 12:49] хххх: Выборочная проверка в югре показала наличие неучтенных вкладов
[10.07, 13:05] хххх: Сказали так: один нестандарный вклад последние 3 отчетных даты формировался и отражался в системах параллельного учета
-------------------
Писал и я тут об этом

Бэнкинг по-Русски: Есть ли 75 млрдная тетрадка в Югре??? Факты и слухи, котлеты и мухи....

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

Задачка. Почти жизненная, и, может быть, кому нибудь полезная.

Базовый актив 99350. Стоимость опционов на него в моменте: call 100 000 — 430,call 97500 — 2040, put 100 000 — 1080, put 97500 — 200. Вам известно про рынок только одно — до экспирации цена БА обязательно отклонится от текущей на 2000. Можно купить 1000 штук любых опционов и использовать любое количество БА. Как выглядит оптимальная позиция при этих условиях? Как выглядит формальное решение при произвольных ценах БА, опционов, уровнях страйков? Где ошибка в условии? Ставка, дивиденды, комиссии — все по нулям

Депозиты и облигации, риски.

Хотелось бы обсудить риски присущие для депозитов и вложения в облигации.
Риски депозитов понятны и на первый взгляд очевидны. Это банкротство банка и возможность их потерять. Про застрахованные 1.4 млн рублей все все уже знают, все, что свыше можно и не вернуть. На этом вроде все риски и заканчиваются. Или только начинаются. Следующий риск это попасть на тетрадочные вклады. И если раньше АСВ и ЦБ стояли на вашей стороне, то в последнее время не очень. Следующий не очевидный риск, но у нас легко реализуемый. А именно, ЦБ и АСВ может, со временем ввести такую практику, как вы положили деньги на депозит в банк, заведомо зная, что он в плохом состоянии и есть риск его банкротства или отзыва лицензии. Тут поле для фантазий огромное. Но в нашей стране возможно все и даже, на первый взгляд невозможное.
Облигации. Тут для частного инвестора все сложнее. Казалось бы выбери эмитента, выпуск, срок и доходность. И все. Практика показывает, что это может только начало ваших бед. Первая беда доходность которую транслирует биржа не учитывает многих нюансов. Как то комиссия биржи, брокера. Которая может легко съесть до 2% в доходности. Кроме того, биржа может доходность по разному считать. Вы можете не подать в оферту, а доходность к ней расчситана, а после оферты эмитентом может быть установлен 0% по купону. И вы год-два вообще ничего получать не будете. Далее это налогообложение. Да сейчас выпуски зарегистрированные в 2017 году и на 3 года купоны освобождаются от НДФЛ (я о корпоратах). Но норма эта начнет действовать только с 2018 года, т.е. с выплат в следующем году. Далее, многие новички делают глупую ошибку, видя в терминале доходность, вычитая из нее комиссии, все равно получается доходность выше депозита. Но опять это не так. При покупки цена и НКД составляют ваши затраты на покупку. А вот выплата купона, это отдельная песня, котрая к вашим затратам никак не относиться, у вас при выплате НКД удержат 13% НДФЛ. Например условный. Вы покупаете облигацию за 100% (1000 рублей) на вторичке, платите 30 рублей НКД. Так вот ваши траты будут 1030 рублей. НКД выплачивается 60 рублей. Вы считаете так 1000 я заплатил и 1000 я получу от погашения. А вот НКД 60-30=30. Вот с них то я НДФЛ и заплачу. Не так у вас будет убыток 1000-1030. А НДФЛ вы заплатите с 60. Дальше можете сами посчитать. Следующий риск. Многие сравнивают ОФЗ и ОФЗ для населения. Тут как говорится вход рубль выход два. Если держать до погашения то вроде все нормально. Но если ситуация на рынках изменится вы сможете их продать и возможно гораздо ниже номинала. Да у этих ОФЗ-Н есть преимущество. Так есть такое понятие собрания облигационеров. Что это за песня и с чем ее приправляют. Это когда эмитент допускает дефолт, то происходит реструктуризации и все прочее и тому подобное. Так вот собираются владельцы этого выпуска и думают, что делать.И напридумывали они все простить, уменьшить ставку до 0, или часть списать, а остальное на 30 лет погашения. И вот решение 75% владельцев, обязательны для всех остальных 25%. Крупнейшими владельцами выпуска, как правило являются банки, инвесткомпании, брокера, НПФ ну и другие. Люди которые их покупали уже не работают или к моменту погашения работать там не будут и им надо сохранить лицо здесь и сейчас. А вот мелкие владельцы будут плясать под их музыку.  Все ваши деньги растаяли. Вот ОФЗ-Н в этом отношении лучше обычного ОФЗ. Так как распределены между мелкими физ лицами которые вряд ли одобрят такую реструктуризацию. Если раньше каждый сам за себя, и у меня был опыт судебный с эмитентом один на один, и он по суду мне все выплатил, то  сейчас не факт, что я вернул бы свои деньги. Далее это суббординированные облигации. Тут риск один, при проблемах в банке вы получаете в лучшем случае его акции в худшем ваши деньги улетучиваются. Пример Траст. Далее реструктуризация обычных ОФЗ для физиков. Если кто помнит 1998 когда ОФЗ для физиков погашались в срок, понятно что курс улетел, путем перевода их в ВЭБ. То юрики попали на реновацию. 

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

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