S# 4.2.3.4 ошибки в работе historyemulator
Atom Ответить
17.05.2014


Тиковая история, импортированная из рейтерса, S# 4.2.3.4 - при бэктестинге вылазят вот такие вот баги: http://gyazo.com/1fb882dd0a0df11e31ac31d1eaf4c0dd
S# проводит сделки по несуществующим ценам. На версии 4.2.2.16 было все нормально

Также появилось ощущение, что на новой версии сильно возросло проскальзывание - проходит сигнал на вход/выход из позиции, а реальный execution проходит совсем по другим ценам



Спасибо:




44 Ответов
1 2  >
devruss

Фотография
Курсы
Дата: 17.05.2014
Ответить


Также, начиная с версии 4.2.3.xxx на графике PnL постоянно появляются непонятные выбросы (spikes):
http://gyazo.com/3bd1a5cf9f1025018d84d8c9f764fcd1

На версиях 4.2.2.xxx такого не было
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 17.05.2014
Ответить


SampleHistoryTesting на тиках:

Спасибо:

devruss

Фотография
Курсы
Дата: 18.05.2014
Ответить


На истории, записанной Гидрой все ок. Проблемы возникают на истории, импортированной из csv в Гидру через "импорт сделок". Попробуй запустить тот же самый пример, но на данных, скачанных с сайта finam или mfd и импортированных в гидру.

P.S. По поводу твоего скриншота. Насколько я помню sampleSMA стратегию - она покупает при пересечении цены SMA вверх, и продает при пересечении вниз, так? Посмотри на четвертую сделку после 11:50 на графике. Должна была быть продажа сразу после пересечения - посмотри на реальный execution - там slippage пунктов в 10.
Теперь если использовать пробойные стратегии - на новый min или max, то возникают картинки как в моем скриншоте.
Автор топика
Спасибо:

devruss

Фотография
Курсы
Дата: 20.05.2014
Ответить


По поводу спайков - они возникают в момент открытия позиций. В некоторых случаях S# при открытии позиций маркикует ее по каким-то случайным ценам и получается очень большой мгновенный позицивный или негативный pnl - естественно, при закрытии позиций, все выравнивается - отсюда и спайк.

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

Пример:
http://gyazo.com/c089e4108b5719798fbcadc8f8b88810
Чтобы не палить стратегии, сорри за очень маленьких скриншот:
- верхний график это цена актива и стрелки показывают execution
- второй снизу график (синий) - это график PnL.

Видно, как возникает большой спайк - при продаже, потом при закрытии (покупке) PnL выравнивается. Так как PnL данного трейда по отношени к PnL всей стратегии не такой большой, то и реальный realized pnl не дает такого уж большого прироста. Но при этом спайк реально огромный. Данных спайк повотяется на каждом прогоне в одном и том же месте
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 20.05.2014
Ответить


devruss Перейти
По поводу спайков


SampleHistoryTesting - работает нормально.
Спасибо:

devruss

Фотография
Курсы
Дата: 20.05.2014
Ответить


devruss Перейти
Проблемы возникают на истории, импортированной из csv в Гидру через "импорт сделок". Попробуй запустить тот же самый пример, но на данных, скачанных с сайта finam или mfd и импортированных в гидру.


Михаил, хочу напомнить, что твой продукт называется S#, а не Sample Library. То, что примеры работают нормально, говорит только о том, что примеры работают нормально. Вот реальная живая ситуация, давай ее решать. Переход с ветки 4.2.2.xxx на 4.2.3.xxx привел к этим проблеммам - код идентичный. Напомню, что откатиться назад нельзя, так как база гидры обновилась и старая ветка не видит всю историю, записанную новой гидрой.

Ты отбиваешься от баг репортов как только можешь, а потом отрицаешь проблемы до последнего, даже когда есть скриншоты и точные описание проблем. Таким темпом вместо того, чтобы развивать свой продукт и делать его лучше, ты просто из очень классного, но все еще сыроватого продукта, деградируешь продукт до состояния, когда пользоваться будут только программеры и нубы трейдеры, гоняющие роботов на 1 фьюч РТС.

Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 20.05.2014
Ответить


