Избранное трейдера FatCat
Вашему вниманию предлагается альтернативный взгляд на оценку стоимости опционов. Забудьте, всё чему вас учили, и начнем мыслить с чистого листа.
Чтобы иметь меньше параметров, «избавимся» от дельты и от всяких рассуждений «что куда пойдет и на сколько процентов». Рассмотрим самую простую дельтанейтральную позицию -стредл.

Проданный стредл или купленный это не важно. Будем пытаться его дельтанейтралить. Если не вдаваться в подробности формул, а выделить основное свойство такого действия, то результат будет зависеть от того расстояния, которое «набегает» нам цена базового актива. Тут появляется один важный момент: Расстояние пробегаемое базовым активом можно выразить через волатильность базового актива в процентах, но можно этого не делать. Можно использовать непосредственно «длину пробега» для оценки стоимости опциона.


Если говорить образно. То, чтобы отправить сообщение на сервер, нам просто нужно сформировать нужную строку со всеми данными и отправить ее на биржу. Ну например:
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));



Первая часть лежит тут… smart-lab.ru/blog/155810.php… думал частично переписать, но решил просто добавить...
1 Основа торговли
Трейдинг — это прогнозирование будущих цен и торговля этого прогноза с целью извлечения прибыли.
Прогнозирование будущих цен можно делать на основе различных методов и способов, например: фундаментального анализа, новостей, цены, объемов, элиотов и прочих методов или их сочетания. В любом случае выделяется параметр наблюдения или ряд параметров на основании которых принимается решение об исходе прогноза.
В конечном итоге, исходы прогноза всего 2 — тренд и контртренд. В случае тренда мы делаем вывод что параметр наблюдения достаточно изменился, чтоб движение продолжилось, а для контртенда на основаниии такого же изменения параметра мы сделаем вывод что движение прекратится и сменится на противоположное.


1. Вероятность взятия ордера на стороне, противоположной движению цены в большинстве случаев выше, чем на стороне по направлению движения. То есть, если цена актива растет, то чаще будут исполняться ордера, выставленные на продажу, а ордера на покупку, соответственно — реже, в результате возникает убыточная позиция. В англоязычной литературе этот эффект называется