Избранное трейдера Михаил
На просторах интернета полно информации об анализе графиков цены и самых экзотических технических индикаторах. Чуть менее распространен анализ объемов торгов, по причине отсутствия такового у форекс-брокеров, активно популяризирующих биржевую торговлю. Не сложно найти неплохой учебник по инвестированию и фундаментальному анализу. Но вот, что касается использования ленты сделок и биржевого стакана, здесь русскоязычные ресурсы ограничиваются разъяснением терминов «бид», «аск» и спред, на чем весь анализ этих инструментов, по сути, и заканчивается. Есть неплохие видеоматериалы, но они преимущественно описывают ситуации на рынке США, где ECN и «дарк-пулы» вносят свои коррективы в механику торгов. Данная статья призвана хоть немного, но ликвидировать этот пробел и рассказать о том, как и зачем эти инструменты могут быть использованы на российском рынке обычным частным инвестором.
На просторах интернета полно информации об анализе графиков цены и самых экзотических технических индикаторах. Чуть менее распространен анализ объемов торгов, по причине отсутствия такового у форекс-брокеров, активно популяризирующих биржевую торговлю. Не сложно найти неплохой учебник по инвестированию и фундаментальному анализу. Но вот, что касается использования ленты сделок и биржевого стакана, здесь русскоязычные ресурсы ограничиваются разъяснением терминов «бид», «аск» и спред, на чем весь анализ этих инструментов, по сути, и заканчивается. Есть неплохие видеоматериалы, но они преимущественно описывают ситуации на рынке США, где ECN и «дарк-пулы» вносят свои коррективы в механику торгов. Данная статья призвана хоть немного, но ликвидировать этот пробел и рассказать о том, как и зачем эти инструменты могут быть использованы на российском рынке обычным частным инвестором.
reversed=1и оставить только строчку номер 15 в запросе
limit=1получим запрос вида
https://iss.moex.com/iss/engines/futures/markets/forts/securities/SiZ7/trades.json?reversed=1&limit=1Вариант автоматизации упрощенно:
using System;
using System.Net;
using System.IO;
using System.Text;
namespace GetLastPrice
{
class Program
{
static void Main(string[] args)
{
string newLine;
string[] lastLine;
string link = "https://iss.moex.com/iss/engines/futures/markets/forts/securities/SiZ7/trades.json?reversed=1&limit=1";
int count = 0;
for (;;) {
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(link);
request.ContentType = "text/plain; charset=utf-8";
HttpWebResponse response = request.GetResponse() as HttpWebResponse;
using (Stream responseStream = response.GetResponseStream())
{
StreamReader sr = new StreamReader(responseStream, Encoding.UTF8);
while ((newLine = sr.ReadLine()) != null) {
if (count == 14) {
if (newLine =="") break;
else {
lastLine = newLine.Split(",");
Console.WriteLine("Volume is " + lastLine[6] +" at Price " + lastLine[5]);
}
}
count++;
}
}
count = 0;
response.Close();
}
}
}
}



