Estratégia de negociação de frações fixas

Autora:ChaoZhang, Data: 23 de janeiro de 2021
Tags:

Resumo

A ideia central desta estratégia é manter a porcentagem de investimento de um ativo na carteira fixa. Quando o valor do ativo aumenta, o investidor vende alguns para manter a porcentagem. Quando ele cai, o investidor compra mais para repor a porcentagem. A estratégia é adequada para ativos relativamente estáveis.

Estratégia lógica

A estratégia define primeiro o parâmetro percentual de investimento percent_invested, ou seja, a percentagem do activo na carteira.

  1. Quando a posição for 0, calcular os contratos de compra com base em %_invested e capital inicial.

  2. Ao manter, compare a quantidade investida em porcentagem investida com o capital em percentagem_investido. Se for muito baixo, compre mais contratos. Se for muito alto, venda contratos.

  3. Repita a etapa 2 para manter a percentagem de investimento fixa.

Vantagens

  • Permite a detenção a longo prazo de ativos estáveis sem negociação frequente.

  • Lucros de reequilíbrio periódico decorrentes de flutuações dos ativos.

  • A diversificação dos investimentos entre ativos não correlacionados reduz o risco de carteira.

  • Evitar perdas completas evitando o investimento completo antes do estouro da bolha.

Análise de riscos

  • Risco de perdas mais elevado para activos voláteis.

  • Comércio frequente significa mais taxas.

  • O reequilíbrio pode atrasar-se, faltando os melhores pontos de entrada/saída.

  • Ajustes de percentagem incorretos podem causar excesso de negociação.

Os riscos podem ser reduzidos:

  1. Seleção cuidadosa dos activos para evitar uma elevada volatilidade.

  2. Otimizar a lógica de reequilíbrio para reduzir a frequência do comércio.

  3. Definição de unidades mínimas de mudança de posição para evitar excesso de negociação.

  4. Otimizar as definições de percentagem para evitar a concentração excessiva.

Orientações de otimização

A estratégia pode ser melhorada:

  1. Adicionar a lógica de stop loss para cortar as perdas a um certo limiar.

  2. Adicionar a validação do sinal antes do reequilíbrio para evitar pontos de não tendência.

  3. Personalização de percentagens, taxas de stop loss por ativo.

  4. Adicionar módulo de otimização de parâmetros para encontrar parâmetros ideais.

  5. Apoiar o encerramento de posições para reinvestir em outros ativos para uma alocação dinâmica.

Resumo

A estratégia de porcentagem fixa fornece diversificação e controle de risco, mas tem riscos como reequilíbrio atrasado e perdas de ativos voláteis.


/*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)




Mais.