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

по

Опционы "с нуля". Часть вторая. Сравниваем и выбираем.

     Наконец-то, меня выпустили из бана. Ну тут уж я сам оказался дурён и нелюбомудрен.  В общем, сам виноват…

 

     Это я к тому, что выкладываю следующую часть с опозданием. Прошу меня за это простить.

 

     Итак, мы решили спекульнуть РИшечкой, чтобы выиграть денюшек на хлебушек.

     Лирическое отступление. Да, я не описАлся, ещё мой любимый Альберт Айнстан говорил, что «Все события в природе носят вероятностный характер». Поэтому биржевая торговля – это Игра, Игра и ещё раз Игра! Не работа, не бизнес, а именно ИГРА! С вероятностными исходами.

     Ничего плохого или предосудительного в этом не вижу. Шахматы, например, это тоже тяжелая, кропотливая, но игра. В которой, чтобы чего добиться, нужно много и упорно учиться и тренироваться. Но учиться – Игре. И играть, играть, играть…

     Или шпионы-разведчики-контразведчики, которые ведут радиоигру и пускают дезу. Тоже игра.



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

Кризис 1997-1998 года. Что ударило больнее - акции или облигации?

                Среди российских инвесторов принято пугаться и пугать друг друга дефолтом по государственным облигациям, который произошел в 1998 году. Опыт дефолтов по корпоративным облигациям в 2008 -2017 году дает ложную подсказку, что дефолт равен полной потере средств. Некоторые молодые люди даже утверждают, что акции в кризис надежнее, чем государственные бумаги. Я думаю, что такой ошибки, как дефолт по облигациям в национальной валюте, правительство больше не допустит. И все же, давайте сравним потери владельцев акций и облигаций.

                Азиатский кризис 1997 года перекинулся на Россию в конце октября 1997 года. Акции пошли вниз столь резко, что из-за слабого риск-менеджмента ушли с рынка две биржи, на которых торговали акциями и фьючерсами. МЦФБ ушла «по тихому», а банкротство РБ в мае 1998 сопровождалось 100% потерями у инвесторов.   Акции падали примерно год, с октября по октябрь, и в итоге потеряли 80-90% от начальной рублевой стоимости, а некоторые и больше.



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

Фьючерсы и опционы: недостатки нелинейной торговли

Доброго вам здоровья, Смартлабовцы !

В прошлый раз написал топик о преимуществах нелинейной торговли. Но как мы знаем ничего идеального не бывает. 

Какие же недостатки у нелинейной  торговли:

     1. Требуется большой опыт работы на рынке. Грубо говоря опционы это инструменты для профессионалов, и для того чтобы работать с ними нужен достаточно большой опыт работы с линейными активами, понимание процессов, происходящих на рынке, уметь проводить анализ, да и сами опционы. Необходимо чётко понимать что это за инструмент, какие они бывают, механизм их ценообразования, греки первого порядка (дельта, вега и тетта), базовые опционные стратегии их достоинства и недостатки, методы управления позицией. Новичкам крайне не рекомендуется с них начинать, можно к ним начать присматриваться после 3 лет плотной работы с рынком.

     2. Малое количество информации в открытых источниках (литература, тематические сайты и форумы, паблики в соцсетях, записи вебинаров)
