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


Сомнения в валидности маркет данных
Atom
9/14/2012


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

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



Thanks:


1 2  >
pyhta4og

Avatar
Date: 9/14/2012
Reply


я бы начал с того что в стратегии написал проверку
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.
Thanks:

vk37

Avatar
Date: 9/14/2012
Reply


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

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

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

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

Alexander

Avatar
Date: 9/14/2012
Reply


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

vk37

Avatar
Date: 9/14/2012
Reply


Все 5 ошибок на графике до 12:00 )
Thanks:

Mikhail Sukhov

Avatar
Date: 9/14/2012
Reply


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


А что в самих данных?
Thanks:

vk37

Avatar
Date: 9/14/2012
Reply


А где посмотреть? Что перебрать? )
Thanks:

Mikhail Sukhov

Avatar
Date: 9/14/2012
Reply


vk37 Go to
А где посмотреть? Что перебрать? )


На диске. Данные.
Thanks:

vk37

Avatar
Date: 9/14/2012
Reply


Провереть SecurityChanges на предмет Security.BestAsk == null и Security.BestBid == null?
Thanks:

vk37

Avatar
Date: 9/15/2012
Reply


Проверил все сохраненные MarketDepths. Не нашел ни одного со значениями BestBid == null или BestAsk == null. В стратегии на событии MarketDepthChanged, судя по логу, такие появляются:
Code
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

Думаю, ошибка не в данных.
Проверял так:
Code
                    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();
                    }
Thanks:

pyhta4og

Avatar
Date: 9/15/2012
Reply


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

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy