Избранное трейдера Карл Листов

по

Простейшая стратегия долгосрочного инвестирования.

Попробуем сделать простейшую стратегию для долгосрочного инвестирования. В качестве рабочего будем использовать дневной таймфрейм. Вся суть стратегии будет заключаться в простейшей идеи, что падение рынка обычно связанно с более высокой волатильностью, чем в среднем. Соответсвенно, мы будем покупать, когда волатильность ниже среднего, и выходить из лонга когда она повышается. В качестве меры волатильности будем использовать размах бара High — Low. Остается вопрос лишь в том как измерить долгосрочное среднее волатильности. Можно использовать — среднее, то есть скользящую среднюю взятую за определенный период. Но так как мы имеем дело с распределением с тяжелыми хвостами, среднее будет плохой оценкой центра распределения. Поэтому будем использовать робастную оценку центра распределения — в нашем случаи это будет медиана, или более точно, скользящая медиана взятая с большим окном. Наши рассуждения достаточно напрямую транслируются в код на WealthLab:
 
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using WealthLab;
using WealthLab.Indicators;

namespace WealthLab.Strategies
{
	public class MyStrategy : WealthScript
	{
		private StrategyParameter smaPeriod;
		public MyStrategy()
		{
			smaPeriod = CreateParameter("Range Sma Period", 1, 1, 50, 1);      
			
		}
		
		protected override void Execute()
		{
			DataSeries range = High - Low;
			DataSeries rangeSma = new WealthLab.Indicators.SMA(range, smaPeriod.ValueInt, "sma");
			DataSeries signal = rangeSma -  new WealthLab.Indicators.Median(range, 200, "median");
			
			for(int bar = 0; bar < Bars.Count; bar++)
			{				
				if (IsLastPositionActive)
				{
					//code your exit rules here
					if (signal[bar] > 0)
						SellAtMarket(bar + 1, LastPosition, "sell");
				}
				else
				{
					//code your entry rules here
					if (signal[bar] < 0)
						BuyAtMarket(bar + 1, "buy");
				}
			}
		}
	}
}


( Читать дальше )

Математика. Книги.

Обещал выложить книжки по математике, начиная от азов, теорвера, и заканчивая моделями числовых рядов и машинным обучением.
Структура примерно такая:
1. basic  - матан, линейная алгебра, если прогуляли/никогда не знали/ничего не помните
2. probability — базовая теория вероятности/статистика
3. time_series — стандартные(в основном стационарные) статистические модели числовых рядов
4. advanced — про продвинутые модели и машинное обучение
bonus. cointegration/r/bayes — про коинтеграцию, R (пакет для стат. расчетов), и Байесовскую статистику

Ссылка на книги  


Основы статистического арбитража. Коинтеграция.

Собственно, понятие коинтеграции и лежало, в основе статистического арбитража, который только начал появлятся в конце 80-х и позволил первопроходцам из JP Morgan, нарубить не мало денег, пока…, но об этом в конце статьи. Поэтому в этот раз мы поговорим, про коинтеграцию, что это такое, зачем и почему. Но начнем из далека и рассмотрим такие статистически понятия как порядок интеграции процесса, и фиктивной (spurios) регрессии, которые и лежат в основе. 

Рассмотрим для начала простейший процесс, гауссовский шум:
Основы статистического арбитража. Коинтеграция.

 Теперь построим его кумулятивную сумму, то есть возьмем значения и последовательно их сложим, таким образом получим что Y_i = sum k = 0..i X_k, где X_k — это исходный гаусовский шум, Y_i — результирующий процесс. То есть в данном случаи взяли шум и его проинтегрировали, таким образом получив случайное блуждание. Так же мы можем повторить данный процесс еще раз, но на этот раз взяв в качестве исходных значений, полученное нами на предыдущем шаги случайное блуждание. Таким образом получим (сверху — интеграл шума, случайное блуждание, снизу — повторная сумма но на этот раз взятая по случайному блужданию):

( Читать дальше )