Напоминаю, что в первой части, собравшей 300 лайков, шла речь о том, чего не стоит покупать для получения пассивного дохода.
В этой, 2-й части, будут мысли о подходящих инструментах для получения пассивного дохода.
По причинам, изложенным приблизительно здесь, я буду писать только о североамериканских рынках.
Начнем с пары оговорок
Добрый день. В предыдущих частях я описывал, как на C# сделал собственный тестер, применяя объектно-ориентированный подход, рассказывал про интерфейсы, про их реализации, и, рассказывал про работу с БД. На данный момент осталось совсем немного. В этом топике я опишу вариант расчёта результатов работы стратегии.
Чтобы не запутаться, даже не читая предыдущие топики, поясню, что есть и к чему надо придти. Есть стратегии – это некий объект программы, который выставляет заявки на основе получаемой маркет-даты. Заявки (Order) регистрируются системой. Также, регистрируются сделки прошедшие по заявке (каждая заявка имеет список сделок — List<Trades> trades). После прогона стратегии, все заявки и сделки сохраняются в БД, и после, их можно извлечь и посчитать по ним статистику работы стратегии. По сути, эта статистика состоит из двух аспектов: сами закрытые позиции и оценка эффективности на их основе. Начнём с первого. Вот интерфейс, который принимает заявки со сделками, и, выдаёт, собственно, список закрытых позиций:
interface IClosePositionManager
{
List<ClosePosition> ClosePositions (List<Order> orders);
}
В своем недавнем топике я объяснял, почему шорты лучше торговать на фьючерсе, а лонги на споте. Там же был и предложен метод, как можно, получая безрисковую ставку, торговать шорты по данным спота. Понятно, что все эти рассуждения не учитывали комиссии брокеров. И я в том топике предложил посчитать все За и Против, исходя из реальных условий. Вот и давайте проведем такие расчеты на примере моего личного счета. Что он из себя представляет?
RI – 50%
SBER, GAZP, GMKN, ROSN – по 12.5%
Si – 33%
OФЗ – 33%
Что из себя представляют приведенные %%? Это соотношение между полным лонгом по моим системам в соответствующем эмитенте по номиналу, рассчитанному по цене закрытия предыдущего дня к размеру счета, рассчитанному по тем же ценам. Так как в RI, SBER, GAZP, GMKN, ROSN торгуются по три трендовых торговых идеи, две из которых разбиваются на 2-3 торговых алгоритма с разными параметрами (у одной идеи оптимизируемый параметр один и на нем особо с портфелями не разбежишься) плюс еще в RI торгуется одна контртрендовая система с реальным таймфреймом пара часов. Поэтому в этой части портфеля полный лонг, как и полный шорт, дело нечастое (примерно по 30% времени в году). В Si торгуется одна идея с одним набором параметров, так как при среднем времени в позиции 12 с небольшим дней заморачиваться с портфелями тоже смысла большого не имеет, поэтому тут и полный лонг и полный шорт занимают примерно по 45% времени. Ну и в ОФЗ у меня банальный B&H.
Прочитал сегодня книжку Джоэля Гринблатта «Маленькая книга победителя рынка акций». Книжка и в самом деле маленькая — по объему, да и читается легко. Отзыв писать про книгу не буду здесь — сами все прочтете. Суть в другом. В этой «маленькой книге» дается простая «волшебная формула», как выбрать себе портфель акций и получать доходность выше среднерыночных. Как и почему это работает — рассказывается в книге, здесь я не буду дискутировать на эту тему.
Суть формулы простая — берем все компании из доступного списка, в США это 3500 компаний, которые отслеживают всевозможные скринеры, сортируем их по рентабельности капитала в порядке убывания. Каждой компании присваиваем рейтинг — порядковый номер в списке. Это будет рейтинг компании по капиталу. Потом этот список пересортировываем так, чтобы отсортировать список в порядке убывания доходности акции как таковой (читай, по коэффициенту P\E). Каждой компании в списке присваиваем еще один рейтинг — это будет рейтинг доходности акции. Суммируем рейтинги для каждой акции. Это и есть «волшебная формула».
Далее в портфель выбираем акции с минимальным суммарным рейтингом. В книге предлагается в портфель выбрать 20-30 акций. И предлагается проводить такую процедуру периодически с целью ротации акций в портфеле. Тут тоже есть тонкости, они расписаны в книге довольно подробно. Суть «волшебной формулы» — используя этот механизм вы будете отбирать портфель хорошие компании по хорошей цене — все как у Баффета.
Естественно, захотелось получить такой «волшебный рейтинг» для отечественного рынка акций. Результат исследований доступен по ссылке (там полная таблица, в ней порядка 140 эмитентов, можно сортировать столбцы), здесь же приведен ТОП-10.

– Привет! В предыдущий раз, ты рассказывал про дата-сервис, про отдельный слой доступа к данным. Расскажи теперь про сами сущности и репозитории. При помощь чего ты вытягиваешь данные из таблиц?
– Ок. Если необходимо сохранять сделки и статистику, или откуда-то брать исторические котировки для тестов, то неплохо использовать БД. Но, как с ней общаться? Есть несколько способов. В C#, есть например традиционный ADO.NET, но речь пойдёт не о нём. В прошлый раз мы отделили работу с БД от бизнес-логики, это уже очень здорово, но можно пойти дальше! Есть способ общаться с самой БД на достаточно абстрактном уровне, инкапсулируя детали формирования самих запросов. Такой способ лучше вписывается в концепцию объектно-ориентированного проектирования, и называется он ORM (object relation mapping).
– Хм, я что-то слышал про ORM. У меня сложилось неоднозначное ощущение, вроде, есть целое сообщество, кто против них (OrmHate), и считает это антипаттерном. Все эти дополнительные уровни абстракции, и вообще, они наверно дико тормозные?