Избранное трейдера akuloff
Общеизвестно, что классическим называют арбитраж, который реализуется между поставочным фьючерсом и его базовым активом. Он относится к рыночно – нейтральным стратегиям и является одним из самых низко рисковых стратегий работы на рынке ценных бумаг. Естественно платой за низкие риски является сопоставимая с ключевой ставкой ЦБ доходность.
Повысить доходность классической арбитражной позиции, без существенного увеличения рисков можно добавляя к двумерным арбитражным позициям (фьючерсы против базовых активов) дополнительное измерение (координату) в виде статистического арбитража фьючерсов или акций входящих в эти пары. Такой вид арбитража мы назвали 3D арбитраж.
Теоретически возможность для такого арбитража создана нашим рынком, где подавляющее число высоколиквидных ценных бумаг в среднесрочном, а тем более долгосрочном плане, высоко коррелированы. Это позволяет позицию по одной акции хеджировать двумя разными фьючерсами без существенного увеличения рисков (один фьючерс на эту же акцию, а другой — на другую акцию, но которая высоко коррелирована с первой). Или наоборот, хеджировать позицию по одному фьючерсу двумя акциями (одна акция — базовый актив, другая высоко коррелированна с базовым активом).
Всем привет.
Решил выложить в открытый доступ базу данных тиков с CME, которая накапливалась за последние годы, и обновляется по итогу дня.
85.25.211.62
login: smartlab
pass: smartlabpass
Ссылки на торрент: http://ge.tt/1Ql8j3Y2
№2: app.box.com/s/h0dhmkif0fhnvlpzdp8ma89c1ysv876t
seconds (int32) — кол-во секунд с начала суток по Чикаго.
milliseconds (int32)
price (int32)
volume (int32)
bestBidPrice (sbyte) — расстояние в тиках между price и реальной ценой BidPrice
bestAskPrice (sbyte) - расстояние в тиках между price и реальной ценой AskPrice
bestBidSize (int32) — доступно с июня 2015
bestAskSize (int32) - доступно с июня 2015
Создаем класс Tick:
Если говорить образно. То, чтобы отправить сообщение на сервер, нам просто нужно сформировать нужную строку со всеми данными и отправить ее на биржу. Ну например:
8=FIX.4.4;9=78;35=A;49=FG;56=tgFhcfx901U05;34=1;52=20160212-11:42:51.812;98=0;108=3000;141=Y;10=047;
Если быть внимательным, то мы увидим, что кол-во символов в строке у нас 100, а в заголовке сообщения мы передаем, что 78 (9 = 78). По правилам протокола FIX, длину сообщения нужно считать без учета концовки и первых двух полей заголовка. А именно:
С длиной сообщения разобрались. Теперь про разделитель. Пока в моем скрине это ";". В документациях западных написано что это символ SOH. Чтобы однозначно ответить на этот вопрос, я запустил прилагаемого клиента биржи и сниффером стал перехватывать сообщения между клиентом и биржей. Кстати, программа ведет логи, и их общение выглядит так (зеленое — передача запроса на биржу, красное — ответ от биржи)://Получаем ip сервера
IPAddress ipAddr = IPAddress.Parse(server);
IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, port);
//Создаем заголовк
HeaderMessage msHeader = new HeaderMessage
{
BeginString = «FIX.4.4»,
MsgType = «A», //Тип сообщения на установку сессии
SenderCompID = "",
TargetCompID = «FG»,
MsgSeqNum = 1
};
//Создаем сообщение на подключение onLogon
LogonMessage msLogon = new LogonMessage
{
EncryptMethod = 0,
HeartBtInt = 3000,
ResetSeqNumFlag = true
};//Вычисляем длину сообщения
msHeader.BodyLength = msHeader.GetHeaderSize() + msLogon.GetMessageSize();
//Создаем концовку сообщения
TrailerMessage msTrailer = new TrailerMessage(msHeader.ToString() + msLogon.ToString());//Формируем полное готовое сообщение
string fullMessage = msHeader.ToString() + msLogon.ToString() + msTrailer.ToString();
Console.WriteLine(«Сообщение для отправки {0}»,fullMessage);//Создаем сокет для подключения
sSender = new Socket(ipAddr.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
//Подключаемся
sSender.Connect(ipEndPoint);
Console.WriteLine(«Сокет соединился с {0} », sSender.RemoteEndPoint.ToString());
byte[] msg = Encoding.UTF8.GetBytes(fullMessage);
//Отправляем сообщение
int bytesSent = sSender.Send(msg);
Console.WriteLine(«Отправил {0} байт», bytesSent.ToString());
//Получаем ответ от сервера
byte[] bytes = new byte[1024];
int bytesRec = 0;
bytesRec = sSender.Receive(bytes);
Console.WriteLine(«Ответ от сервера: {0}», Encoding.UTF8.GetString(bytes, 0, bytesRec));
Коллеги, хочу сделать себе подключение по новому протоколу. Давайте скооперируемся и разделим риски. Ищу программиста для создания с нуля или куплю готовое. Кто хочет поучаствовать как исполнитель или как со-заказчик пишите с личку.
Для справки. WireGate — новый протокол. Идет на замену CGate. Биржа дает только в режиме тестирования. Но пока найду программиста, пока что-то сделается, пока бота подключу на новый протокол — там и в боевой среде будет доступен. Готовлю сани с лета.
Проходящие мимо, не проходите быстро. Плюсаните, для других.
Уже очень давно меня эта тема мучает, и сегодня пришло вдохновение её описать. Всегда так получается, что когда я начинаю создавать торговою систему, я думаю об идее на вход. Постоянно, я зацикливался над принципом входа и методами его усовершенствования, а набор условий на выход постоянно оставался таким же.
Когда я начал работать с парадоксами на рынке, я заметил такую статистику, что хорошая точка для открытия позиции не свидетельство того, что операция закроется в +. Очень важным аспектом является правильное закрытие позиции, а вернее ЛОГИЧЕСКОЕ закрытие. Стоит признать, что иногда, и стандартный, для меня, набор условий на закрытие четко себя отрабатывает. Приведенные операции на скрине, выглядит красиво, но скажу так, что именно здесь большой вес занимает оптимизация, и важно, к этому процессу подходить с умом. Об этом я уже писал, в трех частях.
Я опишу свои стандартные условия и варианты на закрытие, которые я использую в своих системах:
Начиная с этого дня буду публиковать на Смарт-Лабе торговую стратегию одного из трейдеров с уровнями входа-выхода и накопленной прибылью в пунктах. Торгует робот, стратегия трендовая, реверсная, то есть робот все время находиться в рынке, стопа как такового нет, когда цена доходит до стопа, позиция переворачивается. Есть установленный лимит потерь, при достижении которого торговля прекращается и робот уходит в кэш. Настроен он на основе максимальной просадки, которая достигалась при тестировании системы. Торгуется четыре инструмента: Фьючерс на доллар-рубль(Si), Фьючерс на индекс РТС(Ri), Фьючерс на Евро-Доллар(ED), Фючерс на Нефть(BR).
Результаты робота в тестере следующие: