Feste Fraktionshandelsstrategie

Schriftsteller:ChaoZhang, Datum: 2023-09-22 16:51:25
Tags:

Übersicht

Die Kernidee dieser Strategie besteht darin, den Anlageanteil eines Vermögenswerts im Portfolio festzuhalten. Wenn der Vermögenswert steigt, verkauft der Anleger etwas, um den Prozentsatz zu halten. Wenn er fällt, kauft der Anleger mehr, um den Prozentsatz aufzufüllen. Die Strategie eignet sich für relativ stabile Vermögenswerte.

Strategie Logik

Die Strategie legt zunächst den Anlagegehalt-Parameter %_invested fest, d. h. den Anteil des Vermögenswerts im Portfolio.

  1. Wenn die Position 0 beträgt, berechnen Sie auf Basis von %_invested und Anfangskapital Kaufverträge.

  2. Vergleichen Sie beim Halten des investierten Betrags den investierten Prozentsatz mit dem investierten Anteil. Wenn zu niedrig, kaufen Sie mehr Kontrakte. Wenn zu hoch, verkaufen Sie Kontrakte.

  3. Wiederholen Sie Schritt 2, um den Anlageanteil festzuhalten.

Vorteile

  • Ermöglicht die langfristige Bilanzierung stabiler Vermögenswerte ohne häufigen Handel.

  • Periodische Neuausgleichsgewinne aus Vermögensschwankungen

  • Die Diversifizierung der Anlagen auf nicht korrelierte Vermögenswerte verringert das Portfoliorisiko.

  • Vermeidet vollständige Verluste, indem man eine vollständige Investition vermeidet, bevor die Blase platzt.

Risikoanalyse

  • Höhere Verlustrisiko für volatile Vermögenswerte.

  • Häufiger Handel bedeutet mehr Gebühren.

  • Das Re-Balancing kann verzögert sein, da die besten Ein-/Ausgangspunkte fehlen.

  • Falsche Prozentsatz-Einstellungen können zu Überhandelungen führen.

Die Risiken können verringert werden, indem

  1. Die Auswahl der Vermögenswerte ist sorgfältig vorzunehmen, um hohe Volatilität zu vermeiden.

  2. Optimierung der Re-Balancing-Logik zur Verringerung der Handelsfrequenz.

  3. Festlegung von Mindestpositionswechsel-Einheiten zur Verhinderung von Überhandelungen.

  4. Optimierung der Prozentsatz-Einstellungen zur Verhinderung einer Überkonzentration.

Optimierungsrichtlinien

Die Strategie kann verbessert werden, indem

  1. Hinzufügen von Stop-Loss-Logik, um Verluste an einer bestimmten Schwelle zu reduzieren.

  2. Hinzufügen von Signalvalidierung vor dem Neuausgleich, um Nicht-Trendspots zu vermeiden.

  3. Prozentsätze anpassen, Stop-Loss-Verhältnisse pro Vermögenswert.

  4. Hinzufügen eines Parameteroptimierungsmoduls, um optimale Parameter zu finden.

  5. Unterstützung des Schließens von Positionen zur Reinvestition in andere Vermögenswerte für eine dynamische Zuordnung.

Zusammenfassung

Die Strategie des festen Prozentsatzes bietet Diversifizierung und Risikokontrolle. Aber sie birgt Risiken wie verzögerte Re-Balancing und volatile Verluste von Vermögenswerten. Weitere Verbesserungen zur Stop-Loss-Logik und Signalvalidierung können die Stabilität verbessern.


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




Mehr