Избранное трейдера Максим

по

Тест стратегии с мелочами и аномалиями.

Продолжение.

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

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

Cознательно выбран тест Si, ходившего в небольшом диапазоне, вместо традиционного RI.

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

Первая модернизация — добавление алгоритма, распознающего разные ситуации, ведь люди ведут себя в зависимости от наблюдаемого. Первые варианты использовали только относительно простой подсчет амплитуд и касаний, но на момент тестирования (2014) получалось программно различать более десятка типов уровней, с весьма тонкими различиями. Самое грубое деление на «плохие и хорошие» немедленно перевело систему в доходные и резко уменьшило чувствительность к оптимизации.

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

QUIK: Бенчмарк ОФЗ к ставке ЦБ

    Может кому будет интересен скрипт на QLUA, который выступает простым бенчмарком ОФЗ с постоянным купоном к ставке ЦБ.
Основные параметры доходность и премия к ставке ЦБ, с учетом дюрации.
Скрипт не работает онлайн (оперативность тут не принципиальна), при запуске собирает параметры в таблицу и выводит на экран.
В дальнейшем планируется эти данные использовать для анализа премии доходности по дюрации для муниципальных и корпоративных облигаций к ОФЗ.

QUIK: Бенчмарк ОФЗ к ставке ЦБ


    Код скрипта на github (на github две версии одна в utf-8 для просмотра и основная версия в win1251, т.к. quik понимает только его):
github.com/trantor77/lua_scripts/boundsOFZ.lua

    Код скрипта:
--переменные
keyRateCB = 7.5
classCode = "TQOB"

function CreateTable()
    t_id = AllocTable()
    AddColumn(t_id, 0, "Бумага", true, QTABLE_STRING_TYPE, 15)
    AddColumn(t_id, 1, "Цена", true, QTABLE_DOUBLE_TYPE, 15)
    AddColumn(t_id, 2, "Доходность, %", true, QTABLE_DOUBLE_TYPE, 15)
    AddColumn(t_id, 3, "Дюрация, лет", true, QTABLE_DOUBLE_TYPE, 15)
    AddColumn(t_id, 4, "Купон, %", true, QTABLE_DOUBLE_TYPE, 15)
    AddColumn(t_id, 5, "Премия к ЦБ, бп", true, QTABLE_INT_TYPE, 15)
    AddColumn(t_id, 6, "Погашение", true, QTABLE_STRING_TYPE, 15)
    t = CreateWindow(t_id)
    SetWindowCaption(t_id, "ОФЗ")
end

function string.split(str, sep)
    local fields = {}
    str:gsub(string.format("([^%s]+)", sep), function(f_c) fields[#fields + 1] = f_c end)
    return fields
end

function getParamNumber(code, param)
    return tonumber(getParamEx(classCode, code, param).param_value)
end

function formatData(prm)
    return string.format("%02d.%02d.%04d", prm%100, (prm%10000)/100, prm/10000)
end

CreateTable()

arr = {}
sec_list = getClassSecurities(classCode)
sec_listTable = string.split(sec_list, ',')
j = 0
for i = 1, #sec_listTable do
    secCode = sec_listTable[i]
    securityInfo = getSecurityInfo(classCode, secCode)
    short_name = securityInfo.short_name
    if short_name:find("ОФЗ 26") ~= nil then
        j = j + 1
        r = {}
        r["short_name"] = short_name
        r["price"] = getParamNumber(securityInfo.code, "PREVPRICE")
        r["yield"] = getParamNumber(securityInfo.code, "YIELD")
        r["duration"] = getParamNumber(securityInfo.code, "DURATION")/365
        couponvalue = getParamNumber(securityInfo.code, "COUPONVALUE")
        couponperiod = getParamNumber(securityInfo.code, "COUPONPERIOD")
        r["coupon"] = ((365/couponperiod) * couponvalue)/10
        r["bonus"] = (r["yield"] - keyRateCB)*100
        r["mat_date"] = getParamNumber(securityInfo.code, "MAT_DATE")
        table.insert(arr, j, r)
    end
end

table.sort(arr, function(a,b) return a["duration"] < b["duration"] end)

for j = 1, #arr do
    row = InsertRow(t_id, -1)
    SetCell(t_id, row, 0, arr[j]["short_name"])
    price = arr[j]["price"]
    SetCell(t_id, row, 1, string.format("%.2f", price), price)
    yield = arr[j]["yield"]
    SetCell(t_id, row, 2, string.format("%.2f", yield), yield)
    duration = arr[j]["duration"]
    SetCell(t_id, row, 3, string.format("%.2f", duration), duration)
    coupon = arr[j]["coupon"]
    SetCell(t_id, row, 4, string.format("%.2f", coupon), coupon)
    bonus = arr[j]["bonus"]
    SetCell(t_id, row, 5, string.format("%.0f", bonus), bonus)
    mat_date = arr[j]["mat_date"]
    SetCell(t_id, row, 6, formatData(mat_date), mat_date)
end
  • обсудить на форуме:
  • Quik Lua

Обзор НМТП - супер актив, но можно подождать цены пониже

Решил написать обзор по компании НМТП — крупнейшей портовой группе в РФ.

Сразу скажу, какой-то особой инвестиционной идеи я здесь пока не вижу, не смотря на то, что НМТП — это первоклассный актив. Я предпочитаю подождать и буду покупать эту акцию, если цены еще ощутимо припадут (с пика 2017 г. они упали уже на треть). На уровне ~5 руб., например, этот актив будет выглядеть уже очень привлекательно. Пока я потихоньку покупаю Интер РАО (инвест идею писал раньше)

Саммари по НМТП

1) Порт развивается, финпоказатели растут, он не такой дешевый как в 2015-2016 гг., но нельзя сказать что дорогой. Еще немного снижения и актив будет оценен очень привлекательно, возможно куплю его вместо НКХП (но только после дополнительного падения)

2) Транснефть купила 25% с существенной премией к рынку и стала контролирующим акционером. Очевидно, что ей не интересны ненефтяные сегменты порта (непрофильный бизнес), поэтому тут может быть какая-то сделка в будущем (в т.ч. спин офф?).



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

