Блог им. nosorog
Привет всем!
Для тестирования торговой стратегии, очевидно, нужна качественная история. Обсуждение тем «тест истории ничего не гарантирует» и «покупай у ММВБ тип А (https://www.moex.com/ru/orders?historicaldata) и сиди восстанавливай весь ход торгов» — оставляю за пределами этой темы.
Моя цель — трудозатратами до 1-2 «рабочих вечеров» получить более-менее качественную историю Сишки с 2012г., склеенную с учетом фактической практики моего переключения контрактов.
Как и большинство трейдеров исторические данные я качаю с Финама (юзаю свой макрос в Excel, ибо я олд-скул-программист, осваивать новые питоны — некогда).
Раньше брал финамовскую склейку, но очевидно, что это не удовлетворяет второй части моей цели, что будет снижать качество тестирования. Поэтому решил заморочиться со склейкой контрактов самостоятельно. Алгоритм то простой — обрезать у конкретных контрактов данные в момент, когда я по своей практике и переключаюсь между ними.
При этом, уже долгое время юзая финамовскую склейку, я регулярно нахожу в ней косяки — явно нереальные шипы. Бывает они длятся часами. Поэтому ради светлой цели решил восстановить свой макрос в Excel, которым некогда пробовал таскать данные по акциям через ISS с сайта ММВБ. Для меня была аксиома, что именно там — самые качественные данные. В принципе, быстрым костылем и не особо вспоминая (старый) API ISS, удалось скачать данные по контрактам сишки. Правда не с первого раза — то данные есть, то их нет, но за пару раз все скачалось.
Прим. Говорят, что есть уже новое API, но разбираться с ним мне точно сейчас не охота, это гарантированно за пределами моего бюджета времени на этот вопрос.
В общем, сделал склейку данных с ММВБ — и решил сравнить графики с Финама и с ММВБ, предвкушая наблюдение массы финамовских «шипов-козявок», а также дыр данных, ради избавления от которых, собственно говоря, и тратил свое время. Безусловно, я их увидел, но шокирован был другим — чуть ли не больше их есть на стороне ММВБ! Могет это следствие бесплатности данных, типа стимулирование покупать платный продукт. Не знаю.
Вот как это выглядит:
На верхнем графике — данные с ММВБ.
В середине — данные с Финама.
На нижнем индикаторе — простая формула: максимум из разниц между OpenММВБ и OpenФинам, HighММВБ и HighФинам и т.д. При полном совпадении свечей индикатор, очевидно, равен 0. Но на показанном примере — мы видим разницу High больше 100 пунктов!
При всем уважении к ММВБ, мне данный шип кажется нереальным. Конечно, в торговле все бывает, но не так часто. А еще — в правой части графика мы видим — дыру данных! Сам график я перед публикацией сделал более крупным, но в реальности буквально в этот же день с 14:55 там еще одна дыра, вернее дырище — аж до начала вечерней сессии!
В итоге, немного расстроенный пошел спать, но в 5 утра мой мозг снова проснулся и повел меня писать этот пост :).
Итак, коллеги, вопрос простой — есть ли идея получше, чем:
— скачать данные по каждому контракту теперь и с Финама.
— сделать быстренько сверку в Excel (можно даже формулами, но мне удобнее макросом, не суть) — и при выявлении шипа (сверх например 30 пунктов) на одном из графиков при отсутствии его на другом — тупо брать данные свечи без шипа. Допускаю, что шипы у ММВБ являются некой защитой интеллектуальной собственности (признаться, сам бы, наверное, в их ситуации делал бы так, причем индивидуально каждому клиенту — для последующей идентификации сливщика данных). Но если сделать предположение, что случайные или специальные ошибки в данных являются следствием случайной функции, то вероятность совпадения выдуманных шипов одновременно на обеих свечах — маловероятно. Ну а в случае дыр остается брать данные с Финама, естественно все же посмотрев наличие их шипов на этом участке.
Прим. Кстати, после правки шипов у ММВБ получается, что данные уже перестали быть их интеллектуальной собственностью — ведь я получил исходник бесплатно, после чего вложил свой труд в их модификацию (ровно также, как если бы я расставил свои запятые в стихах Пушкина :)
В общем, понимаю, что тема избитая, но вот захотелось мне иметь качественную историю сишки. Все же слишком много ТС у меня торгует на этом инструменте, и при всей неоднозначности самой темы тестирования, для меня очевидно, что торговать без максимально качественного тестирования и анализа — все же еще хуже. Впрочем, как я написал изначально, хотелось бы сейчас обсудить не тему бесполезности тестирования, а тему бесплатного получения качественной истории сишки приемлемыми трудозатратами.
Заранее благодарен за любую помощь!
1. Написание и чтение моих постов все-таки не 2 часа
2. К сожалению, в рабочее время мне доступен только телефон (фактически СЛ + мониторинг роботов по RDP), программировать и обрабатывать данные могу только дома.
3. Сегодня немного нетипичный день — фактически работаю офисным водителем. 90% сижу жду, а сидеть без дела оказывается неожиданно тяжко. Но с замечанием согласен — что то меня прорвало :) — спасибо! Возьму лучше листочек и набросаю скелет одной функции, которую вечером надо будет сделать.
Спасибо и удачных выходных!
Если отвечать на ваш вопрос, то примерно так:
50% — привычка пользоваться качественными материалами и инструментами. Просто чтобы потом не «перебирать движок из-за того что ради псевдоэкономии заправлялся на сомнительных заправках». У айтишников касаемо важности качества данных есть даже профессиональная пословица ( простите ) — «говно на входе — говно на выходе». В общем, когда я на графике вижу 4 часа шипов по 500 пунктов, мой мозг и все моё нутро просто отказываются как-либо анализировать такой график.
50% — если не ошибаюсь в 14м году у финама есть такая расчёска из шипов, которая добавляет к торговой системе больше 30% годовых. Запарился постоянно держать в уме этот момент.
В общем, если я могу за пару дней вычистить данные по самому активно используемому мной инструменту, то я лучше это сделаю. Здесь есть и тонкий ментальный момент. Не уверен, что смогу его кратко сформулировать, а долго писать не хочется. В общем, меня как то зацепила фраза одного из гуру компьютерного моделирования. Он сказал — «некрасиво нарисованная компьютерная модель не может работать правильно». Грубо говоря, вкладывая в свое дело душу (в хорошем смысле :), я хочу это делать в позитиве и без вони кривых данных.
Как то так.
При этом, я понял что вы хотели сказать и согласен с тем, что хорошая торговая система, ровно как и действительно хороший автомобиль, не загнется от 1% некачественный данных или топлива. Потому что помимо прочего действительно хорошая система/автомобиль должны быть готовы к такому сюрпрайзу в реальной жизни. К примеру если глюканет у крупного банка робот, твоя система не должна от этого моментально слиться со словами «а в тестах такой хрени не было». В общем, не идеально качественная пища тоже в определённом смысле полезна для выработки иммунитета. Но все хорошо в меру. Для меня липовые +30% годовых (ровно как и минус) — слишком значительное искажение. Так можно принять неверное решение при той же балансировке портфеля систем.
.
Не, я вообще не намекаю на подгонку )
Просто да, если в данных присутствуют какие-то незначительные несовпадения с абсолютно точной историей с самой биржи, это вообще ни на что существенно влиять не должно, шум он и есть шум.
почему не смотрите далее 2016-17 года?
у меня большинство алгоритмов тоже интрадей, но я недавно добавил к моделям 2015 год. И добавил бы еще и 2014, это очень интересно, но к сожалению, пока нет технической возможности. И, кстати, на 2015 результаты существенно отличаются от 2016 и 2017.
вы не поняли, я не говорю об обучении моделей. Я говорю о тесте OUS. Мне интересно поведение моего портфеля систем на данных, отличных от тех, на которых проводилось построение. Эти данные могут быть на графике как справа, так и слева. Но справа медленно, а слева быстро :)
Бинго! Я это делаю именно и только для оценки рисков.
какие же элементы оценки рисков наиболее важны?
прошлое об этом вам ничего не скажет, а к будущему доступа нет, поэтому точного ответа на этот вопрос вы не получите. Значит этот вопрос не имеет смысла.
ch5oh, за МФД спасибо — их как то не рассматривал как поставщика данных, изучу.
На ММВБ я как то уже покупал ради пробы данные — для меня их ценник слишком дорог.
К серверу ISS у меня сейчас итак бесплатное подключение. Адекватной информации о том, что дополнительного даст мне платное я не нашел. А тут как раз еще и «нежданчик» с качеством данных (не факт что на платном оно лучше, но и обратное — не факт, но при случае было бы полезно найти ответ на этот вопрос).
Разовая выкачка за пару дней — немного не то, т.к. хочется в случае необходимости иметь понятный способ обновления истории.
Пока для себя решил так:
1. потрачу пару вечеров ради научного интереса — и пойму в целом масштаб бедствия в плане искажения данных, т.к. пока смотрел только визуально. Оцифрую разницу — сколько конкретно и каких размеров искажений я вычистил. Ужас или ужас-ужас.
2. Сравню итоги тестирования своих ТС на финамовской выгрузке-склейке и на склейке моего производства. Посмотрю разницу. Если значимые искажения только в 2014 (про них я уже знаю — т.к. ранее просто тупо вырезал тот кривой день), то видимо закрою для себя вопрос и больше по нему париться не буду, если же такая ситуация будет в каждом году — дело другое.
В общем, принимать решение — стоит овчинка дальнейшей выделки (по обновлению истории) или нет буду на основании всей полученной в ходе этого небольшого исследования информации, с учетом понимания трудоемкости и выходного продукта процесса. Сколько времени потратил что мне это дало.
Спасибо за участие и ваши мысли!
Носорог, может, неправильно понял в своё время, но ISS, который бесплатный — это тестовое подключение. Чтобы попробовать и отладить свои системы. Отличие в качестве данных, понятно, лучше выяснять напрямую у техподдержки тамошней.
И по ценнику он мне показался довольно гуманным. Вы же не тики/стаканы качать планируете. Всего лишь минутки.
Но личного опыта работы с этим сервисом нет.
С уважением,