devruss Перейти

Ты отбиваешься от баг репортов как только можешь, а потом отрицаешь проблемы до последнего,


Странное заявление. А зачем тогда этот форум, если не для баг репортинга?

Вернемся к тебе. Как мне проверять? Логичнее было бы сделать step-by-step проверку тебе. Эмулятор работает в одном потоке, поэтому все детерминированно. Возможно всплекс идет и из-за данных. Может из-за эмулятора. Сейчас это не баг репорт. Это предложение погадать о том, где проблема.
Спасибо:

devruss

Фотография
Курсы
Дата: 21.05.2014
Ответить


Михаил Сухов Перейти

Логичнее было бы сделать step-by-step проверку тебе.


Ок.

Инструмент - SiM4, данные записаны Гидрой вживую, никаких артефактов нет.

Код

04/04/2014 11:22:32 0 position, 6 PnL, 36039 Price
Avg Entry price 36,037 on -4 volume
04/04/2014 11:22:33 -4 position, -1526 PnL, 36039 Price
04/04/2014 11:22:33 -4 position, -1526 PnL, 36039 Price
....
04/04/2014 11:23:17 -4 position, -1526 PnL, 36038 Price
04/04/2014 11:23:17 -4 position, -1526 PnL, 36038 Price
04/04/2014 11:23:19 -4 position, 2 PnL, 36040 Price
04/04/2014 11:23:19 -4 position, 2 PnL, 36040 Price



Данные тиковые, никаких всплесов не было. Проблема в PnL Manager. Я так понял, он теперь начал делать mark-to-market PnL открытых позиций, но только в определенные моменты он делает это неправильно. Такая картина повторяется при каждом прогоне стратегии.

Заметь: произошло изменение позиции, при этом цена не поменялась. Если я продал 4 контракта по цене 36039 и цена осталась той же, то мой PnL не изменился (ну совсем по честному, то изменился, так как short маркировать надо по offer, но если маркировать по тикам, то не изменился).

Глубже, чем данный report я посмотреть уже не могу. Проблема внутри PnL Manager
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 21.05.2014
Ответить


devruss Перейти
Я так понял, он теперь начал делать mark-to-market PnL открытых позиций, но только в определенные моменты он делает это неправильно.


Значит на рынке в какой-то момент есть неправильная цена. Можно вывесли в лог текущие цены инструмента?
Спасибо:

devruss

Фотография
Курсы
Дата: 21.05.2014
Ответить


Михаил Сухов Перейти
devruss Перейти
Я так понял, он теперь начал делать mark-to-market PnL открытых позиций, но только в определенные моменты он делает это неправильно.


Значит на рынке в какой-то момент есть неправильная цена. Можно вывесли в лог текущие цены инструмента?


Так я и вывел потиковое изменение цены с момента открытия позиции. Там цена не менялась вообще! Более того, чтобы была неправильная цена на USD/RUB фьючерсе в 1500 пунктов?
Еще раз повторю - я препроверил все 5 раз: на 4.2.2.xxx тот же самые код, на тех же самых данных все правильно показывает, а на 4.2.3.xxx уже нет.

И еще один момент - если посмотришь на последние значения перед тем как PnL выправился, там как раз цена изменилась, а вот PnL нет. Короче что-то не так с тем, как реализован метод mark-to-market PnL.
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 21.05.2014
Ответить


devruss Перейти

Так я и вывел потиковое изменение цены с момента открытия позиции.


Не тики, а значения в стакане (лучшая пара). И еще неплохо бы вывести стоимость пункта.
Спасибо:

devruss

Фотография
Курсы
Дата: 22.05.2014
Ответить


Я конечно могу еще раз запустить бэктестинг на этот пример, но ты реально думаешь, что на фьючерсе на USD/RUB у тебя может быть bid/ask spread в стакане на 1500 пунктов?! Стоимость пункта = 1. Если бы стоимость была неправильная, то такая ситуация повторялась бы *каждый* раз, а не иногда.

