Сомнения в валидности маркет данных
Atom Ответить
14.09.2012


Качаю маркет данные со смарта.
Простая стратегия

дает следующий график доходности (см прикрепленный файл).
Подскажите, пожалуйста, куда посмотреть, чтобы поправить маркет данные?
Capture.PNG 115 KB (0)



Спасибо:




20 Ответов
pyhta4og

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


я бы начал с того что в стратегии написал проверку
if(Strategy.BestBid.Price=0 || Strategy.BestAsk.Price=0||Strategy.LastTrade.Price=0||
Depth.BestBid.Price=0||Depth.BestAsk.Price=0 || Abs(BestAsk-LastTrade)>много || (BestBid-LastTrade)>много
|| Abs(nextTrade-LastTrade)>много)

где nextTrade - пришедшая сделка, Depth - пришедший стакан.

Это позволит выяснить не было ли действительно кривых данных записано.

Еще вариант - поставить брекпойнт в Strategy.PnLChanged и от туда раскручивать - если PnL стал сильно маленьким, посмотреть по коллстаку на наличие аргументов Trade, Depth с маленькими значениями

Hope it helps.
Спасибо:

vk37

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


Добавил брейкпоинт и логгирование в стратегию:

Лог до брейкпоинта:

Лог после брейкпоинта:

Причина, похоже в том, что на какой-то момент у Security BestBid и BestAsk равны null
Автор топика
Спасибо:

Alexander

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


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

vk37

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


Все 5 ошибок на графике до 12:00 )
Автор топика
Спасибо:

Mikhail Sukhov

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


vk37 Перейти
Все 5 ошибок на графике до 12:00 )


А что в самих данных?
Спасибо:

vk37

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


А где посмотреть? Что перебрать? )
Автор топика
Спасибо:

Mikhail Sukhov

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


vk37 Перейти
А где посмотреть? Что перебрать? )


На диске. Данные.
Спасибо:

vk37

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


Провереть SecurityChanges на предмет Security.BestAsk == null и Security.BestBid == null?
Автор топика
Спасибо:

vk37

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


Проверил все сохраненные MarketDepths. Не нашел ни одного со значениями BestBid == null или BestAsk == null. В стратегии на событии MarketDepthChanged, судя по логу, такие появляются:
Код
2012.09.10 10:36:33.288|       |MDS_RIU2@RTS_test account|depth.LastChangeTime: 2012-09-10T10:36:33.0180000, depth.BestBid: null, depth.BestAsk: null, Security.BestBid: 146900, Security.BestAsk: 146910, Security.LastTrade: null

Думаю, ошибка не в данных.
Проверял так:
Код
                    var marketDepthStorage = _storageRegistry.GetMarketDepthStorage(security, _defaultDrive);
                    var marketDepths = marketDepthStorage.Load(_targetTime.Date);

                    foreach (var depth in marketDepths)
                    {
                        if (depth.BestBid == null || depth.BestAsk == null)
                            Debugger.Break();
                    }
Автор топика
Спасибо:

pyhta4og

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


файлы данных можете прикрепить (сделки и стаканы) за проблемный день?
Спасибо:

vk37

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


Прикрепить не получилось. Ссылка: http://sdrv.ms/U6jFLM
Автор топика
Спасибо:

Alexander

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


Проверьте на последней версии на codeplex.
Спасибо:

vk37

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


Alexander Mukhanchikov Перейти
Проверьте на последней версии на codeplex.
Скачал последнюю версию с кодплекса.
Судя по тому, что в отчетах значения MaxDrowdown нереалистично большие цифры, ситуация не изменилась.

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

vk37

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


Не знаю в чем проблема. Менеджеру статистики верить нельзя: неверно просадку считает. Что делать посоветуете? Свой менеджер статистики писать?
Автор топика
Спасибо:

Кот Матроскин

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


vk37 Перейти
Свой менеджер статистики писать?

Давно столкнулся с примерно такой же проблемой - в итого написал свой метод вычисления статистики

Спасибо:

vk37

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


Я так понимаю, что для расчета прибыли на каждый текущий момент нужна информация о стоимости инструмента на каждый текущий момент. Предполагаю, что стоимость инструмента в закаченных маркет данных на какой-то момент неверна. Могу исключить эту неверную цену из маркет данных. Только я не понимаю как внутри этот PnLManager работает. Откуда он берет текущую цену инструмента? Эх, был бы доступ к исходникам )
Автор топика
Спасибо:

vk37

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


На этот раз похоже действительно клиринг.
Автор топика
Спасибо:

Alexander

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


vk37 Перейти
На этот раз похоже действительно клиринг.


Клиринг тут как виноват?
Спасибо:

vk37

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


Alexander Mukhanchikov Перейти


Клиринг тут как виноват?


В этот раз прибыль некорректно посчиталась в период 18:50 - 19:00. Настроил свою гидру, чтобы маркет данные качались по расписанию работы биржи РТС.
Автор топика
Спасибо:

pyhta4og

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


vk37 Перейти
Я так понимаю, что для расчета прибыли на каждый текущий момент нужна информация о стоимости инструмента на каждый текущий момент. Предполагаю, что стоимость инструмента в закаченных маркет данных на какой-то момент неверна. Могу исключить эту неверную цену из маркет данных. Только я не понимаю как внутри этот PnLManager работает. Откуда он берет текущую цену инструмента? Эх, был бы доступ к исходникам )


PnLManager берет bestbid/bestask из стакана для расчета цены инструмента. А вот если их нет то берутся bestbid/bestask из инструмента, потом lasttrade... Короче PnLManager борется до последнего, а если нет ничего то берет НОЛЬ и будет спайк.

Если это в клиринг то возможно в клиринге очистило стакан и пошли такие спецэффекты. А ласттрейд был давно.
Hope it helps
Спасибо: vk37 Yury Smykalov


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

loading
clippy