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

по

А как оценить предельную стоимость машины, которую я могу себе позволить?

В общем, посчитав потенциальное увеличение расходов, я охладел к идее замены машины (+476, 391к). С другой стороны, в комментариях было несколько тезисов, что машина, мол, должна стоить например не больше, чем 3 месячных дохода. Или 6 месячных доходов. Это конечно всё условно, но я задался вопросом — а какова же на самом деле предельная целесообразная стоимость машины, которую я могу себе позволить.

*расчет не является правильным или неправильным*я просто пытаюсь зацепиться за цифры и хоть какую-то логику, чтобы понять сколько должен стоить автомобиль*

I. Вот допустим, я рантье. Активный доход = 0. Сбережения = X. Среднегодовая доходность инвестиций после налогов = 10%.
При X=10млн рублей получаем годовой доход 1 млн руб или 83 тыр в месяц.
Месячная минимальная операционная расходность авто составляет не менее 15 тыс руб. 
Остается дохода 68 тыр. в мес.
Если считать по формуле цена машины X 6 мес дохода, то получится 408 тыс. рублей.

Если из дохода 68 тыр допустим выделить 8 тыр на амортизацию машины, то за год амортизация составит ~100 тыр. 
При сроке амортизации 10 лет, можно позволить себе машину стоимостью 1 млн руб.

В этих условиях само наличие авто стоимостью 1 млн руб снижает доход домохозяйства на с 83 до 60 тыр. То есть на 28%.
Является ли это разумным? Думаю, что нет.
Значит чтобы ответить на базовый вопрос, мы должны определиться еще с тем, какая доля месячных расходов на авто допустима?

II. Смоделируем еще одну ситуацию. 
X=10 млн руб, но активный доход = 100 тыр в месяц.
Допустим, мы определились с тем, что не желаем тратить на авто более 10% месячных доходов.
Совокупный доход=инвестиции+активный доход = 100+83=183 тыр в месяц.
расходы на авто = 18 тыр в месяц.
15 тыр = бензин+мин.обслуживание
=>на амортизацию остается 3,3 тыр в мес, 39,6 в год или стоимость авто 400 тыс рублей. Вот это я считаю вполне разумно!
Ну то есть примерно вот это получим:
А как оценить предельную стоимость машины, которую я могу себе позволить?
III. Далее пойдем от обратного.

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

Как надо покупать машину:)

Периодически на каждого из нас, у кого есть хоть какие-то деньги, накатывает желание поменять драндулет. Вот помню в 2014-м году, хотел продать свою Теану, купить Cadillac Escalade 2008 года БУшный. Уже ездил смотрел несколько вариантов, остановило только то, что за теану предложили на 50 тыс руб меньше чем хотел. Господи, как я рад, что тогда не совершил этой глупости! Сколько бы денег я потерял на этой операции.

И вот сейчас это желание вернулось.  Всё-таки в теану двое детей с коляской и бабушкой еле влезают:( Вот и сидишь как дурачок, мечтаешь о новой бушной большой тачке. Новую то мне конечно не купить, новые покупают олигархи. Так вот чтобы не быть идиотами, я предлагаю всем сделать простые расчеты, об экономической целесообразности машин. Думаю Баффет дружил с калькулятором, поэтому десятилетиями не менял машину:))

Итак мне нравится бушный Кадиллак большой или VW Мультиван. Ну года 13-го где-то.
Посчитаем во что они нам обойдутся кроме самих затрат на приобретение.
Как надо покупать машину:)
Видим, что убытки годовые колоссальны. Можно конечно пренебречь амортизацией и учесть лишь фактические регулярные расходы… Ну это как вы сами хотите. 
А вот те небогатые 60% населения, которые берут на машину кредиты, становятся еще беднее по иронии судьбы:) Самая нижняя строка таблицы — это как раз расходы при использовании кредита. Если взять каску, то еще можно добавить тыщ 100 к сумме.

Далее, я тут грешным делом решил посмотреть, как дела у олигархов, которые берут новые тачки и получил ШОК:

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

Стратегия инвестирования, которая даст вам больше (но это не точно)

Давно известно, что если вы хотите купить какую-то акцию дешевле — продайте на нее пут не в деньгах. Например хотите сбер по 180? Продайте 180й пут. Если цена упадет ниже 180 — то вы получите акцию по 180 и еще премию по путу. (например 2) и таким образом эффективная цена покупки будет 178. Ну, а если цена не упала — то получите просто истекшую премию в размере 2, что в пересчете на ГО довольно неплохая доходность. Пример выше — условный, надо смотреть на цены, страйки, волатильность. Но есть одно простое правило — путы лучше продавать тогда, когда рынок уже припал и вола подскочила и часть падения уже пройдена. (Так, сейчас кто-то бросится писать коммент про мой 2008й год. Да, такое бывает. Но сейчас этих предпосылок, вроде как, нет).
Чем еще хорошо продавать путы? что если акция болтается в диапазоне, то вы собираете премию. Обычный владелец стока при неизменной (почти) цене акции получит лишь дивиденды, а вы — опционную премию. (правда не будет дивидендов)

Но тут возникает два момента — первый, с опционами не все знакомы и не все связываются и второй — не на каждый инструмент есть опцион. Поэтому сейчас я расскажу стратегию торговли, для которой не нужны опционы, но суть ее особо не поменяется. Более того, добавятся дивиденды.

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