В них достаточно общая базовая информация. Её достаточно для того, чтобы освоить матчасть, но в торговле придётся набить немало шишек. Рекомендуется даже выделить отдельный счёт для работы с опционами и не работать с основными средствами, используя этот инструмент, потому что:

     3. Риски при работе с опционами повышаются в 1,5-2 раза. Необходимо соблюдать риск-менеджмент и требования к нему повышены, потому что играет роль временной фактор. Если на линейном активе неблагоприятное изменение цен чаще всего ещё можно благополучно пересидеть, то с опционами такой фокус не пройдёт: если до экспирации он не выйдет в деньги, то просто сгорит и трейдер потеряет вложенные средства. 

     4. Временной распад. Может быть как другом, так и врагом трейдера, в зависимости от стратегии. В случае голых покупок является злейшим врагом трейдера. Причём распад ускоряется экспоненциально по мере приближения срока экспирации.

     5. Низкая ликвидность. На большинстве инструментов, поэтому количество базовых активов сильно ограничено, на которых можно работать с опционами, также есть так называемые «ловушки», когда трейдер, из-за отсутствия ликвидности не сможет ликвидировать позицию. Про спреды думаю не надо рассказывать, а также про ограничения на объём капитала.

     6. Высокие комиссии. Это прежде всего среднесрочный инструмент, так что «поскальпить» не выйдет. Комиссия в 10 раз превышает за аналогичную сделку по фьючерсу. Даже «навскидку». Можно посмотреть брокерский отчёт и немного удивиться.

     7. Риск неограниченных убытков при продаже волатильности. Да такое может случиться, если произойдёт событие, как например 3 марта 2014г. Защититься от этого можно только соблюдая объём сделки (20% ГО и тетта не больше 1% в день). В этом случае конечно убыток будет значительный, но маржинколла скорее всего удастся избежать, хотя и это нельзя гарантировать. Вообще продавая волатильность нужно быть морально готовым понести такие убытки, либо не заниматься этим.

     8. Требуется дополнительное ПО для анализа позиций и навыки работы с ним. К сожалению у бесплатных версий опционных аналитиков точность оставляет желать лучшего. Рекомендуется использовать сервис на option.ru. Если это критично, то это дополнительные расходы на обслуживание такого ПО.

     9. Прозрачность расчёта ГО и вариационной маржи. ГО меняется в зависимости от цены и волатильности, это тоже стоит взять во внимание. Особенно это касается проданных опционов. Если вы попробуете поскальпировать на фьючерсах например, внутри открытой опционной позиции, то может выйти так, что сделку вы откроете, а закрыть без ликвидации опционной позиции не сможете, тк фьючерсы также учитываются при расчёте ГО. Поэтому на работу с опционами лучше всего выделять отдельный счёт.

    10. Не все брокеры позволяют работать с опционами. Часто предъявляются требования к минимальному размеру счёта. В БД «Открытие», например такое ограничение — это 5000р, в ITInvest — 50000р. Welcome! Оптимальная сумма, как показывает практика — 50000р. Минимальная — 10000р

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

Вот пожалуй такой список недостатков. В заключение скажу, что торговля опционами это прежде всего другая торговля, к которой нужно адаптироваться. Быстрых результатов здесь достигнуть также не удастся. Нужно учиться учиться и ещё раз учиться. Зато опционы предлагают действительно интересные возможности для заработка. Всем удачных торгов и профита.

БЛАГОДАРЮ ЗА ВНИМАНИЕ !

Сбербанк, НЛМК, Брент, Доллар. Опять за старое

    • 28 августа 2017, 09:32
    • |
    • Forts
  • Еще
Обещал в ближайшие месяцы больше не колдовать. Но бесы меня охмуряют и соблазняют. Видимо это уже белая горячка.

Озвучиваю свои цели по Сбербанку и НЛМК. Почему именно по этим компашкам? Ну по ним хорошо выстраивается фрактальная фигура, ну и соответственно отработка её.

 Сбербанк
Сбербанк, НЛМК, Брент, Доллар. Опять за старое


 Новолипецкий металлургический комбинат
Сбербанк, НЛМК, Брент, Доллар. Опять за старое

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

10 советов 40-летнего 20-летним

не мое, но в свете постов о здоровье от 50-летных, думаю, актуально

10 советов 40-летнего 20-летним.

