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

по

Ценовая функция и режим (часть 1)

    • 24 сентября 2017, 14:09
    • |
    • uralpro
  • Еще

Ценовая функция и режим (часть 1)

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

Алгоритмы высокочастотной торговли можно разделить на следующие категории:

1. Различные формы маркет мэйкинга (вероятно самый большой процент)

2.  Заработок на действиях других участников рынка или на микроструктуре рынка

3. Краткосрочный арбитраж

4. Алгоритмы исполнения больших заявок

Также среднесрочные стратегии подразделяются на:

1. Следование за трендом (если есть достаточно сильный импульс)

2. Следование за циклами (продажа/покупка в точках разворота высокоамплитудных ценовых циклов)

3. Долгосрочный арбитраж

Если сфокусироваться на алгоритмах маркет мэйкинга и следования тренду/циклам, то понимание ценового режима и ценовой функции очень важно.

Режим

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



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

Управление капиталом портфеля алгоритмических стратегий.

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

Рассмотрим разные варианты управления капиталом при торговле портфелем стратегий.

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

1. Фиксированный лот без реинвестирования. Просто суммируем две кривые прироста капитала. В данном случае все просто, одна стратегия делает прибыль, другая добавляет просадки. При раздельном тестировании этот метод позволяет наиболее точно оценить стратегию. Минус метода в том, что при значительном изменении капитала (вывод или занос денег) нужно править рабочий обьем. 

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

3. Создаем условия, когда каждая стратегия работает независимо (одна стратегия — один счет, стартовая сумма для счетов одинаковая), прибыль реинвестируется, либо уменьшается обьем при просадке счета. При этом каждое направление входа системы (лонг или шорт) рассматривается как отдельно взятая стратегия. Почему так? Возьмем простую трендследящую стратегию. На тренде вверх имеем хорошие сделки от лонга, но на резких и коротких коррекциях тренда шорт как правило не зарабатывает. И наоборот для тренда вниз. В этом случае мы будем резать лот на убыточном направлении стратегии и добавлять на прибыльном. 

4. Доработка варианта 3. К каждой отдельно взятой стратегии добавляем элемент equity-trading. В коде стратегии отслеживаем изменение капитала (start_deposit +- netprofit), параллельно заполняем массив финансового результата при торговле 1 лотом, вводим порог допустимой просадки и при ее достижении выключаем стратегию (торгуем минимально возможным обьемом — 1 контракт или 1 акция). При восстановлении теоретической кривой капитала выше порога просадки — возобновляем работу полным обьемом. Порог просадки задается исходя из прошлых данных бэктеста, либо на глаз. Сильно зажимать порог нельзя. На глаз у меня получилось, что максимальная просадка стратегии с учетом процента капитала выделяемого на стратегию примерно равняется 3% на весь капитал. То есть, если стратегия торгует на 30% капитала, то пороговое значение должно быть примерно 10%. Здесь возможны исключения, например для стратегий с малой просадкой можно задавать пороговое значение чуть больше максимальной исторической просадки.  
Мои тесты показывают, что при применении варианта 4 общая прибыль незначительно снижается, но так же снижается и просадка. Соотношение профит-просадка увеличивается примерно на 20%, для некоторых стратегий соотношение увеличивается в два раза. 


Апдейт

Для примера equity-trading я рассмотрю трендовую стратегию на сбербанк.
Входные условия — только шорт, 100 контрактов фиксированный лот, без пирамидинга. С лонгом все понятно, последние пару лет стратегия зарабатывает без значительных просадок. 
Эквити с фиксированным лотом, 100 контратктов.
Управление капиталом портфеля алгоритмических стратегий.



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

Про Quik, про карман, про лимитные и стоп-заявки

Здравствуйте дорогие мои! Вы наверно уже соскучились?
Хочу поделиться с вами классной штукой в квике под названием «Карман».
Уверен, что не все знают про эту функцию.

Quik карман

Для чего нужен карман?

Представьте, что вы хотите купить ценную бумагу по определенной цене. Пусть это будет всеми известный Газпром. Вы хотите купить акцию Газпрома по цене 100р. Текущая цена болтается в ценовом коридоре 120-130.

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

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

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

Глава ... Опционная магия и ее разоблачение.

Эпиграф:
/М.А. Булгаков/
 «Маленький человек  в дырявом  желтом котелке  и с грушевидным малиновым носом, в клетчатых брюках и лакированных ботинках выехал на сцену Варьете на обыкновенном двухколесном  велосипеде. Под звуки фокстрота он сделал круг, а затем  испустил  победный  вопль,  от  чего  велосипед  поднялся   на  дыбы. Проехавшись  на  одном  заднем  колесе, человек перевернулся  вверх  ногами, ухитрился на ходу отвинтить переднее колесо и пустить его за кулисы, а затем продолжал путь на одном колесе, вертя педали руками.»



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

