Crypto Quant: προγραμματικές συναλλαγές BTC χρησιμοποιώντας Binance και Backtrader — Μέρος 2 από 3 PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Crypto Quant: διαπραγμάτευση μέσω BTC μέσω προγραμματισμού μέσω Binance και Backtrader - Μέρος 2 από 3


Crypto Quant: προγραμματικές συναλλαγές BTC χρησιμοποιώντας Binance και Backtrader — Μέρος 2 από 3 PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Σε αυτό το μέρος wθέλω να εγκαταστήσω Backtrader και ελέγξτε πίσω ορισμένα μοντέλα συναλλαγών σε σχέση με τα δεδομένα Binance που συγκεντρώσαμε στην προηγούμενη ενότητα.

Υπάρχουν πολλά άρθρα και βίντεο για το Backtrader και τις ρυθμίσεις του. Αυτή η δημοφιλής βιβλιοθήκη Python διευκολύνει την εργασία Quant του backtesting στρατηγικών συναλλαγών με ιστορικά δεδομένα, απαντώντας στην πεμπτουσία της ερώτησης «πόσο κερδοφόρο θα ήταν να συναλλάσσεσαι χρησιμοποιώντας δεδομένες στρατηγικές ΑΓΟΡΑ/ΠΩΛΗΣΗΣ». Αυτό μοιάζει με μαθηματική αλχημεία στην αρχή, αλλά πρέπει να θυμόμαστε ότι τα ιστορικά δεδομένα είναι, λοιπόν, ιστορικά! Μια στρατηγική συναλλαγών που λειτούργησε χθες είναι απίθανο να λειτουργήσει σήμερα… αλλά θα επανέλθουμε σε αυτό σύντομα.

Οι οδηγίες εγκατάστασης του Backtrader ('bt') είναι εδώ. Σημείωση: υπάρχουν γνωστά ζητήματα με τις εκδόσεις mapplotlib άνω της 3.2.0, γι' αυτό προσέξτε.

Ο οδηγός γρήγορης εκκίνησης αξίζει να διαβαστεί, βρείτε τον εδώ.

RSI

Αυτό που θα προσπαθήσουμε με το Backtrader εδώ είναι να κάνουμε backtesting RSI (Δείκτης σχετικής αντοχής) στρατηγική συναλλαγών σε ιστορικά δεδομένα κρυπτογράφησης (για BTC) από νωρίτερα μέσα στο έτος.

Επεξηγείται ο δείκτης ορμής RSI εδώ. Μετρά τις σχετικές συνθήκες υπερπώλησης και υπεραγοράς για ένα δεδομένο περιουσιακό στοιχείο συναλλαγών και μια παράμετρο «περιόδου» που είναι το # των κροτώνων (διαστήματα συναλλαγών) προς τα πίσω.

Η παράμετρος περίοδος είναι προεπιλεγμένη σε 14, οπότε αν το διάστημα είναι λεπτά, τότε ο τύπος θα περιλαμβάνει 14 διαστήματα τικ δεδομένων. Όπως θα εξερευνήσουμε στη συνέχεια, κάθε τεχνικός δείκτης έχει παραμέτρους που είναι ο τρόπος μας να «συντονιζόμαστε» στις συνθήκες της αγοράς. Αυτές οι παράμετροι έχουν τεράστιο αντίκτυπο στην κερδοφορία κάθε δεδομένου δείκτη στο πλαίσιο μιας στρατηγικής.

Backtest.py

Η ρύθμιση του backtest μας: backtest.py μοιράζεται εδώ. Αυτό θα παρέχει τη δομή backtest για την εκτέλεση του backtest, που θα οριστεί στη συνέχεια. Αυτή είναι μια αρκετά τυπική ρύθμιση 'bt'. Ας εξετάσουμε μερικά από αυτόν τον κώδικα, Σημειώστε ότι υπάρχουν πολλά παραδείγματα και εκπαιδευτικά βίντεο στο διαδίκτυο στο backtest Python για να μάθετε από αυτά.

Εδώ στον ορισμό κλάσης καθορίζουμε παραμέτρους για τη στρατηγική RSI μας.

  • πολύλογος: εάν θέλουμε να εξάγουμε δεδομένα καταγραφής κατά τη διάρκεια του backtest
  • maperiod: περίοδος κινητού μέσου όρου, ο αριθμός των κροτώνων που πρέπει να ληφθούν υπόψη
  • ποσότητα: ο αριθμός των μετοχών προς αγορά/πώληση
  • ανώτερος: το ανώτερο όριο του δείκτη για υπεραγορά
  • χαμηλότερα: το κατώτερο όριο του δείκτη για υπερπώληση
  • stopLoss: η ρύθμιση διακοπής ζημιών για πώληση

