Избранное трейдера dimaz07
Добрый день. В предыдущих частях я описывал, как на C# сделал собственный тестер, применяя объектно-ориентированный подход, рассказывал про интерфейсы, про их реализации, и, рассказывал про работу с БД. На данный момент осталось совсем немного. В этом топике я опишу вариант расчёта результатов работы стратегии.
Чтобы не запутаться, даже не читая предыдущие топики, поясню, что есть и к чему надо придти. Есть стратегии – это некий объект программы, который выставляет заявки на основе получаемой маркет-даты. Заявки (Order) регистрируются системой. Также, регистрируются сделки прошедшие по заявке (каждая заявка имеет список сделок — List<Trades> trades). После прогона стратегии, все заявки и сделки сохраняются в БД, и после, их можно извлечь и посчитать по ним статистику работы стратегии. По сути, эта статистика состоит из двух аспектов: сами закрытые позиции и оценка эффективности на их основе. Начнём с первого. Вот интерфейс, который принимает заявки со сделками, и, выдаёт, собственно, список закрытых позиций:
interface IClosePositionManager { List<ClosePosition> ClosePositions (List<Order> orders); }
В своем недавнем топике я объяснял, почему шорты лучше торговать на фьючерсе, а лонги на споте. Там же был и предложен метод, как можно, получая безрисковую ставку, торговать шорты по данным спота. Понятно, что все эти рассуждения не учитывали комиссии брокеров. И я в том топике предложил посчитать все За и Против, исходя из реальных условий. Вот и давайте проведем такие расчеты на примере моего личного счета. Что он из себя представляет?
RI – 50%
SBER, GAZP, GMKN, ROSN – по 12.5%
Si – 33%
OФЗ – 33%
Что из себя представляют приведенные %%? Это соотношение между полным лонгом по моим системам в соответствующем эмитенте по номиналу, рассчитанному по цене закрытия предыдущего дня к размеру счета, рассчитанному по тем же ценам. Так как в RI, SBER, GAZP, GMKN, ROSN торгуются по три трендовых торговых идеи, две из которых разбиваются на 2-3 торговых алгоритма с разными параметрами (у одной идеи оптимизируемый параметр один и на нем особо с портфелями не разбежишься) плюс еще в RI торгуется одна контртрендовая система с реальным таймфреймом пара часов. Поэтому в этой части портфеля полный лонг, как и полный шорт, дело нечастое (примерно по 30% времени в году). В Si торгуется одна идея с одним набором параметров, так как при среднем времени в позиции 12 с небольшим дней заморачиваться с портфелями тоже смысла большого не имеет, поэтому тут и полный лонг и полный шорт занимают примерно по 45% времени. Ну и в ОФЗ у меня банальный B&H.