Оценка эффективности торговой системы

advertisement
Оценка эффективности торговой системы.
Lars N. Kestner
Хотите усовершенствовать свою методику оценки торговой системы? В статье рассматривается
статистический метод оценки прибыльности системы во времени.
Создание торговой системы представляет собой относительно простой процесс. В связи с этим в достаточно
короткие сроки можно создать множество торговых систем. Но поскольку трейдинг ставит своей целью
получить прибыль, любой игрок заинтересован в создании систем, дающих самую большую прибыль, а не в
большом их количестве. Как можно оценить работу торговых систем, с тем, чтобы выбрать оптимальную для
использования? Валовая прибыль, которую дает использование системы это очень важный показатель, но
существуют и другие факторы, которые не менее важны. Если опереться в оценке деятельности системы на
такой фактор как устойчивость возвратов, это поможет нам ответить на вопрос: как поведет себя система в
будущем?
Существует множество способов оценки работы торговой системы, однако все они имеют свои слабые места.
Некоторые искажаются одной или двумя большими сделками, другие не принимают в расчет фактор риска.
Результаты третьих искажены корреляцией возвратов, тогда как четвертые не учитывают тот факт, что
система может вести себя по-разному в разные периоды. В статье рассмотрен новый метод оценки торговый
системы, который, по моему мнению, превосходит существующие методики. Этот метод, учитывающий
соотношение риска и прибыли, основан на статистических техниках оценки системы. Используя его, мы не
рассматриваем возвраты независимо. Краеугольным камнем методики является анализ устойчивости
возвратов с течением времени.
Новый метод я назвал К-коэффициентом. В нем используется кривая доходности. Кривая доходности это
график, на котором представлено изменение прибыли во времени. Мною была создана математическая
модель анализа кривой доходности, основанная на том, что доходность в любой день выражается через
расстояние этого дня от начала теста.
Модель доходности: Equityi = b0 + (b1)(Observationi) = {Y = bo + b1x}, где
Equityi накопленная доходность по observationi.
(К - коэффициент может высчитываться на дневной, недельной и месячной кривой доходности).
Числитель К-коэффициента - b1. Он представляет собой отображение возврата и вычисляется через
регрессию методом наименьших квадратов модели доходности. b1 также эквивалентно наклону линии
тренда, вычисленной методом наименьших квадратов от кривой доходности. Чем больше значение b1, тем
больший рост кривой доходности, тем быстрее система делает деньги. Риск торговой системы определяется
стандартной ошибкой b1, которая также вычисляется при помощи техники линейной регрессии. Стандартная
ошибка b1 измеряет эффективность модели доходности. Высокие значения стандартной ошибки указывают
на непоследовательную работу системы. Низкие значения, наоборот, указывают на стабильные возвраты.
Наконец стандартная ошибка b1 умножается на квадратный корень количества наблюдений на кривой
доходности. Это позволяет нам добиться нормализации К-коэффициента по отношению к временным
диапазонам (один год, пять лет, десять лет и так далее) и периодичности данных (дневные, недельные,
месячные). Те, кто знаком со статистикой, увидят в К-коэффициенте статистический коэффициент Т для b1 с
фактором коррекции на количество наблюдений
Вычисления.
Хотя этот процесс кажется сложным, коэффициент легко вычислить к форматной таблице (рисунок 1).
На рисунке 2 представлена 20-дневная кривая доходности. В первый день капитал равен 0 долларов, к 20-му
дню он вырастает до 20 долларов. Расчет при помощи метода наименьших квадратов эквивалентен
построению линии тренда через кривую доходности. В гипотетический день 0, значение линии тренда будет
b0. Затем линия тренда будет расти на b1 с каждой единицей роста во времени.
Для системы 1:
Equityi = -0.75 + 0.58 x Observationi, со стандартной ошибкой b1 = 0.022
Значения К-коэффициента выпадают между -5 и +5. Преимущественно положительные значения
коэффициента говорят о том, что результаты системы положительные и стабильные, тогда как
исключительно негативные значения коэффициента свидетельствует о нежелательно неблагоприятной
работе системы.
Значения близкие к 0 указывают на то, что система приносит только небольшую прибыль и убытки и/или что
прибыль непостоянна.
Рисунок 1. Вычисление К-коэффициента в EXCEL. Номер наблюдения (observation) помещается в колонку А,
тогда как значение кривой доходности в колонку В. К-коэффициент высчитывается в ячейке В21 по формуле:
К =SLOPE(B1:B20,A1:A20)*SQRT(DEVSQ(A1:A20))/STEYX(B1:B20,A1:A20)/SQRT(20).
К-коэффициент может вычисляться на основе кривой доходности как отдельного контракта или фьючерса,
так и на основе портфеля. Единственное условие: размеры контрактов должны соответствовать для каждого
теста. Если задействуется большое число контрактов, то это ведет к образованию экспоненциальной кривой
доходности, тогда как коэффициент устанавливается линейное отношение между временем и прибылью. Я бы
рекомендовал тестировать систему по максимально возможному количеству данных, поскольку это
увеличивает ценность результатов тестирования. Хорошими показателями я считаю значение Ккоэффициента 1.0 и выше для отдельных контрактов и значениями 3.0 и выше для диверсифицированных
портфелей. Портфели обычно имеют более высокие К-коэффициенты, чем отдельные контракты, что
обусловлено диверсификацией. Обычно я советую использовать дневные модели, но поскольку ваш
компьютер может не потянуть обработку большого количества данных, то можно использовать недельные и
месячные кривые доходности.
Сравним две торговые системы. На рисунке 2 представлена Система 1, на рисунке 3 Система 2, возврат по
обоим составляет примерно 10 долларов за 20 дней. Какая система лучше? Производим расчет модели
доходности для системы 2. b1 составляет 0.55, стандартная ошибка 0.068.
Рисунок 2. Кривая доходности системы 1. Наклон кривой доходности 0.58. (Наклон 0.58, уравнение
трендлинии -0.75 + 0.58 x.). Линия тренда, высчитанная при помощи метода наименьших квадратов,
указывает на постоянные возвраты.
Рисунок 3. Кривая доходности системы 2. Наклон кривой доходности 0.55. (Наклон 0.55 уравнение для
трендлинии 2.73 + 0.55 x.) Линия тренда, высчитанная при помощи метода наименьших квадратов,
указывает на меньшее постоянство в возвратах.
Хотя возвраты по обеим системам примерно одинаковые стандартная ошибка для Системы 1 значительно
ниже, чем для системы 2. К-коэффициент Системы 1 выше, чем в Системе 2, что дает лучшее соотношение
прибыли к риску. Это умозаключение наглядно демонстрируют графики. На рисунке линия тренда
соответствует кривой доходности, тогда как на рисунке 3 кривая доходности часто отходит от линии тренда,
что указывает на меньшее постоянство в возвратах, чем в Системе 1. На основании всего вышесказанного,
можно сделать вывод, что Система 1 более предпочтительна.
К-коэффициент представляет собой мощный инструмент анализа эффективности системы. В то же самое
время его легче высчитать. Использование этого коэффициента позволит вам отделить хорошие системы от
плохих. Помните, что ваша цель не посвятить все время составлению систем, а получить прибыль от работы
по ним. Используйте К-коэффициент и не пожалеете.
Код для TRADESTATION
Когда эта система работает одновременно с системами, генерирующими сделки, она определяет Ккоэффициент.
System Name : K-ratio
VAR: Observation(0), Count(0), SumXY(0), SumX(0), SumY(0), SumXSqr(0);
VAR : Beta0(0), Beta1(0), SumResidSqr(0), SigmaRegress(0), StandardErrB1(0);
Stocks & Commodities V14:3 (115-118): Measuring System Performance by Lars N. Kestner
Copyright (c) Technical Analysis Inc.
VAR: StandardErrB1Denom(0), YProjected(0), KRatio(0);
ARRAY: Equity[5000](0);
Observation = Observation+1;
Equity[Observation] = NetProfit + OpenPositionProfit;
IF Date = LastCalcDate THEN
BEGIN
For Count = 1 TO Observation
BEGIN
SumXY = SumXY + ( Count * Equity[Count] );
SumX = SumX + Count;
SumY = SumY + Equity[Count];
SumXSqr = SumXSqr + ( Count * Count );
END;
Beta1 = ( SumXY - ( SumX * SumY ) / Observation ) /
( SumXSqr - ( SumX * SumX ) / Observation );
Beta0 = ( SumY / Observation ) - Beta1 * ( SumX / Observation );
For Count = 1 TO Observation
BEGIN
YProjected = Beta0 + ( Beta1 * Count );
SumResidSqr = SumResidSqr + SQUARE( Equity[Count] - YProjected );
StandardErrB1Denom = StandardErrB1Denom + SQUARE( Count - ( Observation + 1 ) / 2 );
END;
SigmaRegress = SQUAREROOT( SumResidSqr / ( Observation - 2 ));
StandardErrB1 = SigmaRegress / SQUAREROOT ( StandardErrB1Denom );
KRatio = Beta1 / ( StandardErrB1 * SQUAREROOT( Observation ));
Print( "K-ratio = ", KRatio:4:2);
END;
Download