Η Επόμενο() Η συνάρτηση σε μια κλάση στρατηγικής Backtrader είναι αυτό που συμβαίνει μετά από κάθε διαστήματα «τικ» δεδομένων. Εδώ είναι το buy() ή το sell() σύμφωνα με τα δεδομένα, σε αυτήν την περίπτωση τον δείκτη RSI και τα κατώφλια μας.

Εδώ ορίζουμε το runbacktest() συνάρτηση που θα κληθεί από τον κωδικό μας. Η προαναφερθείσα συνάρτηση στρατηγικής RSI προστίθεται στο εγκέφαλος παράδειγμα.

Όλα τα σχετικά τυπικά πράγματα του Backtrader. Ας δούμε πώς να το εκτελέσουμε σε σχέση με τα δεδομένα μας.

Εκ των υστέρων έλεγχος των δεδομένων μας

Φροντίστε να λάβετε δεδομένα (χρησιμοποιώντας τα βήματα της τελευταίας ενότητας) για την 1η Ιανουαρίου έως τις 2 Ιανουαρίου 2021, αυτά θα βρίσκονται σε ένα αρχείο με το όνομα: BTCUSDT-20210101–20210102–1m.csv με 1440 γραμμές CSV, μία για κάθε λεπτό της ημέρας.

Εδώ είναι ο κωδικός και η έξοδος για αυτήν την ημέρα συναλλαγών λεπτό προς λεπτό για το Bitcoin (BTC):

Ρίχνοντας μια πιο προσεκτική ματιά:

Οι παράμετροι είναι απλές, θέλουμε να αναλύσουμε μια ημέρα διαπραγμάτευσης, χρησιμοποιώντας τον δείκτη RSI με περίοδο 12 ticks, χωρίς stop-loss και προεπιλεγμένα όρια 70,30 για τους δείκτες υπεραγοράς και υπερπώλησης.

Αποτελέσματα 1 Ιανουαρίου bt με τυπική στρατηγική δείκτη RSI

Η τελευταία γραμμή εξόδου συνοψίζει τα αποτελέσματα αυτού του backtest:

/BTCUSDT-20210101-20210102-1m.csv, RSI (Pd 12) (SL 0.0%) (U70 L30) Καθαρό 777.78 $ (0.78%) WL 18/7 SQN 1.76

Περίοδος RSI 12, 0 (Όχι) stop-loss, (U) ανώτατο όριο 70 (L) κατώτερο όριο των 30, καθαρό κέρδος (σε μία ημέρα) 777.78 $ με 18 κερδισμένες συναλλαγές και 7 χαμένες συναλλαγές.

Το τελευταίο σχήμα είναι SQN, έναν «Αριθμό Ποιότητας Συστήματος» (SQN) που έχει σχεδιαστεί για να βοηθά τους εμπόρους να προσδιορίζουν τα δυνατά σημεία, τη σκοπιμότητα και την ποιότητα ενός συστήματος συναλλαγών. Μια στρατηγική καλής ποιότητας θεωρείται ως στρατηγική που είναι ταυτόχρονα εμπορεύσιμη και αποτελεσματική.*

Οι ακόλουθες τιμές SQN υποδηλώνουν τις ακόλουθες "ποιότητες" :

  • 1.6–1.9 Κάτω από το μέσο όρο
  • 2.0–2.4 Μέσος όρος
  • 2.5–2.9 Καλό
  • 3.0–5.0 Εξαιρετικό
  • 5.1–6.9 Εξαιρετικό
  • 7.0 — Άγιο Δισκοπότηρο

Ο τύπος SQN:

SquareRoot(NumberTrades) * Μέσος όρος(TradesProfit) / StdDev(TradesProfit)

Κανονικά θα επιμείναμε σε τουλάχιστον 30 συναλλαγές ώστε αυτή η μέτρηση να είναι στατιστικά σημαντική, αλλά θα το αγνοήσουμε προς το παρόν καθώς δοκιμάζουμε το backtest μας σε σύντομο χρονικό διάστημα.

Μπορείτε να κάνετε μεγέθυνση σε τμήματα της πλοκής, για παράδειγμα:

Εδώ βλέπουμε ένα σήμα αγοράς (πράσινο επάνω βέλος) καθώς η τιμή RSI πέφτει κάτω από το 30 και στη συνέχεια ένα κερδοφόρο σήμα πώλησης ως και δείκτη κέρδους (μπλε κύκλος) καθώς το RSI φτάνει πάνω από το 70. Δείτε τις τιμές για το RSI στην κάτω δεξιά γωνία .

Το κέρδος (σε μία ημέρα) 777.78 $ με 18 κερδισμένες και 7 χαμένες συναλλαγές είναι αρκετά καλό, ιδιαίτερα για μια ημέρα συναλλαγών σχετικά ρηχής δράσης (+1.42%). Φανταστείτε τι θα μπορούσαμε να πετύχουμε σε μια ανοδική ημέρα με υψηλή ένταση!

