Избранное трейдера Петр Петров
Решил поделиться своей системой маней-менеджмента.
На мой взгляд, маней-менеджмент не менее важен, чем торговая система. Но почему-то об этом очень мало статей и разговоров. Так как он позволяет выдержать просадку, сохранить капитал и оставаться эмоционально устойчивым.
Как я к ней пришел:
1. Играл и изучал покер, он во многом похож на трейдинг. Так же не гарантируется профит несмотря ни на какие карты. Нужен маней-менеджмент, чтобы не слиться в ноль слишком рано и дать статистике работать.
2. Читал Нассима Талеба, он рекомендует на 10% ловить Черного Лебедя, 90% держать в облигациях.
3. Изучал ребалансировку и пробовал ее на деле — она работает.
4. Читал про оптимальную f, критерий Келли, послушал рекомендации уменьшить плечи разных людей.
У меня есть два субсчета:
1. Безрисковый. (не менее 75% от общего счета, риск около 0%, либо сильно диверсифицированный портфель, покупаемый на лоях РТС, либо ОФЗ, либо валюта во время валютного тренда)
2. Рисковый. (не более 25% от общего счета, используется для смелой спекулятивной торговли)
Почему именно 25%? Это оптимальная f (доля) счета, которой следует рисковать при игре с подбрасыванием монетки, где профит в 2 раза больше потери. Если рисковать большей долей, возникает убыток пересчета и счет начинает расти медленнее, хотя и используются, казалось бы, большие объемы в системе с положительным мат. ожиданием. Я считаю приближенно, что моя торговля примерно такая же как при таком подбрасывании монетки. Иногда хуже, иногда лучше. Но стремиться нужно, чтобы она была лучше.
Кроме этого, после просадки 25% восстановиться реально. Такую просадку получают многие торговые системы и даже инвесторы во время кризисов. Нужно сделать около 30% к оставшемуся счету.Н апример, пусть было 100 рублей. 25 рублей от оставшихся 75 — это 30%. И есть еще как минимум 3 шанса поторговать. А вот после просадки общего счета на 80-90% восстановиться нереально сложно. Нужно сделать тысячи процентов, чтобы восстановиться с 10%. Я уже один раз так слился и очень долго после этого восстанавливался.
Вчера на СмартЛабе был размещен пост Как построить корреляционную матрицу (для парной торговли) в Excel, собравший аж 150 "+".
Решил тоже попрактиковаться и написать под эту задачу код в R. Важным преимуществом R является наличие пакета rusquant, который позволяет автоматически получать котировки с Финам в любом таймфрейме (в т.ч. в тиках), что существенно экономит время по сравнению с ручной обработкой в Excel.
Код на R приведен ниже:
Результаты:
Суть в том, что скажем часть денег необходимо вложить в акции компаний США. Варианты:
— СПБ биржа, через нашего крупного брокера и нашего депозитария. Список доступных акций будет в районе 60 шт. самых ликвидных. Но хотелось бы иметь доступ ко всем торгуемым акциям скажем Nyse и Nasdaq. Для этого у рос. брокера необходимо получить статус квалифицированного инвестора. Чтобы его получить, нужно иметь капитал или ДС на счете от 6 лямов, либо иметь сделок с бумагами за последние 4 квартала на такую же сумму, либо же иметь экономическую вышку по специальности рынок ЦБ. (Кстати у меня есть высшее эконом. образование по специальности «Фин. и кредит», со специализацией РЦБ, гос. ВУЗа) Но вопрос какие вузы относятся к данным критериям не понятно и список таких ВУЗов я не нашел. Либо любой из следующих аттестатов и сертификатов: квалификационный аттестат специалиста финансового рынка, квалификационный аттестат аудитора, квалификационный аттестат страхового актуария. В общем положим и такой статус я получить не могу, то остается при таком варианте инвестировать в акции из перечня 60 которые предлагает СПБ биржа.
Если говорить образно. То, чтобы отправить сообщение на сервер, нам просто нужно сформировать нужную строку со всеми данными и отправить ее на биржу. Ну например:
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));
Как учат классики, рациональной основой прогнозирования, является – априорная вероятность, например цены.
Стратегия « регрессия к среднему » в качестве такого априорного значения определяет среднее значение временного ряда, однако, его продолжительность не устанавливает.
В одной из статей по этому вопросу Тайлер Чессман http://www.osp.ru/win2000/2013/10/13037710/ отмечает
« Работая с временным рядом, история которого уходит далеко в прошлое, вы можете захотеть включить в модель все исторические данные. Однако подчас дополнительная история не повышает точность прогнозирования. Давние данные могут даже исказить прогноз, если условия в прошлом существенно отличаются от условий в настоящем...
Мне не попадалась какая-то особая формула или практический метод, которые подсказали бы, какое количество исторических данных необходимо включить...».
Учитывая, что Чессман, не математик, какова практика решения этого вопроса более обоснованным образом...?!