О «теореме Ферма» теории вероятностей или о нормальности «бытия» (много буков)

    • 16 октября 2018, 16:41
    • |
    • А. Г.
      Популярный автор
  • Еще

Не подумайте плохого в части нормальности, речь пойдет не о психиатрии, а об известном в теории вероятностей нормальном распределении

 О «теореме Ферма» теории вероятностей или о нормальности «бытия» (много буков)
 

А точнее даже не о нем самом, а об известной центральной предельной теореме (ЦПТ) применительно к ценам.  Что такое центральная предельная теорема в ее классическом виде?

Пусть нам дана некоторая сумма большого числа случайных величин Х=х1+…+хN где каждое слагаемое имеет конечную и ненулевую дисперсию (как мы увидим далее в приложении к ценам это условие выполняется). Человечество давно еще с 18 века (Муавр и Лаплас) заинтересовал вопрос распределения случайной величины Х или хотя бы его более-менее точного приближения.

Не будем слишком строги в определениях всяких сходимостей и их скоростей, а сформулируем классическую  ЦПТ в виде интуитивно понятного, но нестрогого термина «близости». Так вот, если xi – независимы (кто хочет может посмотреть строгое определение независимости, а для менее пытливых скажу только, что корреляция двух независимых случайных величин с конечными дисперсиями – нуль, хотя и обратное не верно), то распределение Х при достаточно больших N практически не отличается от нормального распределения со средним А и дисперсией D, где А – сумма средних x



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

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

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

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

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

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

Поступила информация, что население смартлаба за последние годы несколько обновилось, и кому-то может оказаться полезным узнать как можно просрать миллиарды на опционах, как можно на салфетках объяснить опционы гуманитарию или как написать робота, который с капиталом 3 млн р держал 15% объемов торгов в опционах RI. В общем иногда полезно перечитывать хорошо забытое старое (сейчас даже сам удивляюсь, как это меня хватило на все это буквосложение)



Гном. Или как трейдер обанкротил банк.

Глава первая и вторая

Глава третья и четвертая

Глава пятая и шестая


Гном 2. Возвращение.

Глава первая

Глава вторая и третья

Глава четвертая и пятая

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

Как обогнать индекс (пример выигрышной торговой стратегии)

    • 15 октября 2018, 09:37
    • |
    • AlexChi
  • Еще

Как обогнать индекс (пример выигрышной торговой стратегии)

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



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

График выплат и погашений ОФЗ в наглядной форме

Недавно интересовались графиком выплат / погашений ОФЗ в наглядной форме. Например, это может понадобиться при построении облигационного портфеля с определенным графиком поступлений. Их есть у меня.

Для начала разберемся с погашениями:

График выплат и погашений ОФЗ в наглядной форме

Зеленым обозначены ОФЗ с фиксированным номиналом и купоном
Желтым — бумаги с переменным купоном
Оранжевым — облигации с индексируемым номиналом (ОФЗ-ИН)
Синим — с амортизируемым номиналом ОФЗ-АД

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

Теперь определимся с купонами. Вот:

График выплат и погашений ОФЗ в наглядной форме

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

То, что не успел сказать на конференции из-за лимита времени

    • 08 октября 2018, 12:41
    • |
    • А. Г.
      Популярный автор
  • Еще
Я не противник «инвестора» в моем определении:

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

Если б я был противником, то  не создал бы  «Русского Баффета»

То, что не успел сказать на конференции из-за лимита времени

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

Я только хотел предупредить, что в падающие годы никакой анализ не спасет «инвестора» (в моем определении) от больших потерь, а «плечи» вообще «убьют». И в последнем случае «спекулянт» с разумными «плечами» (!) находится в более выигрышном положении. Впрочем, последнюю мысль я вроде раскрыл в докладе.

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


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