Пример направленной опционной торговли на реальных сделках.

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

Изначально озвучу свое мнение по вопросу спекулятивных стратегий в трейдинге – на рынке не существует возможностей более прибыльной торговли, чем ловля хороших направленных движений с большим плечом. Такая стратегия торговли позволяет реально за несколько дней увеличивать счета в разы, но так же и мгновенно сливать в минуса при отсутствии вменяемого риск-менеджмента либо форс-мажорных ситуаций, технических либо вариантов прихода «черных лебедей».  Модель направленной плечевой торговли трейдеров на линейном рынке – это попытка входа большим объемом с большой плечевой составляющей  с выставлением стоп-лосса. Проблемы такой торговли тоже известны – это постоянные выносы стопов,  даже если общее направление движения правильно угадано, с последующим движение рынка в нужную сторону, заходом/выносом и т.д. Я сам несколько лет занимался линейной торговлей (Саше Резвякову большой искренний привет, спасибо за науку!), посему знаком с данной тематикой и сопутствующими проблемами довольно хорошо, особенно на сегодняшних рынках.



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

Альтернативная опционометрика (часть 2)

    • 01 июня 2018, 11:03
    • |
    • FZF
  • Еще

Начало здесь: smart-lab.ru/blog/474365.php

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

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

Основное отличие от стандартного метода оценки стоимости опционов является утверждение:

Цену опциона можно рассчитывать исходя из показателей волатильности, не привязанной в процентном отношении к цене базового актива. В моем случае волатильность измеряется пунктах индикатора ATR(Н1).

За исходные данные берется цена опциона на центральном страйке (стредл на центральном страйке). Получить ее можно опираясь на историческую волатильность (описано в 1 части), или просто взяв текущие значения из таблицы опционов, опираясь на ожидаемую волатильность.



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

Альтернативная опционометрика (часть 1)

    • 31 мая 2018, 12:51
    • |
    • FZF
  • Еще

Вашему вниманию предлагается альтернативный взгляд на оценку стоимости опционов.  Забудьте, всё чему вас учили, и начнем мыслить с чистого листа.

Чтобы иметь меньше параметров, «избавимся» от дельты и от всяких рассуждений «что куда пойдет и на сколько процентов». Рассмотрим самую простую дельтанейтральную позицию  -стредл.
Альтернативная опционометрика (часть 1)

 Проданный стредл или купленный  это не важно. Будем пытаться его дельтанейтралить. Если не вдаваться в подробности формул, а выделить основное свойство такого действия, то результат будет зависеть от того расстояния, которое «набегает» нам цена базового актива. Тут появляется один важный момент: Расстояние пробегаемое базовым активом можно выразить через волатильность базового актива в процентах, но можно этого не делать. Можно использовать непосредственно «длину пробега» для оценки стоимости опциона.

 



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

Опционы на мобильном квике: коды опционов

Добрый день, Уважаемые Смартлабовцы !

Вашему вниманию предлагаю краткий, но на мой взгляд весьма полезный пост. 

Не секрет, что разработчики мобильной версии Quik как для iOS, так и для Android не доработали свои терминалы по части работы с опционами. Дальше больше скажу, функционала там нет вообще. Но тем не менее позиции открывать можно. Это потребуется, если на момент открытия сделки десктопный терминал физически недоступен, а позу открыть нужно. Что делать? Нужно знать как расшифровываются коды опционов, и самое главное не попутать колы с путами и не наколоться с серией, если работаешь с недельками. Далее просто забиваешь в поиске код инструмента и вуаля… МОЖНО ОТКРЫВАТЬ СДЕЛКИ С ОПЦИОНАМИ. 

Итак ...

Код опциона состоит из нескольких частей:
На примере RTS:

RI115000BE8A — расшифровывается как недельный маржируемый колл-опцион на фьючерс индекса РТС со страйком 115000 и сроком исполнения 03.05.2018

Первая часть кода: Тикер, но тут собственно всё понятно, код инструмента базового актива

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

Совет старого Гнома

как человек, который влетал в 2008, 2011 и 2014 — рассказываю чо да как  И как заработать. 


Во первых, смотрите на волу. 80-100 — это реально паника. Правая сторона улыбки должна подняться. Колы ОТМ из-за маржинколов будут дорогие. Их надо продавать. Особенно deep otm. Как только рынок отскакивает — вола сдувается и они ничего не стоят. Параллельно можно продавать глубокие путы. Там вола будет 200 и стоить они будут немеряно. Проблема в этой истории — что я почти всегда приходил к ней когда нет бабла и ты понимаешь что денег рынок раздает, а взять Не можешь. Исключение — осень 2011, когда мы сделали ок 10 млн за день на депозит тогда примерно 3-4. Не сказать что я офигенно был готов к обвалу, но так сложилось что бабки были и дорогой брокер еще давал сверху плечо по дружбе. 

Во вторых — сейчас льют рынок. А значит акции отдельные, которые вроде от санкций страдать особо не должны- становятся привлекательными. Если эмитент особо без долларовых долгов, работает на рынок рф или азии и имеет норм мульт (скажем дешевле 5 ev/ebitda) — то можно начинать подкупать. 

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

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

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