Предварительные условия — обсуждается исключительно опционный рынок forts, ставки ноль.

Фокус первый.
Бытует мнение: распределение цен БА на момент экспирации, порождаемое ценами опционов, предполагает одинаковые вероятности смещения цен БА вверх или вниз.
Источник: интернеты, комментарии в них, и, увы((, Стас Бржозовский тут: https://smart-lab.ru/blog/411878.php
Факт: это полная ерунда. На самом деле, если допустить справедливость формулы Блэка для опционных цен (при условии постоянной волатильности на всех страйках), мы получим, что вероятность снижения цен на момент экспирации всегда выше, чем вероятность их роста.
Доказательство: берем и считаем в лоб. Например, при волатильности 50 и сроке до экспирации 1 год, вероятность снижения цены на момент экспирации составит 0,6. При волатильности 200, допустимой при катастрофах, ситуация будет еще интереснее. Правда в том, что матожидание распределения, порождаемого ценами опционов, совпадает с ценой БА в каждый момент. Но мало кто замечает подмену понятий и задумывается об этом.

Фокус второй. 
Бытует мнение: дельта опциона колл на центральном страйке по модулю обязана совпадать с дельтой опциона пут и равняться 0,5.
Источник: многочисленные русскоязычные сайты, отдельные персонажи Смартлаба, тупые переводчики с английского на русский язык.
Факт — это вранье. Многие «канонические» авторы (Конноли, Натенберг, Мак-Миллан) действительно пишут, что дельта центрального колла ПРИМЕРНО совпадает по модулю с дельтой пута. И это правда, при низкой волатильности и малом времени до экспирации. Однако, при росте любого из этих двух показателей ситуация меняется кардинально.
Доказательство: все очень просто. Дельта центрального опциона колл (модель БШ) равна N(d1), d1>0, следовательно дельта центрального опциона колл в мире БШ всегда больше 0,5 и возрастает как с ростом iv, так и с ростом времени до экспирации. В предельном случае при бесконечной волатильности и/или времени до экспирации дельта центрального опциона колл — единица. Где живут риски неправильной оценки дельты? Сегодня — в Тихом океане. И если неистовый Ким попробует бабахнуть по душке-Дональду, то дельты опционов центральных страйков удивят многих. Пример: дельта центрального опцина колл при волатильности 50 и сроке до экспирации 1 год составляет 0,6. Каждый может в этом убедиться при помощи любого опционного калькулятора, живущего в интернетах.

Фокус третий.
Бытует мнение: вероятность выхода в деньги опциона колл совпадает с его дельтой.  
Источник: интернеты и прочие сомнительные места.
Факт — это вранье дважды.
Доказательство: см первые два фокуса. Пример: вероятность выхода центрального опциона колл «в деньги» при сроке до экспирации 1 год и влатильности 50 составляет 0,4. Дельта 0,6.

Можно еще, наверное, пофокусничать с общепринятыми мнениями, но пора откланяться

PS

/М.А. Булгаков/:

«А может  быть,  не было никаких  этих  слов,  а были другие  на эту  же музыку, какие-то неприличные крайне. Важно не это, а важно то, что в Варьете после всего  этого  началось  что-то  вроде  столпотворения вавилонского.»



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

Дивидендные истории в России. Статистика закрытия гэпов (автор Spydell)

копипаст. Оригинал тут: http://spydell.livejournal.com/642950.html 

В этом году стремительность закрытия дивидендных гэпов поражает, но как обстояли дела раньше? Сколько времени требуется для закрытия див.гэпа?
Акциям Газпрома с 2007 по 2011 везло, гэп закрывали в тот же день, но и дивиденды никогда не превышали 2%. Как только выросли дивиденды, так и начались сложности. В 2012 году при дивах в 8.97 руб и отсечке на уровне 165 руб потребовалось 89 торговых дней, чтобы вернуться на тот же уровень. В 2013 44 дня, в 2014 80 дней, в 2015 31 день, а в прошлом году 80 торговых дней. Другими словами, чтобы за 5 лет отбить дивиденды в Газпроме в совокупности на 37.25 рублей необходимо было 324 торговых дня. Если в прошлые 5 лет вы бы инвестировали в Газпром фиксированную сумму в рублях, например, 1 млн руб в последний день перед закрытием реестра, то примерно за 16 календарных месяцев смогли бы получить около 250 тыс рублей.
Газпром
Это один из худших показателей среди всех крупных компаний на ММВБ. Газпром отличается тем, что всегда падает и очень неохотно растет. Однако, это все равно заметно выше любого вида депозита в банках.

В таблице «дни» — это количество торговых дней после закрытия реестра, в течение которых акция закрывала дивидендных гэп. «минимум» — минимальная достигнутая цена в процессе закрытия гэапа, а «мин (%)» — величина падения в % от закрытия реестра до самого минимума в дивидендном гэпе. На примере Газпрома с 2012 по 2014 инвесторы терпели в худший момент около 17% убытка от последней котировки перед закрытием реестра.

У Сбербанка раньше были низкие дивы, поэтому и закрытие гэпов стремительное за исключением 2014 года, когда попали на негативную конъюнктуру. Именно в этот момент США и ЕС начали вводить санкции против банковского сектора, чуть позже начался коллапс рубля и банковской системы России, а потом отходняк.
Сбербанк
Инвестируя фиксированную сумму в Сбербанк, можно было бы получить около 10% доходности примерно за календарный год ожидания. Статистику смазывает 2014. В таблице лимит 226 дней – это значит, что котировки не достигли предыдущего закрытия реестра до момент но момента истечения года. В целом, раньше Сбер был не самым выгодным в контексте дивидендной доходности.

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

Продвинутые инструменты парного трейдинга и портфельного роботостроения.

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

Когда речь идет о корреляции на финансовом рынке, в первую очередь думаешь об арбитраже или диверсификации портфеля. Для построения арбитражной стратегии нет ничего проще, чем посмотреть корреляцию в Excel, но результат, увы, ограничится 2-3 инструментами. Что делать, если у нас портфель роботов или акций? Тут есть два известных мне способа:

1.Посмотреть корреляцию в Wealth-e



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

Опционика: некоторый опыт

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

Самое первое: откуда эдж. По моим представлениям, рынки как базового актива, так и опционов весьма эффективны. То есть базовый актив чертовски похож на броуновское движение, а опционы оценены по мотивам идей Блэка и Шоулса--то есть «справедливо». Поэтому вопрос--где тут может быть эдж? Я к опционике отношусь как к науке о траекториях цены базового актива. То есть опционика (как и стратегии на базовом активе, на самом деле)--это такой усреднитель по возможным траекториям БА. И тут возникает вопрос--какие траектории существуют? Какие особенности у траекторий существуют? К примеру, многим известно, что вверх рынки активов идут медленно, вниз быстро. У этого есть причина--страх резче и искрометней, чем жадность. Продать по любой цене--это гораздо более веселая вещь, чем купить по любой цене :) Но и рынок опционов об этом в курсе--ухмылка волатильности--она именно ухмылка, а не симметричная улыбка. Путы дороже коллов. Существуют истеричные траектории--и рынок опционов тоже об этом в курсе: улыбка имеет минимум в районе центральных страйков. Это самые известные примеры, но есть и другие. К примеру, летом 2008 года бид на пут РТС 1600 чертовски выделялся на фоне улыбки--но рынок знал, дадада, рынок знал :) Далее, исходя из траекторного подхода, для получения эджа надо знать о траекториях цены базового актива что-то, чего не знает рынок. Пока я использую чистую интуитивщину, тут подход на уровне «изучаем инфу и делаем вывод о том, куда цена склонна или не склонна двигаться». В этом смысле реинкарнация опционики как раз и нужна для запуска интуитивщины на постоянную основу. Посмотрим, что получится.

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

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

    • 09 апреля 2017, 12:42
    • |
    • uralpro
  • Еще

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

Перевод статьи из блога Эрни Чана.

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



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

Лучшая книга об управлении портфелем из всех, какие я только видел.


Свенсен Дэвид Ф., легендарный управляющий эндаументом Йельского университета, на мой взгляд, незаслуженно мало известен  в России. Он подробно, местами слишком подробно разбирает, как должен строить свой портфель частный долгосрочный инвестор, как им управлять для того, чтобы получить качественный долгосрочный результат. 
В книге рассматривается, из каких компонент может и должен состоять портфель, какие активы стоит туда включать, а какие не стоит, как нужно ребалансировать портфель и почему. 
Ясно, что российская действительность отличается от американской и выбор активов у нас несколько иной. Но принципы анализа остаются верными и у нас. Я купил эту книгу много лет назад и с тех пор в продаже её не видел. Возможно, у кого-то есть ссылка на электронную копию. Если так, пожалуйста, выложите такую ссылку в комментарии к моему сообщению.
Секреты стабильно высокой доходности:
www.ozon.ru/context/detail/id/4136008/

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