Избранное трейдера Watcher
Общеизвестно, что классическим называют арбитраж, который реализуется между поставочным фьючерсом и его базовым активом. Он относится к рыночно – нейтральным стратегиям и является одним из самых низко рисковых стратегий работы на рынке ценных бумаг. Естественно платой за низкие риски является сопоставимая с ключевой ставкой ЦБ доходность.
Повысить доходность классической арбитражной позиции, без существенного увеличения рисков можно добавляя к двумерным арбитражным позициям (фьючерсы против базовых активов) дополнительное измерение (координату) в виде статистического арбитража фьючерсов или акций входящих в эти пары. Такой вид арбитража мы назвали 3D арбитраж.
Теоретически возможность для такого арбитража создана нашим рынком, где подавляющее число высоколиквидных ценных бумаг в среднесрочном, а тем более долгосрочном плане, высоко коррелированы. Это позволяет позицию по одной акции хеджировать двумя разными фьючерсами без существенного увеличения рисков (один фьючерс на эту же акцию, а другой — на другую акцию, но которая высоко коррелирована с первой). Или наоборот, хеджировать позицию по одному фьючерсу двумя акциями (одна акция — базовый актив, другая высоко коррелированна с базовым активом).
Статья из блога www.jonathankinlay.com поможет лучше понять работу вашей торговой стратегии и повысить ее производительность в будущем.
Построение прибыльной стратегии только половина успеха, трейдеру еще необходимо понимание так называемой альфы стратегии и риска. Это значит, что нужно определить факторы, обуславливающие прибыльность алгоритма и, в идеале, создать модель так, что их относительный вклад может быть вычислен. Более продвинутый путь — это конструирование мета-модели, которая будет предсказывать прибыльность и давать рекомендации, каким образом должна торговать стратегия в следующий период.
Производительность стратегии
Давайте посмотрим, как это работает на практике. В нашем случае будем использовать следующую внутридневную стратегию на фьючерсах E-mini:
Общая производительность стратегии довольна высока. Среднемесячная прибыль за период с апреля по октябрь 2015 года почти 8 000 долларов на контракт, за вычетом комиссии, со стандартным отклонением всего 5 500 долларов. Годовой коэффициент Шарпа около 5.0. На платформе с хорошим исполнением стратегия может масштабироваться до 10-15 контрактов, с годовой прибылью от 1 до 1.5 миллионов долларов.
Из опыта первой статьи вы наверное вспомните, что я предложил под каждый блок сообщения делать класс и на основе этих классов строить сообщение. Переспав с этой идеей, сегодня за кружкой чая, я решил остановиться на этой идее. А именно: Если говорить образно. То, чтобы отправить сообщение на сервер, нам просто нужно сформировать нужную строку со всеми данными и отправить ее на биржу. Ну например:
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, длину сообщения нужно считать без учета концовки и первых двух полей заголовка. А именно:

Зеленым я отметил именно разделители. Как вы уже видите, это просто в шестнадцатеричном виде код 01. То есть, в нашу строку в виде разделителей, нужно вставлять код 01. Также я отметил для себя последовательность полей в сообщении. Почему то в другом порядке у меня вызывало ошибки (возможно тут я не прав)
Ну и контрольная сумма. Контрольная сумма считается над всем сообщением, за исключением концовки. То есть в расчет берется только заголовок и само сообщение. Для этого, мы переводим каждый символ в его Ascii код и вычисляем их сумму. Полученную сумму делим по модулю 256. Это и будет контрольной суммой сообщения. При этом, значение должно быть трехзначным. Если мы получаем 2 знака, то подставляем 0 слева (например, если контрольная сумма = 68, то должны передать значении 068).
Как видим, первый метод строит нужную строку из полей. Обратите внимание, там присутствует наш разделитель в виде спец символа \u0001. Второй метод вычисляет размер заголовка (чтобы потом высчитывать размер сообщения). Надо обратить внимание, что при передачи времени, миллисекунды должны указываться в трехзначном формате (даже если миллисекунды = 52, то передаем 052). Следующие классы строятся по аналогии.

//Получаем 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));



Добрый день, коллеги!
Наступил 2016 год и можно уже приниматься за процедуру возврата налога и зачета убытков на фондовом рынке за 2015 год. Многие из вас закрыли прошлый год в “плюсе”. Это хорошо, но давайте вспомним, были ли у вас убытки в период с 2010 до 2014 года. Если да, тогда надо собирать документы:
1) Справки об убытках за убыточные годы. Возможно, что брокер вам даст не справку, а налоговый регистр или выписку. Казалось бы, название документа другое, но суть одна — нужен документ, в котором указана сумма убытка.
Как выглядит такой документ? В нем должна быть отражена следующая информация:
— год, за который получен убыток,
— название операции и ее код, например, если вы получили убыток по операциям с ценными бумагами, тогда код операции будет “1530”. У каждого вида дохода есть свой код, по нему легко ориентироваться,
— сумма убытка.
— и все! Не надо отражать суммы налогов в такой справке, они не нужны.
2) Справка 2-НДФЛ за прибыльный год. Если у вас прибыль за 2015 год, значит, надо справку 2-НДФЛ получить за 2015 год. Эта справка имеет свой “индивидуальный” вид — в ней отражается сумма полученного дохода и сумма удержанного налога. Вот тут сумму НДФЛ (подоходного налога) надо отражать обязательно.
В прошлой части мы проводили симуляцию для одного определенного процесса — геометрического броуновского движения с положительным дрифтом. Можно сделать подобный же анализ для более сложных и более реалистичных наборов данных. Мы можем добавить толстые хвосты распределения, ассиметричность и т.п. Также можно сделать результат одной сделки зависимым от предыдущих. Во всех этих случаях результат будет одним и тем же — стоплоссы снижают средний доход и меняют его распределение на что-то подобное бимодальному. Но что произойдет на реальном рынке, где процесс приращения цен неизвестен и точно не соответствует нормальному? Давайте перенесем теорию в реальную торговлю.
Очевидно, многие инвесторы используют стопы. Некоторые настаивают, что стоплосс абсолютно естественнен и его правильное использование приводит, в общем, к долгосрочной успешной торговле. Не будем принимать это утверждение на веру просто из-за его распространенности и проверим, так это или нет. Учитывая, что большинство тестов показывают — стопы стоят денег, что по этому поводу думают трейдеры?