READ-ONLY

Das Forum ist jetzt ein schreibgeschütztes Archiv.

Für Fehlerberichte und Fragen zur Plattform → [email protected]

Unsere Community lebt auf Discord und YouTube - komm zu uns!

Monte-Carlo-Funktion verifizieren

5 Antworten

huangwh88

Kunde, bbp_participant, community, sq-ultimate, 116 Antworten.

Profil besuchen

vor 5 Jahren #270606

In der Dokumentation hier https://strategyquant.com/doc/quantanalyzer/predict-verify-strategy-performance-using-monte-carlo-simulation/Es wird erwähnt, dass die Verifizierungsfunktion die tatsächliche Leistung der Strategie mit der mittels MC vorhergesagten Bandbreite vergleichen soll.

Aber ist es möglich, tatsächliche Live-Ergebnisse zu importieren und sie mit den MC-Vorhersagen zu vergleichen? Im Moment sieht es so aus, als würden die Daten in IS- und OOS-Anteile aufgeteilt und die OOS-Ergebnisse mit den MC-Vorhersagen verglichen, die anhand der IS-Ergebnisse erstellt wurden.

 

0

tomas262

Administrator, sq-ultimate, 2 Antworten.

Profil besuchen

vor 5 Jahren #270622

Hallo,

Ja, Sie können die MC-Vorhersage verwenden und sie auf Ihre Live-Handelsergebnisse anwenden. Laden Sie einfach die Ergebnisse und setzen Sie die Daten "Verify - Datum" auf das Datum, ab dem Sie die Vorhersagesimulation starten möchten. In dem beigefügten Beispiel sind die Ergebnisse vom 1.1.2021 bis zum 24.5.2021 geladen. Die Vorhersage wird so eingestellt, dass sie am 1.3.2021 beginnt, damit wir vergleichen können, ob wir innerhalb der MC-Simulationsgrenzen mit unseren Handelsergebnissen liegen.

Anhänge:
Sie müssen sein eingeloggt um angehängte Dateien anzuzeigen.

0

Massimo Scapini

Abonnent, bbp_participant, Kunde, Gemeinschaft, sq-ultimate, 62 Antworten.

Profil besuchen

vor 3 Jahren #280024

Ja,

aber ich vermute, dass auf diese Weise Live-Daten vor dem 1. März 2021 verwendet werden, um Daten danach zu simulieren, was nicht das ist, was man vielleicht will...

Ich würde es vorziehen, zwei verschiedene Datensätze zu laden: 1. die simulierten Daten für die Vergangenheit, 2. die Live-Daten (wie im Abschnitt "Daten vergleichen") und dann den ersten Datensatz zu verwenden, um den zweiten zu simulieren.

Lässt sich dieses Problem umgehen, indem man die simulierten Daten der Vergangenheit und die Live-Daten in eine einzige Datei lädt? Wenn ja, welches Format könnte verwendet werden?

Wie kann ich außerdem die Anzahl der für die Funktion "Vorhersage" verwendeten Abschlüsse ändern?

0

Massimo Scapini

Abonnent, bbp_participant, Kunde, Gemeinschaft, sq-ultimate, 62 Antworten.

Profil besuchen

vor 3 Jahren #280025

Ich habe wahrscheinlich den Weg gefunden (vielleicht war es nur das, was Sie vorgeschlagen haben, aber ich habe es einfach nicht verstanden!)

1. Laden Sie die simulierten Daten

2. Laden Sie die Live-Daten

3. Erstellen Sie ein Portfolio, das 1 und 2 zusammenfasst.

4. Führen Sie die MC mit dem Startdatum von 2 als Referenz aus

5. Erledigt!

0

Massimo Scapini

Abonnent, bbp_participant, Kunde, Gemeinschaft, sq-ultimate, 62 Antworten.

Profil besuchen

vor 3 Jahren #280041

Im Prinzip funktioniert es...

... aber leider ist die Anzeige der Ergebnisse mit MT4 ziemlich irreführend, da alle im MT4-Bericht enthaltenen Transaktionen als Trades gezählt werden, zumindest in der Grafik (ich weiß nicht, ob auch in der Simulation).

Siehe Anhang

 

Um dies zu beheben, müssen Sie den MT4-Bericht manuell bereinigen, bevor Sie ihn in QA laden. Ziemlich ärgerlich

Anhänge:
Sie müssen sein eingeloggt um angehängte Dateien anzuzeigen.

0

Handelsvertreter

Abonnent, bbp_participant, 2 Antworten.

Profil besuchen

vor 1 Monat #293111

Ich habe dieses Problem gelöst, indem ich einen Filter programmiert habe, um das Datum so lange zu setzen, bis die MC die Daten verwenden soll. Sie geben einfach das Datum im Format yyyymmdd ein und verwenden das gleiche Datum in der Überprüfungsfunktion.

---------

Paket com.strategyquant.extend.MonteCarloMethods;

 

import com.strategyquant.lib.results.SQOrder;

import com.strategyquant.lib.results.SQOrderList;

import com.strategyquant.lib.snippets.MonteCarloSim.MonteCarloMethod;

import java.util.Calendar;

 

public class DateFilter extends MonteCarloMethod {

 

public DateFilter() {

setName(“FilterByDate”);

// Datum im Format JJJJMMTT (z.B. 20231231 für 31.12.2023)

addIntParameter(“_STOP_DATE_”, “Nur Trades bis Datum (JJJJMMTT)”, 20231231, 19000101, 21001231, 1);

setFormatedName(“Filter: Trades bis _STOP_DATE_”);

}

 

@Override

public void compute(SQOrderList originalOrders) throws Exception {

int stopDate = getIntParameterValue(“_STOP_DATE_”);

SQOrderList filteredOrders = new SQOrderList();

 

for(int i = 0; i < originalOrders.size(); i++) {

SQOrder order = originalOrders.get(i);

 

// Umrechnung der CloseTime (Long/Timestamp) in YYYYMMDD

Kalender cal = Calendar.getInstance();

cal.setTimeInMillis(order.CloseTime);

int orderDate = (cal.get(Calendar.YEAR) * 10000)

+ ((cal.get(Calendar.MONTH) + 1) * 100)

+ cal.get(Calendar.DAY_OF_MONTH);

 

// Nur Trades hinzufügen, die am oder vor dem Stichtag liegen

if(orderDate <= stopDate) {

filteredOrders.add(order.clone());

}

}

 

// Die Originalliste wird mit der gefilterten Liste überschrieben

originalOrders.clear();

for(int j = 0; j < filteredOrders.size(); j++) {

originalOrders.add(filteredOrders.get(j).clone());

}

 

// Optional: Falls die Reihenfolge für nachfolgende MC-Methoden egal ist

// java.util.

Collections.shuffle(originalOrders);

}

}

0

Ansicht von 5 Antworten - 1 bis 5 (von insgesamt 5)