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

по

История одного фиттинга

Шел 2015-й год, лето.
С нашей командой сотрудничал один математик.
Он пришел с комплексом контртрендовых систем.
Основа — теорвер, всё в рамках случайных событий, байесовский подход и максимизация апостериорной вероятности через подгонку на прошлых данных. Всё на часовых данных.
Был представлен тест системы за несколько предыдущих лет:
История одного фиттинга















Всё было красиво, но сильно смущали два момента:
1. Контртренд.
2. Контртренд на часовиках.
3. Способ максимизации вероятности успеха по прошлым данным выглядел ну прям как очень перепереподгонка.
4. Отсутствие у математика (автора данной стратегии) хотя бы одной сделки на реальном счете по системе.
Заглядывания в будущее не было, сделок в гэпах и прочей неторгуемой мути не было — это я сам проверил.

Эту систему мы начали программировать и вести виртуальный учет сделок. Прошло два месяца, система была запрограммирована, мы посмотрели на эквити и она «сломалась» прямо сразу на новых данных:

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

Набросок конспекта лекции про оверфиттинг - полезно всем

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

Можно часто слышать от тех, кто торгует алгоритмически, да и просто систематически, такие понятия как «оверфиттинг», «курвафиттинг», «зафит» и прочие ругательства с корнем «фит». Что все это значит?
На самом деле, все эти слова, как правило, используются для описания одного и того же явления, являющегося врагом всех трейдеров, торгующих систематически и пытающихся оценить исторический перформанс своих торговых логик — а именно, что «живой» аут-оф-сампл перформанс на реальном счете, как правило, хуже ожиданий, полученных ими при проверке своих идей на истории. Например, при тестировании торговой логики на истории трейдер с помощью своей модели «зарабатывал» 30% годовых, а в реале может в среднем иметь 10% годовых. Разница 20% годовых — может объясняться именно оверфиттингом (если нет других факторов — например, некорректный учет комиссионных и проскальзываний, или ошибка в торговом коде; но прочие факторы легко устранить, в отличие от оверфиттинга). На картинке в начале статьи — пример перформанса некоторого фонда в бэктесте и в реальности, наглядно иллюстрирующий написанное выше.

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



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

Бредни (про) сетки, неводы, волатильность и шаг рехеджа.

Принято считать, что на большом периоде шаг\периодичность рехеджа купленного\проданного стрэддла не оказывает влияния на общий финансовый результат. Причины этого убеждения понятны, и, казалось бы, можно расслабиться и «выравнивать» свои позиции как Бог на душу положит. Однако, уже достаточно давно, на базовых активах самых ликвидных наших опционных контрактов я замечаю достаточно устойчивую особенность: реализуемая волатильность при малых (по цене) шагах рехеджа оказывается существенно ниже реализуемой волатильности при большом шаге. 

Два свежих примера.
Допустим, мы купили (продали) стрэддл Ri на центральном страйке 3 месяца назад, затем рехеджили его с разными шагами (по БА). Тогда зависимость реализованной в результате волатильности от шага рехеджа выглядит так:
Бредни (про) сетки, неводы, волатильность и шаг рехеджа.

Мелкий шаг рехеджа «отбил» бы нам покупку стрэддла примерно по 19% IV, но шаг в 13000 пунктов реализовал бы уже IV около 40%.

Точно такой же пример, но со стрэддлом полуторамесячной давности дает следующую картинку:

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

алго - мои мультитикеры

Всем привет, что-то маловато мотивации в последнее время улучшать ботов, итак всё неплохо.
А как можно улучшить мотивацию? Спалить пару своих фишек, тогда придётся придумывать новые. Вроде неплохой метод, да?
Не секрет что я использую в алготрейдинге 4 тикера. Си, еу, ртс, сбер. Маловато, да?
Основная причина это эффективность рынков, то что слишком много торгуется западными фондами — там меньше неэффективностей.
Поэтому я бросил попытки торговать золотом, брентом, евробаксом и перестал искать системы для них.
Из той же оперы вся Америка, все исследования квантов в основном про Америку, конкуренция жёсткая...
Я всегда это понимал интуитивно, и впоследствии тесты это подтвердили.
Также я бросил торговать малоликвидными тикерами, поэтому осталось 4 тикера, но не всё так плохо.


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

Выложил исходники торгового терминала RTS-Robot в открытый доступ.

    • 06 января 2018, 05:07
    • |
    • pmus
  • Еще

Выложил исходники торгового терминала RTS-Robot в открытый доступ.

Итак, как я и обещал, исходники торгового терминала RTS-Robot версии 1.0 выложены на GitHub!

Напоминаю, что язык программирования — Python 2.7, брокер — Финам, коннектор — Transaq XML Connector. (в том числе и Transaq HFT)

Что умеет:


  • Возможность 10-мс подключения.
  • Встроенный Python
  • Использование сколь угодно большого количества памяти системы в скриптах
  • Многопоточность и утилизация всех ядер процессора
  • API для создания сколь угодно сложных систем и их связок
  • Создание по двойному щелчку «снимков» любых таблиц в формате Excel (на память)
  • Индикатор баланса стакана
  • Экономный жор памяти (получилось порядка 150 мегабайт)
  • Нормальная работа под Linux


Выложенное решение имеет некоторые ограничения, а именно:

— Упрощенный код, многое из «планов на будущее» отключено и/или убрано.
— Торговые алгоритмы работают только с одной бумагой. (несложно доделывается.)
— Коннектор только один
— Бесплатной поддержки нет и не будет (мне работать надо!)
— Короткий документ о том, «как это всё собрать и заставить работать» если напишу, то позже
— Сайт проекта обновлю позже, сейчас нет времени заниматься.