Достигнув сорока начинаешь поражаться, сколько же людей даже не дожило твоего возраста. Илья Ильф умер в 39. Максим Горький в 37. Да много кто умер.
Дожив до сорока начинаешь задумываться, достиг ли ты всего чего хотел, и много ли ты успел сделать.
Ты поражаешься, что Александр Македонский до твоего возраста не дожил, но уже успел завоевать полмира, оставив тысячелетние наследие. Осознавая свои достижения, ты понимаешь, что великие люди в твоем возрасте тебя превзошли многократно. Читая книги начинаешь ловить себя на мысли, что автор тебя явно младше (и думаешь, ну чему этот сопляк может тебя научить?).

Анализируя свой опыт хочется кое что посоветовать нынешним 20-летним с высоты, так сказать, прожитых лет.

Итак, 
1. Перестань бухать. Перестань курить. Как бы круто тебе это сейчас не казалось, бухать и курить это не айс. Больше того, я скажу тебе то, что может показаться банальностью, но бухать и курить крайне вредно для здоровья. Да, сейчас здоровье у тебя железное и никак тебя не беспокоит. Но будь уверен, что если продолжишь бухать/курить, через 20 лет ты поймешь, что здоровье свое ты загубил безвозвратно. Помни, что даже пиво ведет к выработке не свойственного тебе женского гормона эстрогена. К каким последствиям это приводит нагуглишь сам. Или можешь посмотреть на большинство нынешних сорокалетних. Хочешь быть таким — продолжай.



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

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

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

Одной из самых «сильных», то есть дающих сильный сигнал, моделей в EWP является модель Диагональ, в частности речь, пойдет о конечной диагонали (Ending Diagonal). Данная модель чаще всего появляется в виде заключительной волны 5 в импульсе или волны C в зигзаге.

Диагональ – модель разворота. Часть 1.


Диагонали бывают двух типов, сужающаяся и расширяющаяся. Так как сама по себе Диагональ  появляется не так уж и часто по сравнению с импульсами. Например, если посмотреть статистику Rich Swannell  (см. таблицу, ниже, обозначение ED) то, можно увидеть, что данная модель появляется в импульсе чуть более 20% случаев, а на некоторых рынках и вовсе не дотягивает даже до 10%. 



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

Приветствую Vladislav

    • 29 июня 2017, 17:41
    • |
    • asdasd
  • Еще

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

В принципе это и понятно, и объяснимо, реально тут делать нечего.

А у меня реальная беда.

Осознал себя полным идиотом, сейчас сижу думаю-как с этим жить.

6 лет был свято уверен, что математика и рынок понятия малосовместимые и тут как обухом по голове.

Лови мысль –

Прихожу в одно уважаемую брокерскою контору и спрашиваю

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

В вкратце изложил им суть, они в ответ

– как именно это все изложить что б машина поняла,

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

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

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



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

Самый темный час всегда перед рассветом

Навеяно вчерашним постом про конец света (отключение интернета)

 

Лет восемь назад прочитал интереснейшую книгу. Дино Буццати. «Татарская пустыня». Вкратце… Молодой лейтенант приезжает в крепость на границе в надежде прославиться. Государство находится на грани войны с соседом. Мысли у героя следующие: проявлю себя на войне, после переведусь в столицу, балы, красавицы, слава. Вот это будет жизнь!

А войны все нет и нет. Годы идут. Герой служит. Вот сослуживцы замечают в подзорную трубу, как потенциальный неприятель железную дорогу прокладывает. Готовится значит. Еще послужу. А жизнь идет. И войны все нет и нет. Герой уже далеко не молод.

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

 

К чему все это? Да к тому, что, следуя призывам армагедонщиков готовить сухари (тушенку), учиться точить болты, жить без интернета, готовиться к коллапсу, мы упускаем время. Время делать бизнес, инвестировать. Занимать активную позицию в жизни. А ведь времени так мало. И так еще много нужно успеть. А мы, как герой произведения Буццати, ждем войны (кризиса, революции) и не можем двигаться вперед.



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

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