Автор топика
Спасибо:

devruss

Фотография
Курсы
Дата: 22.05.2014
Ответить


Вот лог с нового прогона стратегии - прогон новый, но временные сигнатуры совпадают вплоть до секунд

Код

04/04/2014 11:22:32 0 position, -3 PnL, 36039 Price, Бид 36037 42 Bid, Оффер 36042 27 Ask 
Avg Entry price 36,037 on -4 volume
04/04/2014 11:22:33 -4 position, -1535 PnL, 36039 Price, Бид 36037 42 Bid, Оффер 36042 27 Ask 
04/04/2014 11:22:33 -4 position, -1535 PnL, 36039 Price, Бид 36037 38 Bid, Оффер 36042 27 Ask 
04/04/2014 11:22:33 -4 position, -1535 PnL, 36037 Price, Бид 36037 38 Bid, Оффер 36042 27 Ask 
04/04/2014 11:22:33 -4 position, -1535 PnL, 36037 Price, Бид 36037 38 Bid, Оффер 36037 8 Ask 
04/04/2014 11:22:33 -4 position, -1535 PnL, 36039 Price, Бид 36037 38 Bid, Оффер 36037 10 Ask 
....
04/04/2014 11:23:17 -4 position, -1535 PnL, 36040 Price, Бид 36038 5 Bid, Оффер 36041 31 Ask 
04/04/2014 11:23:17 -4 position, -1535 PnL, 36038 Price, Бид 36038 5 Bid, Оффер 36041 31 Ask 
04/04/2014 11:23:17 -4 position, -1535 PnL, 36038 Price, Бид 36038 5 Bid, Оффер 36038 1 Ask 
04/04/2014 11:23:19 -4 position, -7 PnL, 36040 Price, Бид 36038 5 Bid, Оффер 36038 3 Ask 
04/04/2014 11:23:19 -4 position, -7 PnL, 36040 Price, Бид 36038 5 Bid, Оффер 36041 31 Ask 


Обрати внимание, что неправильная оценка PnL возниает сразу же после трейда. При этом ни цена, ни bid/ask не поменялись.
Надеюсь, теперь убедил, что проблема в реализации PnL manager?
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 23.05.2014
Ответить


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

По PnLManager. Скачки в PnL могут быть только из-за нереализованной прибыли. Она основывается на рыночных ценах. Пока не могу понять где же ошибка. Можно в лог еще добавить 2 параметра? PnLManager (PnL и RealizedPnL). Чтобы точно удостоверится, что ошибка в PnL расчете.
Спасибо:

devruss

Фотография
Курсы
Дата: 23.05.2014
Ответить


Код

04/04/2014 11:22:32 0 position, -3 PnL, 36039 Price, Бид 36037 42, Оффер 36042 27, PnL: -3, Realized PnL: -3
Avg Entry price 36,037 on -4 volume
04/04/2014 11:22:33 -4 position, -1535 PnL, 36039 Price, Бид 36037 42, Оффер 36042 27, PnL: -1535, Realized PnL: -3
04/04/2014 11:22:33 -4 position, -1535 PnL, 36039 Price, Бид 36037 38, Оффер 36042 27, PnL: -1535, Realized PnL: -3
...
04/04/2014 11:23:17 -4 position, -1535 PnL, 36038 Price, Бид 36038 5, Оффер 36038 1, PnL: -1535, Realized PnL: -3
04/04/2014 11:23:19 -4 position, -7 PnL, 36040 Price, Бид 36038 5, Оффер 36038 3, PnL: -7, Realized PnL: -3
04/04/2014 11:23:19 -4 position, -7 PnL, 36040 Price, Бид 36038 5, Оффер 36041 31, PnL: -7, Realized PnL: -3
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 23.05.2014
Ответить


devruss Перейти
Код

