La idea central de esta estrategia es mantener el porcentaje de inversión de un activo en la cartera fija. Cuando el valor del activo aumenta, el inversor vende algo para mantener el porcentaje. Cuando cae, el inversor compra más para reponer el porcentaje. La estrategia es adecuada para activos relativamente estables.
La estrategia establece primero el parámetro porcentaje de inversión %_invested, es decir, el porcentaje del activo de la cartera.
Cuando la posición es 0, calcular los contratos de compra basados en el porcentaje_invertido y el capital inicial.
Cuando se mantiene, comparar el porcentaje de la cantidad invertida invertida con el porcentaje de capital invertido. Si es demasiado bajo, comprar más contratos. Si es demasiado alto, vender contratos.
Repita el paso 2 para mantener el porcentaje de inversión fijo.
Permite la tenencia a largo plazo de activos estables sin negociación frecuente.
Los beneficios de reequilibrio periódico de las fluctuaciones de los activos.
La diversificación de las inversiones en activos no correlacionados reduce el riesgo de cartera.
Previene pérdidas completas evitando la inversión completa antes de que la burbuja estalle.
Riesgo de pérdida más alto para los activos volátiles.
El comercio frecuente significa más honorarios.
El reequilibrio puede retrasarse, faltando los mejores puntos de entrada/salida.
La configuración de porcentajes incorrectos puede causar un exceso de operaciones.
Los riesgos pueden reducirse:
Seleccionar los activos con cuidado para evitar una alta volatilidad.
Optimización de la lógica de reequilibrio para reducir la frecuencia del comercio.
Establecimiento de unidades mínimas de cambio de posición para evitar el exceso de negociación.
Optimización de los ajustes de porcentaje para evitar la sobreconcentración.
La estrategia puede mejorarse mediante:
Añadir una lógica de stop loss para reducir las pérdidas en cierto umbral.
Añadir la validación de la señal antes del reequilibrio para evitar los puntos de no tendencia.
Personalizar los porcentajes, las tasas de stop loss por activo.
Añadir módulo de optimización de parámetros para encontrar parámetros óptimos.
Apoyar el cierre de posiciones para reinvertir en otros activos para una asignación dinámica.
La estrategia de porcentaje fijo proporciona diversificación y control de riesgos, pero tiene riesgos como el reequilibrio retrasado y las pérdidas de activos volátiles.
/*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)