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

по

Калькулятор цены/доходности облигаций

Сегодня на сайте Московской Биржи в разделе Рынок облигаций www.moex.com/ru/bondization/) стала доступна страница Калькулятор цены/доходности (https://www.moex.com/ru/bondization/calc. На этой странице пользователь сможет подсчитать доходность по цене и наоборот, также будет подсчитано множество других параметров для облигации.
На сайте Московской Биржи (https://www.moex.com/) страницу можно найти по пути:
-> Фондовый рынок
-> Рынок облигаций (https://www.moex.com/ru/bondization/)
-> Калькулятор цены/доходности (https://www.moex.com/ru/bondization/calc)


Инвестирование. Итоги 4,5 лет

Продолжаю публиковать результаты своего инвестирования — на очереди отчет за 2017 год.

С июля 2013 денежные средства в портфель не вносились, происходило только реинвестирование от поступивших дивидендов, гашения и купонных выплат по облигациям.

Изменение стоимости портфеля по годам, от даты начала инвестирования:

Июль 2013 года – 100%

31 декабря 2013 года + 6,82%

31 декабря 2014 года + 7,92%

31 декабря 2015 года + 66,59%

31 декабря 2016 года + 90,29%

30 декабря 2017 года +118,22%


Поступление денежных средств (НДФЛ удержан) от дивидендов, гашения и купонных выплат по облигациям, по годам:

2013 год – 4948 рублей

2014 год – 64183 рублей

2015 год – 90030 рублей

2016 год – 133967 рублей

2017 год – 160851 рублей

Доходность портфеля за 2017 год составила около 8,78%

 

На сегодняшний день портфель состоит из следующих акций и облигаций, в процентных долях:

Инвестирование. Итоги 4,5 лет
Доля акции – 60,5%

Доля облигаций – 39,5%


БКС для любителей корпоративных Облигаций, хорошая табличка

    • 13 декабря 2017, 23:24
    • |
    • Kapral
  • Еще
bcs-express.ru/novosti-i-analitika/obzor-korporativnykh-obligatsii-po-kotorym-ne-nuzhno-platit-ndfl

прошу обратить внимание, что обзор БКС написан 
21.08.2017

Облигации, доход по которым освобожден от НДФЛ с 1-го января 2018 года

БКС для любителей корпоративных Облигаций, хорошая табличка


На что нужно обратить внимание

Закон об освобождении корпоративных облигаций окончательно принят, однако изменения вступят в силу только 1-го января 2018 года. На практике это означает, что со всех купонных платежей, полученных в 2017 году, придется заплатить НДФЛ.

Из этого уточнения следует два логичных вывода. Во-первых, бумаги с погашением в пределах ближайшего года мало чем отличаются от обычных корпоративных бондов, потому что, по меньшей мере, половина купонных выплат приходится на момент, когда закон не вступил в силу.  (мое примечание-НИЧЕГО НЕ ПОНИМАЮ(((   )



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

Тем, кто опоздал на поезд крипты

Ну чо, биткойн взлетел до 11 килодолларов,
Coinbase вообще лежит — видимо, народ ломанулся покупать крипту.
Попробуйте coinbase.com — у меня даже графики цены не показывает.
Самое интересное в том, что это — только начало реального пузыря
Я не знаю, чем это все кончится, но могу судить по дотком пузырю — тогда все «глупые» деньги ломанулись в интернет-компании, и надежные, проверенные временем, но «cкучные» эмитенты никому были на фиг не нужны.

Размер спекулятивного капитала не бесконечен, и когда он перетекает из одних активов в другие, цена «неинтересных» активов неизбежно падает.
Тогда, в 1998 — 2000 годах было самое правильное время для покупки какого нибудь УГ — Макодональдс, Волмарт, Филипп Моррис — на долгосрок, за смешные деньги.

Так что, пользуйтесь моментом, и пока весь наступающий год дураки будут покупать биткойн (и догонят его тысяч до 50, я уверен) — покупайте качественные международные корпорации и качественный тек. 
Из качественного тека — конечно, Фейсбук, Амазон, могучую тройку NVIDIA AMD INTEL
Из международных контор — Пепси, Колгейт, может, медтек какой нибудь
Военка и Аэроспейс тоже кстати — Локхид, Боинг, Дженерал Дайнамикс 
Через пять лет будете иметь и рост капитала, и дивиденды хорошие

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



Чайник чайнику о программировании в Квике на языке Opile

Что нужно, чтобы начать работу с алгоритмическим языком Qpile в Квике.  
 
1. Описание языка: можно найти по ссылке zarchive.zerich.com/dist/8_%D0%AF%D0%B7%D1%8B%D0%BA_QPILE.pdf
 
2. Первоначальная чайная (для чайников) пошаговая процедура создания простейшей таблицы
 
(Я сам чайник — описываю, чтобы и самому лучше понять)
 
Читать нужно тем, кто не смог создать свою первую программируемую таблицу в Квике. Это первоначальная процедура создания простейшей таблицы, которая опущена в справочнике  
и соответственно справочник по языку Qpile не всегда можно понять не программисту.  
Если кто-то из опытных людей прочитает, то хотелось бы услышать как можно упростить создание описанной таблицы, и что в описании
не правильно.  
 
Итак, начинаю чайную процедуру.
 
 
Нужно сформировать тело программы
 
PORTFOLIO_EX Вася; «Заголовок» – наименование таблицы и определение основных параметров
 
DESCRIPTION Вася;        «Описание программы»

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

Код робота на 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

Мои пять копеек по поводу предстоящего армагеддона

Познакомился с мнением Василия относительно того, что кто-то что-то начинает уже подозревать 
smart-lab.ru/blog/403884.php#comments
Так вот, к вышеизложенному, для полноты, так сказать, картины хотелось бы напомнить следующий момент: ждунам доллара по 100500 следует иметь в виду, что когда керри начнет разворачиваться в обратную сторону, в случае возникновения «внезапного» внешнего фактора, из-за которого обожаемый нашей верхушкой иностранный планктон ломанется в узкий дверной проем, а за ним и вся любезная банковская публика, больно будет вдвойне: от значительно подешевевших ОФЗ и девальвации рубля, на которую вся вышеуказанная публика захочет купить зеленые билеты в первом ряду, обменяв на них мавро ОФЗ). Для того, чтобы понять, когда поезд тронется, обратим свое внимание на индекс гос облигаций RGBI http://www.moex.com/ru/index/RGBI/technical/
который показал свои хаи, к которым мы кстати сейчас подходим, в мае 2013 года, то есть за год до знаменитой девальвации, которую Василий будет еще долго вспоминать. Этот индикатор смело можно назвать опережающим при определении, что лед тронулся. Пока на месячном графике, используя элементарные навыки тех анализа, мы видим, что до пресловутого уровня в 140 очков время еще есть. И только когда мы увидим с вами свечку поглощение на месячном графике с тенденцией к снижению, можно отмерять годик до хорошей следующей девальвации. 

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

Мое выступление на конференции СмартЛаба | От идеи до торговой системы

В своем выступлении на конференции СмарЛаба я хотел рассказать о том, как и откуда приходят идеи для торговых систем. И привести пример из собственной практики. Но то ли я не так все преподнес, то ли меня не поняли, но слушатели услышали совсем другое. Поэтому решил подправить ситуацию и сделать видео со своим выступлением на конференции.


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