Quantitative Anlagestrategie auf der Grundlage des monatlichen Kaufdatums

Schriftsteller:ChaoZhang, Datum: 2023-11-24 14:10:23
Tags:

img

Übersicht

Die Kernidee dieser Strategie besteht darin, jeden Monat das beste Kaufdatum zu finden, indem man digitale Vermögenswerte an diesem Datum kauft und am Ende des Monats verkauft, um eine optimale Anlagerendite zu erzielen.

Strategieprinzip

Die Strategie läuft basierend auf dem vom Benutzer definierten monatlichen Kaufdatum und Verkaufdatum. Sie geht am Kaufdatum lang, indem sie Vermögenswerte kauft und schließt die Position am Verkaufdatum, wenn sie festgelegt ist. Ansonsten schließt sie die Position am Strategieenddatum. Dies kann die Gewinndifferenz von verschiedenen monatlichen Kaufdaten testen.

Die Logik für das Kaufsignal lautet: Wenn es sich um das vom Benutzer definierte Kaufdatum handelt und innerhalb des effektiven Datumsbereichs der Strategie liegt, gehen Sie lang.

Die Logik für das Schlusssignal lautet: Wenn das Verkaufsdatum festgelegt ist und es sich um das Verkaufsdatum jetzt handelt, schließt die Position; wenn kein Verkaufsdatum besteht, aber das Ende der Strategie überschritten ist, schließt sie auch die Position.

Vorteile der Strategie

  1. Kann das Datum der größten Preisschwankung jeden Monat finden, um übermäßige Renditen durch Hochfrequenz-Tagesspezialhandel zu erzielen
  2. Kann den optimalen Kaufpunkt durch Vergleich von Gewinnmustern aus verschiedenen Kaufdaten identifizieren
  3. Kann feststellen, ob sich das optimale Kaufdatum anhand der wichtigsten Ereignisse des Monats ändert
  4. Kann den kurz- und langfristigen Handel ausbalancieren, indem verschiedene Verkaufstermine festgelegt werden

Risiken und Lösungen

  1. Preiscrashrisiko nach dem Kauf

    • Setzen Sie Stop-Loss, um den maximalen Verlust zu begrenzen
    • Wählen Sie Vermögenswerte mit hoher Liquidität, um extreme Kursschwankungen zu vermeiden
  2. Änderung des optimalen Kaufdatums

    • Überwachen Sie die Datenänderungshistorie und passen Sie den optimalen Kaufpunkt rechtzeitig an
    • Verringerung der Positionsgröße in Risikoperioden
  3. Verlust durch falsche Parameter-Einstellungen

    • Verschiedene Parameter schrittweise testen und Gewinnunterschiede vergleichen
    • Auswahl eines repräsentativen Zeitrahmens für die Prüfung

Optimierungsrichtlinien

  1. Bei der Bestimmung des Eintrittspunktes sind weitere Faktoren zu berücksichtigen

    • Berücksichtigen Sie die Auswirkungen der wichtigsten Nachrichten des Monats auf den Preis
    • Analyse der Preisentwicklung verwandter digitaler Assets
    • Hinzufügen von Modellen für maschinelles Lernen zur Bestimmung des optimalen Timings
  2. Optimierung des Positionsmanagementmechanismus

    • Dynamische Gewinnaufnahme zum Schließen der Position festlegen
    • Anpassung der Positionsgröße anhand der Volatilität
    • Berücksichtigen Sie die Haltungsposition über Zeiträume hinweg
  3. Expansion auf andere Handelsmärkte

    • Anwendung auf mehr digitale Währungspaare
    • Dies gilt für Aktien, Devisen usw.
    • Einrichtung von Marktübergreifenden Arbitragestrategien

Zusammenfassung

Diese Strategie findet das Datum der größten Intraday-Preisschwankung jeden Monat, indem sie die Gewinndifferenz von verschiedenen Kaufdaten testet. Sie kann für Anleger, die Gewinne aus dem Hochfrequenz-Intraday-Handel erzielen möchten, überschüssige Renditen bringen. Eine weitere Verbesserung bei der Bestimmung des Eintragszeitraums, des Positionsmanagements und der Erweiterung des Anwendungsbereichs wird die Stabilität und Rentabilität der Strategie verbessern.


/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © dennis.decoene

//@version=4
strategy(title="Buy and Hold, which day of month is best to buy?", overlay=true)

// Make input options that configure backtest date range
startDate = input(title="Start Date", type=input.integer,
     defval=1, minval=1, maxval=31, group="Starting From")
     
startMonth = input(title="Start Month", type=input.integer,
     defval=1, minval=1, maxval=12, group="Starting From")
     
startYear = input(title="Start Year", type=input.integer,
     defval=2021, minval=1800, maxval=2100, group="Starting From")

endDate = input(title="End Date", type=input.integer,
     defval=2, minval=1, maxval=31, group="Until")
endMonth = input(title="End Month", type=input.integer,
     defval=10, minval=1, maxval=12, group="Until")
endYear = input(title="End Year", type=input.integer,
     defval=2021, minval=1800, maxval=2100, group="Until")

entryday = input(title="Entry Day", type=input.integer,
     defval=26, minval=1, maxval=31, tooltip="When to enter (buy the asset) each month")
exitday = input(title="Exit Day", type=input.integer,
     defval=6, minval=1, maxval=31, tooltip="When to exit (sell the asset) each month")
     
useExitDay= input(title="Close position on exit day?", type=input.bool, defval=false, tooltip="Use the Exit Day to close each months position it true or close at the end of the period (if false)")
     
isEntryDay= (dayofmonth(time)==entryday)
isExitDay= (dayofmonth(time)==exitday-1)


inDateRange = true

if (isEntryDay and inDateRange)
    strategy.entry(id="Buy", long=true)
    
if (isExitDay and useExitDay)
    strategy.close_all()


// Exit open market position when date range ends
if (not inDateRange and not useExitDay)
    strategy.close_all()
     

Mehr