Παράμετροι μοντέλου

Μπορείτε να εκτελέσετε το get_data για διαφορετικές ημέρες και να τις αναλύσετε ξεχωριστά. Παρατηρήστε πώς διαφορετικές παράμετροι RSI έχουν αντίκτυπο στην κερδοφορία από τη μια μέρα στην άλλη.

Η συγκεκριμένη περίπτωση, την ίδια ημέρα διαπραγμάτευσης BTC αλλά με περίοδο RSI 20 αντί 12, κέρδη-ζημιές 2/3 και καθαρό κέρδος -21.51$ (συμπεριλαμβανομένων των προμηθειών συναλλαγών). Αυτή είναι μια μεγάλη διαφορά από το τελευταίο backtest!

Μπορείτε επίσης να πειραματιστείτε με διαφορετικά όρια RSI (εκτός από το προεπιλεγμένο 70/30) και παραμέτρους stop-loss. Το Stop-loss είναι μια αυτόματη εντολή πώλησης όταν η τιμή πέσει κάτω από κάποιο επίπεδο σε σχέση με την εκτελεσθείσα εντολή αγοράς. Όπως υποδηλώνει το όνομα, αυτό μπορεί να χρησιμεύσει για να «σταματήσει μια απώλεια» αφού βρεθείτε σε μια θέση στη μεταβλητότητα.

Stop-Loss

Ο τρόπος με τον οποίο έχουμε ρυθμίσει το stop-loss εδώ είναι ο εξής:

  • 0 : δεν υπάρχει ρύθμιση stop-loss, περιμένετε μέχρι ο δείκτης να ενεργοποιήσει μια εντολή πώλησης
  • 0.00x : stop-loss σε τιμή % κάτω από την τιμή αγοράς, 0.001 είναι 0.1% κάτω
  • -0.0x : το τελικό stop-loss θα ακολουθήσει τη διαπραγμάτευση καθώς η τιμή ανεβαίνει, το 0.01 είναι ένα τελικό stop-loss 1% κάτω από την τιμή αγοράς

Αυτό το stop-loss είναι μια σημαντική παράμετρος για κάθε συναλλαγή και μπορεί να έχει σημαντική επιρροή, όχι εκπληκτικά, στην απόδοση. Για περισσότερα σχετικά με τις στρατηγικές stop-loss βλ εδώ.

Εδώ στο backtest.py είναι όπου το ρυθμίζουμε χρησιμοποιώντας το backtrader:

Εδώ είναι το ίδιο σερί με αυτό που μόλις αναλύσαμε, αλλά με 0.1% τέρμα στοπ-απώλειας

Καθαρό κέρδος 383.67 $ με 12 νίκες και 12 ήττες, πολύ καλύτερο από την απώλεια που είχαμε πριν. Μπορείτε να δείτε στην πλοκή ότι η τελική ζημία προστάτευσε πολλές από τις συναλλαγές από την ολίσθηση σε απώλειες ως δείκτης αναμονής για ένα σήμα πώλησης (υπεραγοράς).

Μέσα σε έναν μόνο δείκτη, σε αυτήν τη ρύθμιση λοιπόν, έχουμε πολλές διαφορετικές πιθανές μεταθέσεις:

  • ένα εύρος περιόδου μεταξύ 10 και 30 διαστημάτων (20 παραλλαγές)
  • μια ρύθμιση stop-loss (ας φανταστούμε 5 διαφορετικές πρακτικές παραλλαγές)
  • ένα όριο για υπεραγορά/υπερπώληση (ας φανταστούμε 5 παραλλαγές προς το παρόν)

Αυτό θα ήταν 20x5x5 ή 500 διαφορετικές παραλλαγές για κάθε μέρα. Το να τα εξετάσουμε ένα προς ένα με το χέρι θα ήταν γελοίο και ωστόσο θέλουμε να μάθουμε ποιες παράμετροι ήταν πιο κερδοφόρες και της υψηλότερης ποιότητας συναλλαγών και ποιες όχι.

Ποσοτική αλχημεία!

Αυτό μας φέρνει στο επόμενο βήμα σε αυτήν την εξερεύνηση του Crypto Quant. Μπορούμε να προσδιορίσουμε με ωμή βία τις πιο κερδοφόρες και υψηλότερης ποιότητας παραμέτρους στρατηγικής συναλλαγών για μια δεδομένη περίοδο διαπραγμάτευσης και στη συνέχεια να δούμε πώς μεταφέρονται.

Source: https://medium.com/@gk_/crypto-quant-programmatic-trading-of-btc-using-binance-and-backtrader-part-2-of-3-d8af44c93e2b?source=rss——-8—————–cryptocurrency

Σφραγίδα ώρας:

Περισσότερα από Μέτριας Δυσκολίας