Избранное трейдера Татьяна Д.

по

Опционный балет. маленький белый лебедь

Месяц назад были сформированы опционные позиции по индексу на фьючерс РТС.
Далее рассматриваются история управления и результаты по каждой позиции:

Опционный балет. маленький белый лебедь




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

Зачем нам Сименс! Мы и свои турбины будем делать!

Будем свои газовые турбины делать!
Но для начала нужно будет вырастить специалистов металлистов, которые создадут сплавы для турбин способные держать температуры 1200-1400 градусов. Потом нужно будет вырастить специалистов, которые этот металл будут обрабатывать и превращать в лопатки турбин, а также делать роторы с перфорацией охлаждения. Потом нужно вырастить специалистов по высокоточным подшипникам, которые будут гарантировать стабильную работу газовых турбин. Ещё нужно будет вырастить класс высоковалифицированных рабочих.
Это всё сложно и дорого… и находится за горизонтом планирования. 
Поэтому пока придется покупать все за рубежом за нефте$ и собирать отверточным производством у нас.

Для примера состояния наших технологий привожу двигатели для суперджет-100:

PowerJet SaM146 (СМ146) — турбовентиляторный двигатель со смешением потоков. Двигатель предназначен для региональных самолётов и в настоящее время устанавливается на семейство самолётов 



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

В РФ доступна куча данных, в т.ч. экономических.

Весной был на вписке «Open Data», это не реклама!!!
oki-russia.timepad.ru/event/439731/

Был поражен масштабом открытости наших данных. Оказалось, что мы еще будучи в G8 подписали меморандум по открытию бесплатного доступа к статистическим донным. Поразительно, но по оценке НКО система госзакупок в РФ самая продвинутая. Но также имеется доступ к огромному массиву статистик начиная с количества кинотеатров в разрезе муниципалитетов до структуры правонарушение МВД.

Вот эта контора АНО «Информационная Культура» сотрудничает с различными НКО, включая инноагентов типа эмнисти, по международному соглашению и продвигает в массы доступ различным базам данных, включая буржуйские.
www.infoculture.ru/projects/

У них есть подписка на рассылку новостей по открывающимся статистическим ресурсам. И есть ежегодная сходка для разработчиков и зевак. Бутеры и пирожки там вполне съедобные. Куча конкурсов для разработчиков и внушительные призы.

Сегодня рассылку получил.

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

Возможно ли спекулировать на рынке облигаций?

Добрый день смартлаб! Предлагаю нашему комьюнити рассмотреть возможность сделать ставки на рынке облигаций, а именно игра на падение десятилеток  ОФЗ

Есть несколько причин для игры на понижение:
1. Выход зарубежных инвесторов из carry trade. Как сегодня писал в своем утреннем обзоре многоуважаемый Drozdov.S:
Goldman Sachs рекомендует инвесторам фиксировать прибыль по carry trade с валютами EM, включая рубль т.к потенциал дальнейшего роста валют развивающихся стран в настоящее время представляется ограниченным.В целом Goldman сохраняет позитивную оценку валют emerging markets, но аналитики инвестбанка считают, что в предстоящие месяцы рубль, реал и рупия вряд ли заметно подорожают.

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

3. Техническая картинка.
График индекса государственных облигаций (RGBI), неделька+дневка:

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

SWT-МЕТОД. 1. Классический технический анализ

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

СОДЕРЖАНИЕ

1.1. Аналитическая поддержка торговых операций
1.2. Что такое тренд в техническом анализе? Виды трендов
1.3. Глубина коррекции как критерий смены типа тренда
1.4. Фигуры технического анализа как критерий смены типа тренда
1.5. Проблемы классического технического анализа


1.1. Аналитическая поддержка торговых операций

SWT-МЕТОД. 1. Классический технический анализ

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

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

Прибыльность разных страйков

Хотел посоветоваться с экспертами – кто как подбирает страйки при направленной торговле опционами.

Итак, я понимаю куда двинется акция, и примерно насколько. Точное время начала и завершения движения угадать сложно, поэтому я беру опционы с запасом срока (скажем 3-9 месячные). Т.е. это не краткосрочные опционы (угадывание результатов ER и т.п.), а именно на 3-9 месяцев. Торгую в Америке, андерлаинги — акции компаний.

Вопрос, какой выбрать страйк, чтобы обеспечить максимальный профит от вложений?

Ведь это далеко необязательно что надо покупать опцион именно того страйка, куда ты предполагаешь придет цена БА.


Так вот, какие вы используете алгоритмы/расчеты или оценки для выбора самого выгодного страйка?

 

Расскажу о своем опыте. Мой практический опыт на разных акциях говорит, что при движении в ожидаемом направлении максимально вырастает цена опционов, чей страйк удален примерно на 10% от текущей цены БА. Это действует в случае, если цена БА прошла только 5%, и все 10%, и даже 15%. Понятно, что при бОльших движениях цены уже имеет перекладываться в более дальние страйки. Причем что интересно, несмотря на то, что отношение цены опциона к его дельте тем лучше, чем дальше страйк вне денег, в реальности далекие опционы при движении цены БА в пределах 20% не вырастают так грандиозно (за счет других греков), и простой выбор по коэффициенту цена разделить на дельту – не дает лучшего результата.



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

Мини-производство.

Друзья добрый день. Нужен совет любого)

Есть помещение 250-400 кв.м… Есть возможность наскребсти инвестиции на миллиона 2 рублей.
территориально находится в М.О. на границе  со смоленской.
какое можно мини производство освоить? может выращивать что, или собирать что то?
особенно интересуют идеи связанные с импортозамещением.
заранее благодарен за ответы.


Si. Опционы. Сложная задача.

Доллар растет. Растет цена длинной позиции в Si.  Для страховки от падения цен использую один из двух вариантов:
1. Продажа контракта Si  с одновременной покупкой контракта колл.
2. Покупка контрактов пут без продажи контрактов Si.
 
У каждого варианта есть свои плюсы и минусы. У варианта 1 лучше страховка от снижения цены и меньше требований по ГО.
У варианта 2 больше требований по ГО, но при росте цены портфель растет быстрее, страховка же от снижения цены хуже.
Следует также отметить меньший временной распад позиции варианта 1 за счет исключения контанго фьючерса.

Какой вариант выбрать? Хотелось бы узнать как аргументированно выбрать оптимальный вариант.
 
РС1. Месячное контанго фьючерса в два раза меньше временного распада месячного опциона, поэтому замену всех фьючерсов коллами не предлагать.


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