Про поиск паттернов

    • 27 апреля 2011, 03:16
    • |
    • Deleted
  • Еще
В последнее время довольно много времени провожу в поисках ценовых паттернов. Интересно, что паттернов, которые явно не случайны довольно много. Неслучайностью предлагаю считать все, что с вероятностью более 50% ведет себя предсказуемо. Например, растет или падает после появления фигуры. Дык вот, оказалось, что главная проблема не в том как найти паттерн, это довольно легко автоматизировать, но проблема в том, что даже если паттерн срабатывает, этого не достаточно для того, чтобы сделать из него что-то путное. Дело в том, что многие паттерны даже при всей своей неслучайности не способны обеспечивать устойчивое отношение средней прибыли к убыткам больше 1. В этом основная проблема. Я объясняю это распределением размера прибыли по «сделкам». Если скажем взять и посчитать какова была максимальная прибыль в растущих днях, то получится вот такая картинка:

Цифры внизу, это отношения: (close — open) / 100. То есть «купил и держи». Купил на самом открытии и продержал до самого закрытия. А слева, это то, сколько раз это отношение встречалось в истории с середины 2005 года. Поэтому не все паттерны одинаково полезны. Нужно найти не просто  неслучайный вход, но еще и такой вход, который может обеспечить прибыль хотя 1.5 к 1. Да, первичную проверку я делаю так. Заходим по сигналу от паттерна. Выходим на следующий день на открытии.
 
Интересно было бы также узнать какие методики вы применяете при поиске паттернов?

Написание торговых роботов. Шаги 0-2.

Роботы… Как много в этом слове для уха трейдера слилось!
Как? Откуда? С чего начать?

Как ни банально, но для начала необходимо определиться со стратегией. Она может быть создана либо основываясь на стратегии других трейдеров (Резвяков, привет! Ударные дни легли в основу самого первого робота, который работал и зарабатывал у меня 1.5 года назад), либо — основываясь на собственных ощущениях и понимании рынка.

Мы пойдём путём наиболее логичным и, на мой взгляд, правильным — будем исследовать рынок на истории, искать и наблюдать закономерности, их тестировать. А в случае успеха — реализовывать в торговом роботе.

шаг 0 — что почитать?
1) Кургузкин А.А. Биржевой трейдинг: системный подход
Лучшая книга по системному трейдингу. Полезна всем и каждому, в независимости от вашей причастности к роботам.

Далее книги по C# — учимся программировать и готовимся к тестированию / реализации своих будущих алгоритмов:
2) Герберт Шилдт. C# 4.0 полное руководство.
3) http://msdn.microsoft.com/ru-ru/library/bb383962%28VS.90%29.aspx
4) http://msdn.microsoft.com/ru-ru/beginner/ee344863.aspx
5) http://www.youtube.com/user/geekitdevelop


Шаг 1 — поиск закономерностей:

открываем график, накладываем индикаторы (хаха), ищем индикаторы/их пересечения, которые позволят нам обнаружить начало движения / его остановку / пилу /… Собственно всё то, что может стать костяком нашего будущего робота.
Кому индикаторы не внушают доверие — начинаем анализ стакана, ленты, строим объёмные уровни, анализируем дельту — и используем всё это для того же самого — понимания и осознания как что где может работать. Вот один из примеров.

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


Шаг 2 — тестирование
Для многих это первый затык, который останавливает.

Для тестирования берём либо Wealth-Lab (лучше брать версию не младше 5.0 — присутствует .Net язык C#. С помощью Wealth-Lab я умудрялся даже тестировать стратегии, основанные только на объёмах (кому интересны детали как — можно личкой / в комментах)),
либо — вариант более проффесиональный и намного лучше для будущего — библиотека Stock# (мой выбор).

Кому-то может для тестов подойдёт и TsLab. На вкус и цвет все фломастеры разные.
Для начала в любом случае советую выбрать тестировщик с визуальным редактором.


( Читать дальше )

....все тэги
UPDONW
Новый дизайн