Избранное трейдера FatCat
Начало здесь: smart-lab.ru/blog/474365.php
Читающие меня друзья, благодарю вас за комментарии к первой части. Они помогли найти мне некоторые небольшие недочеты и наметить дальнейший путь развития.
Эта часть в большей степени является презентацией результатов использования методики. Поскольку, изложение дальнейшей описательной составляющей у некоторых читателей может вызвать мысль о том, что все изложенное является красочной фантазией автора, не применимой к реальности.
Основное отличие от стандартного метода оценки стоимости опционов является утверждение:
Цену опциона можно рассчитывать исходя из показателей волатильности, не привязанной в процентном отношении к цене базового актива. В моем случае волатильность измеряется пунктах индикатора ATR(Н1).
За исходные данные берется цена опциона на центральном страйке (стредл на центральном страйке). Получить ее можно опираясь на историческую волатильность (описано в 1 части), или просто взяв текущие значения из таблицы опционов, опираясь на ожидаемую волатильность.
Вашему вниманию предлагается альтернативный взгляд на оценку стоимости опционов. Забудьте, всё чему вас учили, и начнем мыслить с чистого листа.
Чтобы иметь меньше параметров, «избавимся» от дельты и от всяких рассуждений «что куда пойдет и на сколько процентов». Рассмотрим самую простую дельтанейтральную позицию -стредл.
Проданный стредл или купленный это не важно. Будем пытаться его дельтанейтралить. Если не вдаваться в подробности формул, а выделить основное свойство такого действия, то результат будет зависеть от того расстояния, которое «набегает» нам цена базового актива. Тут появляется один важный момент: Расстояние пробегаемое базовым активом можно выразить через волатильность базового актива в процентах, но можно этого не делать. Можно использовать непосредственно «длину пробега» для оценки стоимости опциона.
Если говорить образно. То, чтобы отправить сообщение на сервер, нам просто нужно сформировать нужную строку со всеми данными и отправить ее на биржу. Ну например:
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));
Первая часть лежит тут… smart-lab.ru/blog/155810.php… думал частично переписать, но решил просто добавить...
1 Основа торговли
Трейдинг — это прогнозирование будущих цен и торговля этого прогноза с целью извлечения прибыли.
Прогнозирование будущих цен можно делать на основе различных методов и способов, например: фундаментального анализа, новостей, цены, объемов, элиотов и прочих методов или их сочетания. В любом случае выделяется параметр наблюдения или ряд параметров на основании которых принимается решение об исходе прогноза.
В конечном итоге, исходы прогноза всего 2 — тренд и контртренд. В случае тренда мы делаем вывод что параметр наблюдения достаточно изменился, чтоб движение продолжилось, а для контртенда на основаниии такого же изменения параметра мы сделаем вывод что движение прекратится и сменится на противоположное.
1. Вероятность взятия ордера на стороне, противоположной движению цены в большинстве случаев выше, чем на стороне по направлению движения. То есть, если цена актива растет, то чаще будут исполняться ордера, выставленные на продажу, а ордера на покупку, соответственно — реже, в результате возникает убыточная позиция. В англоязычной литературе этот эффект называется