Избранное трейдера God

Статья с сайта www.miltonfmr.com, из которой можно взять некоторые приемы, пригодные даже для использования в высокочастотной торговле.
Многие трейдеры, создающие и правильно применяющие торговые системы с возвратом к среднему, получают хорошую прибыль. Факты говорят о том, что рынки двигаются в соответствии с паттернами, одним из которых является цикличность. Простыми словами, все, что двигалось вверх, должно пойти вниз и наоборот. Ничто не движется в одном направлении вечно. Применительно к рынкам, у нас есть два возможных исхода — тренд, либо определенный торговый диапазон с возвратом к среднему. В прошлых наших исследованиях было показано, что гэп на открытии определяет тренд на остаток дня в 30% случаев. Это значит что из 20 торговых дней мы имеем 6 трендовых дней без возврата к среднему. С другой стороны у нас есть 70% движения цены, которая имеет тенденцию к возврату к среднему значению несколько раз за день. Важно отметить, что эти 70% относятся к внутридневному движению цен.

Введение
Сегодня я расскажу, что необходимо для создания и применения высокочастотных стратегий на российском рынке. Постараюсь этот рассказ проиллюстрировать примерами из нашей практики.


Перевод полезной статьи с сайта jonathankinlay.com
В этом посте я хочу обсудить способы применения сигналов от соответствующих рыночных индексов в вашей торговле. Эти сигналы могут улучшить прибыльность вне зависимости от того, торгуете вы алгоритмически или вручную. Техника, описанная здесь, является одной из наиболее применяемых в арсенале квантов.
Начнем обсуждение с примера простой торговой системы на индексе волатильности VIX по недельным барам. Результаты такой системы приведены на графике ниже. Система обгоняет прибыльность стратегии «купил и держи» на значительную величину с профит-фактором более 3 и процентом выигрышных сделок свыше 82%. Что же здесь не так?


using System;
using System.Collections.Generic;
using System.Linq;
using System.IO;
using System.Text;
using System.Timers;
using System.Threading;
using XlDde;namespace ConsoleApplication2
{
class Program
{
const string service = «myDDE»;
const string candleSPOT = «SPOT»;
static void Main(string[] args)
{
using (XlDdeServer server = new XlDdeServer(service))
{
server.AddChannel(candleSPOT, new SPOTChannel());
server.Register();Console.WriteLine(«DDE server ready. Press Enter to exit.\n\n»);
Console.ReadLine();
}
}
}
// **********************************************************************
// * Классы DDE каналов с обработчиками данных *
// **********************************************************************
class SPOTChannel: XlDdeChannel
{
//static int time2 = 1000;
static int em = 7;
static int m = 1200;
static int[] NM = new int[em];
static int NMM = 0;
static int LastMinute = 0;
static int mm = 1638400;
static double[] Price_trade = new double[mm];
string[] EM_trade = new string[mm];
static int[] Time_trade_I = new int[mm];
static int[] Volume_trade = new int[mm];
static int[,] Time = new int[em,m];
static double[,] O = new double[em,m];
static double[,] H = new double[em,m];
static double[,] L = new double[em,m];
static double[,] C = new double[em,m];
static double[,] V = new double[em,m];
protected override void ProcessTable(XlTable xt)
{
//int time3 = 1000;
int[] nach = new int[em];
int nach1 = 0;
int i = 0;
int j = 0;
int s = 0;
int curHour = 0;
int curMin = 0;
int curDay = 0;
int curSec = 0;
int curDay_1 = 0;
string name;
string[] bf;
string[] EM = new string[em];
DateTime moment;
string[] Time_trade = new string[mm];
Всем привет.
Решил выложить в открытый доступ базу данных тиков с 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:
Ранее на моем сайте была опубликована статья по марковским моделям скрытых состояний (НММ) — часть 1, часть2, часть 3, часть 4. Мною разработана программа на основе этой публикации, с помощью которой была протестирована предсказательная способность HMM на некоторых инструментах рынка FORTS. Программа написана на языке C#, с применением сторонней библиотеки Accord.NET.
На вход программы подаются ценовые ряды фючерсов, представляющие собой последовательность свечей со значениями Open, Close, High, Low. Количество входных свечей можем задавать произвольно, эта величина является первым параметром. На выходе получаем прогноз на будущее направление движения цены. Горизонт прогноза в виде интервала, также измеряемого в количестве свечей, является вторым параметром. Третий параметр — это временной интервал самой свечи, определяется входным файлом. Исходные данные я брал с сайта Финам в виде текстовых файлов для каждого инструмента.
Вывод, который мы можем сделать из первой части данной статьи такой: почти все стратегии, которые мы знаем, имеют эквивалент в пространстве волатильности, будь это покупка/продажа волатильности, статистический арбитраж или следование за трендом. Более того, из-за особых характеристик волатильности, все эти стратегии имеют тенденцию к большей производительности, чем их традиционные аналоги. В пример автор приводит показатели собственной стратегии на волатильности биржевых фондов ETF, которая имеет устойчивый годовой доход между 30% и 40%, с коэффициентом Шарпа более 3, начиная с 2012 года (см. графики в заглавии и ниже).
В прошлой статье мы рассмотрели простую портфельную стратегию ротации глобальных рынков. Результаты, которые привел автор статьи, были впечатляющими, однако он не опубликовал алгоритм своих расчетов, а только его общее описание. Ilya Kipnis в своем блоге решил проверить указанную стратегию и воспроизвел алгоритм на языке программирования R.
Для проверки был взят несколько иной набор биржевых фондов, чем у автора оригинальной статьи, но поведение этих активов идентично исходным. Итак, используется 5 ETF: MDY, ILF, FEZ, EEM, и EPP, совместно с облигационным фондом TLT в качестве защитного актива. Каждый месяц происходит инвестирование в фонд, показавший больший ценовой импульс на исторических данных. Автору не удалось получить такой же доходности, которая была обещана в оригинале, но и воспроизведен алгоритм был не со 100% точностью — вместо изменяемого исторического периода, по которому принимается решение о выборе, он использовал фиксированный трехмесячный период, так как не до конца понял принцип его формирования.
Насколько могут быть прибыльны портфельные инвестиции, если ими правильно управлять? О своем опыте рассказывает Frank Grossman в блоге Seeking Alpha.
Стратегия ротации глобальных рынков использует переключение между 6 разными биржевыми фондами ETF на месячных отрезках. Бэктестирование доходности такой стратегии c 2003 года впечатляет.
В заглавии статьи приведен график доходности стратегии по сравнению с индексом S&P500.
Используются следующие рынки и инструменты:
Окончание. Начало см. в блоге и на моем сайте.
В этой, последней части цикла разберем пример вычисления PIN с применением языка R. Кроме библиотеки PIN языка R будем использовать также библиотеку highfrequency.
Для примера автор берет сгенерированные данные, которые соответствуют формату TAQ — стандарт для акций NYSE. Данные состоят из двух наборов — временной ряд ценового котирования (sample_qdata) и сделки (sample_tdata) и предоставляются в открытом доступе вместе с библиотекой highfrequency.
Нужно отметить что используемые данные взяты только за один торговый день. Обычно, для вычисления PIN применяют больший набор данных, не менее, чем за 60 дней, чтобы выборка была достаточной для правильного определения параметров. Наши данные нужны только для демонстрации процесса получения PIN. Библиотека PIN позволяет это сделать для выборки с любой размерностью, что позволяет применять ее и для высокочастотной торговли. Пример, приводимый здесь, может быть легко расширен для вычисления на другом временном горизонте, большим, чем один торговый день.