04/04/2014 11:23:17 -4 position, -1535 PnL, 36038 Price, Бид 36038 5, Оффер 36038 1, PnL: -1535, Realized PnL: -3
04/04/2014 11:23:19 -4 position, -7 PnL, 36040 Price, Бид 36038 5, Оффер 36038 3, PnL: -7, Realized PnL: -3


А что происходит между этими строчками?
Спасибо:

devruss

Фотография
Курсы
Дата: 23.05.2014
Ответить


абсолютно ничего. Может там внури PnLManager таймер какой-то срабатывает, что он пересчитывает позицию... но точно также себя ведут все спайки без исключения
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 23.05.2014
Ответить


devruss Перейти
абсолютно ничего.


Тогда надо в момент, когда произошел спайк, как-то вывести в лог состояние объекта Strategy.PnLManager. Он внутри себя имеет поля, и нужно добраться до всех внутренних полей. Проще было бы открыть его в Debug студии, и сделать скрин.
Спасибо:

devruss

Фотография
Курсы
Дата: 24.05.2014
Ответить


Это уже выше моих навыков программирования. Давай на неделе в skype спишемся, в реальном времени все сделаем
Автор топика
Спасибо:

devruss

Фотография
Курсы
Дата: 27.05.2014
Ответить


Ок, проблема была найдена и локализована. PnL Manager при открытии новой позиции, маркирует ее по последней закрытой сделке, а потом через 1 мин обновляет по текущим ценам.
Автор топика
Спасибо:

topic959

Фотография
Дата: 03.06.2014
Ответить


devruss Перейти
Ок, проблема была найдена и локализована. PnL Manager при открытии новой позиции, маркирует ее по последней закрытой сделке, а потом через 1 мин обновляет по текущим ценам.


Привет! А можно чуть более подробное описание проблемы? И какое решение применили?
Спасибо:

devruss

Фотография
Курсы
Дата: 03.06.2014
Ответить


topic959 Перейти
devruss Перейти
Ок, проблема была найдена и локализована. PnL Manager при открытии новой позиции, маркирует ее по последней закрытой сделке, а потом через 1 мин обновляет по текущим ценам.


Привет! А можно чуть более подробное описание проблемы? И какое решение применили?


Описание проблемы было лучше всего видно на скриншотах: PnL Manager неверно рассчитывал нереализованный PnL - были spikes.
Суть проблемы:
devruss Перейти
PnL Manager при открытии новой позиции, маркирует ее по последней закрытой сделке


Решение:
PnL Manager при открытии новой позиции, маркирует ее по цене открытия сделки
Автор топика
Спасибо:

devruss

Фотография
Курсы
Дата: 16.07.2014
Ответить


devruss Перейти
Тиковая история, импортированная из рейтерса, S# 4.2.3.4 - при бэктестинге вылазят вот такие вот баги: https://gyazo.com/1fb882dd0a0df11e31ac31d1eaf4c0dd
S# проводит сделки по несуществующим ценам. На версии 4.2.2.16 было все нормально

Также появилось ощущение, что на новой версии сильно возросло проскальзывание - проходит сигнал на вход/выход из позиции, а реальный execution проходит совсем по другим ценам


Ошибки с трейдами по несуществующим ценам остались:
Тиковая история из рейтерса, заново импортированная http://gyazo.com/3efbdaba16f50d093c75f553437b29d1
Автор топика
Спасибо:

devruss

Фотография
Курсы
Дата: 16.07.2014
Ответить


еще скриншоты - объемы проходят по свечкам, но сделки все равно сильно мимо рынка
http://gyazo.com/275e265c6aae6a33487ff4421cae1a45
Автор топика
Спасибо:

devruss

Фотография
Курсы
Дата: 16.07.2014
Ответить


По просьбе Михаила добавлю: все ордера "по-рынку", т.е. лимитки с далекой от рынка ценой... триггер на срабатываение ордера - какое-то событие, после чего выставляется ордер "по-рынку".
Если надо выложить какие-нибудь логи - говорите что, выложу
Автор топика
Спасибо:
1 2  >

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

loading
clippy