Избранное трейдера Александр
Кто не сажал дерева, тому не лежать в тени.
Прошло 2 года с начала проекта «Разумный инвестор», именно 2 года, не 3 или 4, как уже некоторые пишут. Всего 2 года. Для инвестиций 2 года — это совсем небольшой срок.
Я думаю, проект «Разумный инвестор», как пример, интересен в первую очередь для массового инвестора, обычного человека.
Пример простого инвестора, осуществляющего регулярные инвестиции должен быть полезен в России, ведь у 70% россиян нет никаких накоплений, и чтобы достичь финансового благополучия им необходимо начать инвестировать. Иного пути просто нет…
И чем раньше, тем лучше!
Можно сколько угодно откладывать это, или «пытаться сразу и много поднять на спекуляциях», но это всё топтание на месте, не более, чем потеря времени. Люди, работающие на брокера, будут приводить «успешные примеры спекулянтов», но это всего лишь один из способов привлечения в игру.
Начало в моем блоге.
Для проверки робастности нашего вычисления VPIN мы продемонтрируем применение этой метрики для двух наиболее активно торгуемых фьючерсных контрактов: E-mini S&P500 (торгуемый на СМЕ) и фьючерс на сырую нефть WTI (торгуемый на NYMEX). Выборка взята на интервале с 1 января 2008 года по 6 июня 2011 года, сшитая по точкам наибольшего объема в дни экспираций. Размер пакета возьмем равным 1/50 от среднего дневного объема нашей выборки (V). Параметры вычисляются в скользящем окне размером n=50 ( что эквивалентно одному среднему дню по объему).
S&P500
На графике в заглавии поста показан ценовой график фьючерса E-mini S&P500 и его метрики VPIN. Метрика токсичности в основном стабильна, хотя и демонстрирует значительную волатильность. Отметим, что VPIN достигает наивысшего уровня в выборке 6 мая 2010 года, когда на бирже произошел большой обвал котировок. Такой высокий уровень VPIN согласован с потоком ордеров, который был большей частью односторонним в это время. Такая исключительная токсичность приводит к тому, что некоторые маркет мейкеры вынуждены потреблять ликвидность, вместо того, чтобы предоставлять ее и в итоге прекращают свои операции на рынке.
В статьях об индикаторе PIN мы определили, что на рынке присутствуют два типа трейдеров — информированные и неинформированные. Заявки неинформированных трейдеров всегда подвержены adverse selection risk со стороны информированных. Ситуация, когда после исполнения таких заявок цена движется в невыгодную для неинформированных участников сторону, называется токсичностью потока ордеров. Индикатор PIN служил для измерения этой токсичности, в данной статье мы рассмотрим усовершенствованный индикатор VPIN, который применим и для высокочастотной торговли. Цикл статей основан на публикации Maureen O’Hara "Flow Toxicity and Liquidity in a High Frequency World". Будет все описываться очень подробно, потому что, кроме нахождения непосредственно VPIN, в этой публикации много интересных выводов и фактов.
//Читаем их Excel данные в массив List getParamsFromExcel(string filePath) { //С какой строки начинаем читать данные int start_from_row = 2; //Индекс колонки с Тикером int symbol_index = 1; //Индекс колонки с типом ордера int order_type_index = 2; //Индекс колонки с ценой входа int entry_price_index = 4; //Индекс колонки с ценой стопа int stop_price_index = 5; //Индекс колонки с временем входа int entry_time_index = 7; int current_index = start_from_row; //Текущий символ графика string read_symbol = Bars.Symbol; //Текущий считанный из Excel символ string current_symbol; //Список параметров считанный из Excell List result; result = new List(); //Переменная Excel приложение Excel.Application xlApp; //Переменная рабочая книга Excel.Workbook xlWorkBook; //Переменная рабочий лист Excel.Worksheet xlWorkSheet; //Переменная диапазон Excel.Range range; //Инициализируем переменные xlApp = new Excel.Application(); xlWorkBook = xlApp.Workbooks.Open(filePath); xlWorkSheet = xlWorkBook.Worksheets.get_Item(1); range = xlWorkSheet.UsedRange; //Считываем тикер из Excel current_symbol = (string)(range.Cells[current_index, symbol_index] as Excel.Range).Value2; //Читаем тикеры, пока не наткнемся на пустую строку while(current_symbol != null) { //Если считанный тикер совпадает с тикером графика, на котором запустили робота if(read_symbol == current_symbol) { //Читаем и добавляем параметры ордера result.Add(new OrderParams { ePrice = Convert.ToDouble((range.Cells[current_index, entry_price_index] as Excel.Range).Value2), sPrice = Convert.ToDouble((range.Cells[current_index, stop_price_index] as Excel.Range).Value2), eTime = DateTime.FromOADate((range.Cells[current_index, entry_time_index] as Excel.Range).Value2), pType = ((string)(range.Cells[current_index, order_type_index] as Excel.Range).Value2 == "Short" ? PositionType.Short : PositionType.Long) }); } current_index++; //Считываем очередной тикер current_symbol = (string)(range.Cells[current_index, symbol_index] as Excel.Range).Value2; } //Закрываем рабочую книгу xlWorkBook.Close(true, null, null); //Выходим из приложения xlApp.Quit(); //Уничтожаем созданные объекты releaseObject(xlWorkSheet); releaseObject(xlWorkBook); releaseObject(xlApp); return result; } //Уничтожаем переданный объект private void releaseObject(object obj) { try { System.Runtime.InteropServices.Marshal.ReleaseComObject(obj); obj = null; } catch (Exception ex) { obj = null; } finally { GC.Collect(); } }
Определение и основные принципы построения импульсных стратегий изложены в блоге blog.johandp.com. Стратегии очень простые, но являются основой для многих сложных алгоритмов, их элементы используются и в моих роботах. Привожу здесь перевод статьи из блога в целях классификации различных видов стратегий.
Импульс это старейшая особенность, присущая финансовым рынкам. Также это простейшая и одновременно одна из самых запутанных для применения аномалий. Импульс представляет собой тенденцию, при которой активы, демонстрировавшие рост (или падение) в прошлом, продолжат это движение в будущем. Много исследований этой особенности проводилось в академической литературе и было выяснено, что она присутствует на всех рынках и на всей выборке имеющихся данных. И тем не менее, остается много вопросов в использовании импульса для алгоритмической торговли.
Существует класс алгоритмов, основанных на корелляции цен активов на разных рынках. Для того, чтобы исследовать такие корелляции, например, между американским и российским рынком, необходимо иметь доступ к данным в реальном времени с западных бирж, поставку которых предлагают специальные провайдеры за довольно существенную плату.Однако, есть возможность использования вместо платного датафида парсинг данных real-time с сайта Google Finance. На таких данных высокочастотную стратегию, конечно, не построить, но для более медленных стратегий такой способ вполне подойдет. Впрочем, на высоких частотах сильной корелляции с американцами уже давно нет, и HFT алгоритмы с такой идеей не работают, а вот на длинных промежутках времени есть очень широкое поле для исследований. Как осуществить получение данных с Google Finance рассмотрено в блоге