Стратегия торговли фиксированными фракциями

Автор:Чао Чжан, Дата: 2023-09-22 16:51:25
Тэги:

Обзор

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

Логика стратегии

Стратегия сначала устанавливает процентный параметр инвестиций percentage_invested, то есть процент актива в портфеле.

  1. Когда позиция равна 0, рассчитывают контракты на покупку на основе процентов_инвестиций и начального капитала.

  2. При хранении, сравнить инвестированную сумму процент инвестированный на капитал процент_инвестированный. Если слишком низкий, купить больше контрактов. Если слишком высокий, продать контракты.

  3. Повторите шаг 2 для сохранения процента инвестиций.

Преимущества

  • Разрешает долгосрочное хранение стабильных активов без частой торговли.

  • Периодическая ребалансировка прибыли от колебаний активов.

  • Диверсификация инвестиций по некоррелированным активам снижает риск портфеля.

  • Предотвращает полные потери, избегая полной инвестиции до того, как пузырь лопнет.

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

  • Более высокий риск потери для волатильных активов.

  • Частая торговля означает больше комиссионных.

  • Ребалансировка может задерживаться, отсутствуют лучшие точки входа/выхода.

  • Неправильные процентные настройки могут привести к переоценке.

Риски могут быть уменьшены:

  1. Осторожный выбор активов, чтобы избежать высокой волатильности.

  2. Оптимизация логики ребалансировки для сокращения частоты торговли.

  3. Установка минимальных единиц изменения позиции для предотвращения переоценки.

  4. Оптимизация процентной ставки для предотвращения чрезмерной концентрации.

Руководство по оптимизации

Стратегия может быть улучшена путем:

  1. Добавление логики стоп-лосса для сокращения потерь на определенном пороге.

  2. Добавление подтверждения сигнала перед ребалансировкой, чтобы избежать ненормальных точек.

  3. Настраивание процентов, коэффициенты остановки по активам.

  4. Добавление модуля оптимизации параметров для поиска оптимальных параметров.

  5. Поддержка закрытия позиций для реинвестирования в другие активы для динамического распределения.

Резюме

Фиксированная процентная стратегия обеспечивает диверсификацию и контроль рисков. Но она имеет риски, такие как отставание ребалансирования и волатильные потери активов. Дальнейшие улучшения логики остановки потерь и проверки сигнала могут повысить стабильность.


/*backtest
start: 2022-09-21 00:00:00
end: 2022-11-22 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
// strategy("Fixed Fractioning", overlay=true, initial_capital=100000.0)

percent_invested=input(50.0,title="Percent Invested",maxval=100.0,minval=0.0)
fraction_invested=percent_invested/100

from_day=input(1,title="From Day",maxval=31,minval=1)
from_month=input(1,title="From Month",maxval=12,minval=1)
from_year=input(2017,title="From Year",maxval=2018,minval=1900)

to_day=input(1,title="To Day",maxval=31,minval=1)
to_month=input(1,title="To Month",maxval=12,minval=1)
to_year=input(2018,title="To Year",maxval=2018,minval=1900)

// === FUNCTION EXAMPLE === from: https://www.tradingview.com/script/62hUcP6O-How-To-Set-Backtest-Date-Range/
start     = timestamp(from_year, from_month, from_day, 00, 00)  // backtest start window
finish    = timestamp(to_year, to_month, to_day, 23, 59)        // backtest finish window
window()  => true // create function "within window of time"
strategy.initial_capital = 50000
if strategy.position_size==0 and window()
    contracts_to_buy=(fraction_invested*strategy.initial_capital)/close
    strategy.entry("long",long=true,qty=contracts_to_buy,limit=close,when=contracts_to_buy>1)

invested=(strategy.position_size*close)/strategy.equity
if invested<fraction_invested and window()
    contracts_to_buy=((fraction_invested-invested)*strategy.equity)/close
    strategy.order("long",long=true,qty=contracts_to_buy,limit=close,when=contracts_to_buy>1)

else 
    if invested>fraction_invested and window()
        contracts_to_sell=((invested-fraction_invested)*strategy.equity)/close
        strategy.order("sell",long=false,qty=contracts_to_sell,limit=close,when=contracts_to_sell>1)




Больше