Избранное трейдера rutrader
Посчитал на R спред между акциями Google и Apple с учётом соотношения (hedge ratio). И нанёс среднюю линию с двумя среднеквадратичными отклонениями сверху и снизу. Красота.
Делается на R это очень просто, код ниже.
require(quantmod)
> startT <- «2015-01-01»
> endT <- «2016-01-01»
> rangeT <- paste(startT, "::", endT, sep="")
> symbols <- c(«AAPL», «GOOG»)
> getSymbols(symbols)
[1] «AAPL» «GOOG»
> tGOOG <- GOOG[,6][rangeT]
> pdtGOOG <- diff(tGOOG)[-1]
> tAAPL <- AAPL[,6][rangeT]
> pdtAAPL <- diff(tAAPL)[-1]
> model <- lm(pdtAAPL ~ pdtGOOG)
> hr <- as.numeric(model$coefficients[1])
> spreadT <- tAAPL — hr * tGOOG
> meanT <- as.numeric(mean(spreadT, na.rm=TRUE))
> sdT <- as.numeric(sd(spreadT, na.rm=TRUE))
> par(mfrow = c(2,1))
> hist(spreadT, col=«blue», breaks = 100, main = «Spread Histogram (AAPL vs GOOG)»)
> plot(spreadT, main=«AAPL vs GOOG spread (in-sample period)»)
> abline(h = meanT, col = «red», lwd = 2)
> abline(h = meanT + 1 * sdT, col = «blue», lwd = 2)
> abline(h = meanT — 1 * sdT, col = «blue», lwd = 2)
Здесь:
meanT — среднее
sdT — среднекв. отклонение
spreadT — спред
par — график с двумя секциями
plot — график
hist — гистограмма
abline — линия поверх графика
model — линейная зависимость модель, МНК
quantmod — библиотека для получения исторических данных
rangeT — временной диапазон
Все мы знаем, на уровне здравого смысла, что опционы это круто. Особенно бинарные.
По заявлениям сектантов, познавший их внутреннюю нелинейную сущность уже никогда не станет прежним не вернется торговать линейными инструментами. Впрочем, по их словам, опционы — это добро и свет не только для избранных — любой дремучий аксакал торгующий по тренду уже сейчас может воспользоваться их благодатью.
Убедитесь сами — берем месячный RI OTM Call со страйком на расстоянии 10000 от текущей цены стоимостью ~500. Если фьюч делает +2500, опцион стоит уже ~1000 (профит +500). Если фьюч делает -2500, опцион стоит 250 (убыток -250). Можно и продолжить! В пределе, что бы цена ни вытворяла, наш убыток ограничен 500-ми, а профит вообще неограничен!.. правда опцион теряет в стоимости приметно 25 пунктов в день, но подобная фигня ведь никого не остановит, нэ?
Пытаемся придерживать раскатившуюся губу и думаем — как лучше воспользоваться этой благодатью в наших корыстных целях...
Самое простое(имхо) — взять замшелого трендового робота и заменить в нем покупку фьюча на покупку ОТМ опциона.
Теперь нужно прикинуть, какой страйк лучше покупать… ATM медленнее распадается, но обладает меньшим эффектом усиления плеча… дальние OTM наоборот — плечо усиливают хорошо, но распадаются быстрее.
Тут бы порыву и конец, ибо софт позволяющий подобную страту запрограммировать и протестировать мне неизвестен, а если и существует, то стоит наверняка столько тысяч долларов, сколько я еще не заработал. Про трудности с оценкой качества подобного бектеста и сбором истории котировок я уже молчу.
Проверка Банка России, которая прошла в Консервативном коммерческом банке (ККБ), являющимся расчетным банком Webmoney, привела к проблемам у владельцев WMR.
Люди массово жалуются, что операции по пополнению привязанных карт и счетов недоступны, деньги вывести не получается. Юрики же не могут не только вывести, но и внести деньги.
Вот, что говорит пресс-служба.
По физикам:
«В связи с изменением порядка расчетов были временно приостановлены операции по пополнению физическими лицами прикрепленных банковских карт, в самое ближайшее время данная возможность будет снова доступна. При этом пополнение карт через перевод на банковский счет работает без изменений».
По юрикам:
"Система WebMoney и ее сервисы функционируют в обычном режиме.
По результатам плановой проверки Центробанк выдал ККБ, одному из расчетных банков в РФ, рекомендации по совершенствованию работы с инструментами WebMoney.
Всем привет.
Решил выложить в открытый доступ базу данных тиков с 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));