Перепроданные и перекупленные условия
В контексте финансовых рынков термины “перепродано” и “перекуплено” широко используются для обозначения потенциальных точек разворота путем выявления случаев, когда активы слишком далеко ушли в одном направлении. Эти концепции служат важными индикаторами как в ручных, так и в алгоритмических торговых стратегиях. Этот подробный обзор исследует эти условия, как они измеряются и их применение в алготрейдинге.
Определения
-
Перепроданное условие: Актив считается “перепроданным”, когда его цена резко упала и до уровня, считающегося ниже его истинной стоимости, часто из-за панической продажи или экстремальных рыночных реакций. Это предполагает, что актив может быть недооценен и готов к коррекции или развороту цены.
-
Перекупленное условие: И наоборот, “перекупленное” условие описывает ситуацию, когда цена актива резко выросла и потенциально за пределами его истинной стоимости, обычно из-за восторженных покупок. Это указывает на вероятность нисходящего тренда или коррекции цены.
Индикаторы для выявления перепроданных и перекупленных условий
Индекс относительной силы (RSI)
Индекс относительной силы (RSI) - это один из наиболее часто используемых осцилляторов импульса для выявления перекупленных и перепроданных условий. Разработанный Дж. Уэллесом Уайлдером младшим, RSI варьируется от 0 до 100, с уровнями, обычно интерпретируемыми следующим образом:
- RSI выше 70: Перекуплено
- RSI ниже 30: Перепродано
Формула RSI:
RSI = 100 - [100 / (1 + RS)]
Где RS (относительная сила) - это среднее значение ‘n’ дней восходящих закрытий, деленное на среднее значение ‘n’ дней нисходящих закрытий.
Схождение-расхождение скользящих средних (MACD)
MACD - это еще один популярный инструмент. Он измеряет взаимосвязь между двумя экспоненциальными скользящими средними (EMA) цены ценной бумаги. Расчет включает:
- Линия MACD: (12-дневная EMA - 26-дневная EMA)
- Сигнальная линия: 9-дневная EMA линии MACD
Перекупленные и перепроданные условия в MACD часто определяются путем анализа разницы между этими линиями, известной как гистограмма:
- Большое положительное значение MACD предполагает, что ценная бумага может быть перекуплена.
- Большое отрицательное значение MACD указывает на то, что ценная бумага может быть перепродана.
Стохастический осциллятор
Созданный Джорджем Лейном, стохастический осциллятор сравнивает конкретную цену закрытия ценной бумаги с диапазоном ее цен за определенный период:
- Значения выше 80 обычно указывают на перекупленные условия.
- Значения ниже 20 указывают на перепроданные условия.
Формула:
%K = (Текущее закрытие - Самый низкий минимум) / (Самый высокий максимум - Самый низкий минимум) * 100
%D = 3-дневная SMA от %K
Применение в алгоритмической торговле
Торговые алгоритмы
Алгоритмическая торговля использует математические и статистические модели для выполнения сделок на основе заранее определенных критериев. Для обнаружения перепроданных и перекупленных условий алгоритмы интегрируют технические индикаторы, такие как RSI, MACD и стохастические осцилляторы, в свою кодовую базу для генерации торговых сигналов. Эти сигналы могут автоматически запускать ордера на покупку/продажу при достижении определенных порогов.
Пример стратегии алгоритма
Рассмотрим простую стратегию с использованием RSI:
- Сигнал покупки: Если RSI падает ниже 30 (перепродано), купить актив.
- Сигнал продажи: Если RSI поднимается выше 70 (перекуплено), продать актив.
Этот алгоритм можно усовершенствовать дополнительными параметрами, такими как уровни стоп-лосса и тейк-профита для управления рисками.
class SimpleRSIStrategy:
def __init__(self, asset, period=14, rsi_oversold=30, rsi_overbought=70):
self.asset = asset
self.period = period
self.rsi_oversold = rsi_oversold
self.rsi_overbought = rsi_overbought
def calculate_rsi(self, prices):
gains = [0 if x<0 else x for x in [i - j for i, j in zip(prices[1:], prices[:-1])]]
losses = [-x if x<0 else 0 for x in [i - j for i, j in zip(prices[1:], prices[:-1])]]
average_gain = sum(gains) / self.period
average_loss = sum(losses) / self.period
rs = average_gain / average_loss
rsi = 100 - (100 / (1 + rs))
return rsi
def generate_signals(self, prices):
if len(prices) < self.period:
return None
rsi = self.calculate_rsi(prices)
if rsi < self.rsi_oversold:
return 'buy'
elif rsi > self.rsi_overbought:
return 'sell'
return 'hold'
Бэктестинг
Перед развертыванием таких стратегий на реальных рынках бэктестинг имеет решающее значение. Бэктестинг включает запуск алгоритма на исторических данных для оценки производительности. Высокие коэффициенты выигрыша или доходность в бэктестах предполагают потенциально прибыльную стратегию при применении к будущим рыночным условиям.
Пример фреймворка для бэктестинга
from datetime import datetime
class Backtester:
def __init__(self, strategy, historical_data):
self.strategy = strategy
self.historical_data = historical_data
def run_backtest(self):
positions = []
signals = []
for i in range(len(self.historical_data)):
prices = self.historical_data[:i+1]
signal = self.strategy.generate_signals(prices)
signals.append(signal)
if signal == 'buy':
positions.append({"action": "buy", "price": prices[-1], "date": datetime.now()})
elif signal == 'sell' and positions:
bought_position = positions.pop()
profit_loss = prices[-1] - bought_position["price"]
print(f'Продано по {prices[-1]}. Куплено по {bought_position["price"]}. Прибыль/Убыток: {profit_loss}')
# Пример исторических данных (например, цены закрытия)
historical_prices = [100, 102, 101, 98, 95, 90, 85, 88, 92, 95, 97, 98, 100]
strategy = SimpleRSIStrategy(asset='ABC')
backtester = Backtester(strategy, historical_prices)
backtester.run_backtest()
Психологические соображения
Трейдеры должны знать, что индикаторы перепроданности и перекупленности не гарантируют разворотов. Рыночные настроения, экономические факторы и неожиданные новости могут влиять на цены за пределами технических индикаторов. Поэтому включение стратегий управления рисками всегда важно.
Известные компании, специализирующиеся на алгоритмической торговле и аналитике
Несколько компаний предлагают платформы и инструменты для разработки и развертывания стратегий алгоритмической торговли:
- QuantConnect - AlgoTrader - Quantopian (теперь часть Robinhood) - Kite от Zerodha
Заключение
Понимание и применение концепций перепроданных и перекупленных условий в алгоритмической торговле может предоставить ценные идеи и улучшить эффективность торговли. Использование технических индикаторов, таких как RSI, MACD и стохастические осцилляторы в алгоритмических системах, позволяет трейдерам выявлять потенциальные рыночные развороты и принимать обоснованные торговые решения. Однако эти индикаторы должны быть частью более широкой стратегии, которая включает управление рисками и тщательный бэктестинг для повышения прибыльности и снижения потенциальных потерь.