В остальном же — это работающий торговый терминал, запускаемый как под Windows, так и под Wine.

Будьте осторожны. Нужны специальные знания и навыки профессионального программиста.



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

Размещение свободных остатков юридических лиц в овернайт по рыночным ставкам (и через выходные тоже)...

Как известно, Биржа уже давно работает в праздники и участники рынка размещают средства на Денежном рынке.

Для крупных корпоратов Биржа создала сервис Депозиты с Центральным Контрагентом (ЦК).
Т.е. прямое размещение депозитов в ЦК для компаний, не имеющих лицензию профессионального участника рынка ценных бумаг

По сути, корпорат размещает свои средства через «стакан» с 10:00 до 19:00 по рыночным ценам: 
Размещение свободных остатков юридических лиц в овернайт по рыночным ставкам (и через выходные тоже)...

При этом, надо понимать, что это Денежный рынок, а значит необходимо мониторить показатели ликвидности банковского сектора, чтобы размещать средства по более выгодной ставке:

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

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

Модель инвестиций в акции с опционным привкусом.

          Нет, нет. Я не планирую становиться инвестором в акции, мне по прежнему больше по нраву деятельность опционного спекулянта. В этом топике я попробую показать, как простые нелинейные приемы могут сэкономить нервы (и, в конечном счете, принести дополнительные деньги) последователям стратегии купил/держи. Все нижеизложенное представляет собой не более чем шаблон, однако, после некоторой дополнительной обработки, вполне может быть применено (и применялось) на практике. На оригинальность идеи тоже претендовать не приходится. Подобные подходы применяются часто. Однако, систематизация и визуализация применяемого подхода никогда никому не мешала.
          Итак. Допустим, мы находимся на идеальном рынке. Ликвидность абсолютна, торги непрерывны, никаких проскальзываний и комиссий в природе не существует. Что такое позиция «шорт» мы не слышали и слышать не хотим. Из каких то соображений мы решили инвестировать сумму в 1 000 000 рублей в акции с текущей стомостью 100 рублей. (Здесь и далее все числовые значения условны, легко заменяются переменными и используются для построения конкретных примеров). 

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

Послеторговый аукцион закрытия – как это понимать

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

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

В 18:40 заканчивается торговый период сессии и проходит его последняя сделка.

Наступает аукцион закрытия, который идет 10 минут.

Первые пять минут – до 18:45 – происходит аукционное определение цены закрытия сессии, и еще 5 минут по этой и только по этой цене могут пройти дополнительные сделки.

Послеторговый аукцион закрытия – как это понимать
Как это происходит

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

В стакане становятся видны те заявки, которые попадают в 10-ку лучших заявок на продажу и покупку соответственно, остальные заявки не отражаются.



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

Питон для торговой системы - есть вопросы

Использую торговую систему, реализованную на базе Excel. Возникла идея, изучить Питон и переписать системку на его основе. В связи с этим пару вопросов:

  1. Посоветуйте дельную книжку с начальным курсом по Питону
  2. Посоветуйте дельную книжку по статанализу данных с помощью Питона

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

Quik. Индикатор корреляции

    • 02 ноября 2017, 16:21
    • |
    • Karim
  • Еще
Написал на досуге по просьбе одного из участников смартлаба индикатор корреляции.
Индикатор простенький, считает коэффициент корреляции Пирсона
для двух выбранных инструментов на заданном таймфрейме.
Выкладываю исходный код. Может кому то пригодится.

Settings= 
{ 
Name = "Piton", 
N = 100,
legend = "price2",
line = 
	{ 
		{ Name = "Sint", 
		  Color = RGB(0, 132, 0), 
		  Type = TYPE_LINE, 
		  Width = 1 
		}		
	} 
} 

function Init() 
return 1
end 

Candles = {};


function OnCalculate(index) 
	local numCandles = getNumCandles(Settings.legend);
	if index <= Settings.N or numCandles <= Settings.N then
		return nil;
	end
	
	Candles, n, _ = getCandlesByIndex(Settings.legend, 0, index - Settings.N, Settings.N);
	if n ~= Settings.N then
        return nil;
    end
	
	-- Предварительный расчет
	sum1, sum2, sum3 = advancePaynemt(index);
	
	-- расчет коэффициента корреляции Пирсона
	r = sum3/math.sqrt(sum1*sum2);
	
	return r;
end

--  Предварительный расчет
----------------------------------------
function advancePaynemt(index)	
	local sum1 = 0;
	local sum2 = 0;	
	local sum3 = 0;
	local j    = 0;
	
	--  Вычислить среднее арифметическое
	for i=index - Settings.N + 1, index, 1 do
		sum1 = sum1 + C(i);			
		sum2 = sum2 + Candles[j].close;
		j = j + 1;
	end
	aver1 = sum1/Settings.N;
	aver2 = sum2/Settings.N;
	
	-- Вычислить сумму квадратов отклонений
	sum1 = 0;
	sum2 = 0;
	j 	 = 0;
	for i=index - Settings.N+1, index, 1 do
		sum1 = sum1 + math.pow(C(i) - aver1, 2);
		sum2 = sum2 + math.pow(Candles[j].close - aver2, 2);
		j = j + 1;
	end
	
	--  Вычислить сумму произведений разности
	j=0;
	for i=index - Settings.N+1, index, 1 do
		sum3 = sum3 + (aver1 - C(i))*(aver2 - Candles[j].close);
		j = j + 1;
	end
	
	return sum1, sum2, sum3;
end

Как запустить и настроить:


Архив исходника на QLua: https://yadi.sk/d/OxDvAekV3PLn2z
  • обсудить на форуме:
  • QUIK

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