Стратегия бэктестинга статистической волатильности, основанная на методе экстремальных значений


Дата создания: 2023-12-26 10:24:53 Последнее изменение: 2023-12-26 10:24:53
Копировать: 1 Количество просмотров: 715
1
Подписаться
1621
Подписчики

Стратегия бэктестинга статистической волатильности, основанная на методе экстремальных значений

Обзор

Эта стратегия использует метод крайней стоимости для вычисления статистической волатильности, также известной как историческая волатильность. Она основана на максимальных значениях цены, минимальной цены и цены закрытия, в сочетании с временными факторами, для вычисления статистической волатильности. Эта волатильность отражает волатильность цен на активы.

Стратегический принцип

  1. Вычисление предельных значений максимальной, минимальной и закрывающей цены за определенный период времени

  2. Используйте формулы по экстремальному значению для вычисления статистической волатильности

    SqrTime = sqrt(253 / Length)  
    Vol = ((0.6 * log(xMaxC / xMinC) * SqrTime) + (0.6 * log(xMaxH / xMinL) * SqrTime)) * 0.5
    
  3. Сопоставление колебаний с установленными верхними и нижними порогами для получения торговых сигналов

    pos = iff(nRes > TopBand, 1, 
             iff(nRes < LowBand, -1, nz(pos[1], 0)))
    
  4. Положите лизинг или лизинг в зависимости от торгового сигнала

Анализ преимуществ

Основные преимущества этой стратегии:

  1. Используя статистические показатели волатильности, можно эффективно улавливать горячие моменты рынка и возможности поворота.
  2. Рассчитывается волатильность по экстремальному методу, не чувствителен к экстремальным ценам, результаты более стабильны и надежны
  3. Можно торговать с различными волатильностями, регулируя параметры

Анализ рисков

Основные риски, связанные с этой стратегией:

  1. Статистическая волатильность сама по себе имеет определенную отсталость и не позволяет точно определить переломные моменты рынка.
  2. Показатели волатильности медленно реагируют на внезапные события и могут упустить краткосрочные торговые возможности
  3. Существует определенный риск ошибочной сделки и риск остановки.

Как бороться с этим и как его решить?

  1. Сокращение статистических циклов и повышение чувствительности к изменениям рынка
  2. В сочетании с другими показателями в качестве вспомогательных, повышение точности сигнала
  3. Установка стоп-стоп и контроль потери

Направление оптимизации

Оптимизация этой стратегии:

  1. Испытание различных параметров статистических циклов для определения оптимальных параметров
  2. Добавление модуля управления позициями для корректировки позиций в соответствии с волатильностью
  3. В сочетании с такими показателями, как скользящая средняя, установлены фильтрующие условия, которые уменьшают количество ошибочных сделок

Подвести итог

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

Исходный код стратегии
/*backtest
start: 2022-12-19 00:00:00
end: 2023-12-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 22/11/2014
// This indicator used to calculate the statistical volatility, sometime 
// called historical volatility, based on the Extreme Value Method.
// Please use this link to get more information about Volatility. 
//
// You can change long to short in the Input Settings
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
strategy(title="Statistical Volatility - Extreme Value Method ", shorttitle="Statistical Volatility Backtest")
Length = input(30, minval=1)
TopBand = input(0.005, step=0.001)
LowBand = input(0.0016, step=0.001)
reverse = input(false, title="Trade reverse")
hline(TopBand, color=red, linestyle=line)
hline(LowBand, color=green, linestyle=line)
xMaxC = highest(close, Length)
xMaxH = highest(high, Length)
xMinC = lowest(close, Length)
xMinL = lowest(low, Length)
SqrTime = sqrt(253 / Length)
Vol = ((0.6 * log(xMaxC / xMinC) * SqrTime) + (0.6 * log(xMaxH / xMinL) * SqrTime)) * 0.5
nRes = iff(Vol < 0,  0, iff(Vol > 2.99, 2.99, Vol))
pos = iff(nRes > TopBand, 1,
	   iff(nRes < LowBand, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )  
plot(nRes, color=blue, title="Statistical Volatility")