Aller au contenu

nova-backtest : Des bougies historiques à la simulation

nova-backtest est un fork archivé d’un framework de backtesting. Sa classe centrale choisit un client d’échange, charge une période historique et gère un capital simulé avec des contraintes de position.

Bibliothèque Fork Archivé
  • Mis à jour
  • Python · 99.74%
  • MIT
Crédit amont
Langages du dépôtPython 99.74%2

Parts calculées à partir des octets GitHub Linguist.

Langage%Octets
Python99.74%219 181
Dockerfile0.26%572

GitHub · README · Statistiques de langages

Aperçu

Pourquoi il existe

Moteur de backtest financier communiquant avec les API d'exchanges crypto pour stratégies quantitatives.

Cas d’usage

Validation de stratégies algorithmiques sur données historiques.

Démarrage

Ces commandes viennent de la documentation du dépôt. Elles n’ont pas été exécutées pendant cette revue.

Références du dépôt

Extraits des guides du dépôt, dans leur langue d’origine. Les liens ouvrent la version du code consultée.

Développement et contributions

Nova Backtest

README.md

NovaLabs backtest is a Python library for backtesting algorithmic trading strategies. It aims to facilitate the development of algorithmic trading on the crypto market by downloading historical data prices on the biggest centralized exchanges (Binance, Bybit, OKX, KuCoin & more) and simulates the trades of a given strategy throughout past years. It returns a bunch of statistics, giving a strong evaluation of your strategies performances.
Lire les instructions complètes ↗
Documentation source

2 documents lus parmi 2 candidats.

Fonctions et composants 2

Entrées et clients
BackTest reçoit l’échange, la stratégie, l’intervalle, les paires et les dates. La classe construit un client avec la factory clients et charge les hypothèses de frais depuis FEES.
État de simulation
Le constructeur conserve le capital initial et courant, le levier, le nombre de positions et leur durée. Le dimensionnement géométrique est une option explicite. Les résultats dépendent de ces hypothèses autant que des signaux.

Architecture

Les composants et leurs liens restent lisibles en texte. Le diagramme ajoute une vue interactive.

Contexte système Contexte
  1. Historique de l’échange
  2. Client et données
  3. Signaux de stratégie
  4. Simulation positions et capital
  5. Sorties du backtest

Liens vérifiés dans le dépôt.

Mermaid Diagramme interactif (chargement à l’ouverture)

Vue générale des composants et des échanges vérifiés dans le dépôt.

Vue statique de l’architecture de nova-backtest
Aperçu statique. Le diagramme interactif le remplace après le chargement de Mermaid.
flowchart LR
  n0["Historique de l’échange"]
  n1["Client et données"]
  n2["Signaux de stratégie"]
  n3["Simulation positions et capital"]
  n4["Sorties du backtest"]
  n0 --> n1
  n1 --> n2
  n2 --> n3
  n3 --> n4
Version texte du diagramme
  • Historique de l’échange → Client et données
  • Client et données → Signaux de stratégie
  • Signaux de stratégie → Simulation positions et capital
  • Simulation positions et capital → Sorties du backtest
Suivre un parcours dans le code

Lisez le constructeur BackTest avant d’interpréter un graphique. Les frais, le levier et les tailles changent le capital simulé; modifier une hypothèse crée une autre expérience même avec les mêmes données.

Types et structure des fichiers

12 types déclarés, dont 12 dans l’aperçu des relations de base.

Diagramme des types
classDiagram
direction TB
class tb3e6c9c2ecdf["BackTest"] {
  __init__()
  build_indicators()
  entry_strategy()
  exit_strategy()
}
class t49d28ff7fba3["Binance"] {
  __init__()
  _send_request()
  get_server_time()
  _format_long_short_ratio()
}
class t43ce1fc5ef4d["BTCEX"] {
  __init__()
  _send_request()
  connect()
  logout()
}
class t8174f5fcb687["Bybit"] {
  __init__()
  _send_request()
  get_server_time()
  _get_candles()
}
class t023ef983e730["BackTestClientInterface"] {
  _send_request()
  get_server_time()
  _get_candles()
  _get_earliest_timestamp()
}
class ta838910fd595["Huobi"] {
  __init__()
  generate_signature()
  _send_request()
  get_server_time()
}
class t6d6671499620["Kucoin"] {
  __init__()
  _send_request()
  get_server_time()
  get_pairs_info()
}
class tee704ca1b99b["MEXC"] {
  __init__()
  _send_request()
  get_server_time()
  get_pairs_info()
}
class te95be47be1da["Oanda"] {
  __init__()
  _send_request()
  get_server_time()
  get_pairs_info()
}
class t263161a52c7a["OKX"] {
  __init__()
  _send_request()
  get_server_time()
  get_pairs_info()
}
class tf549b99afce0["SaveOrderBook"] {
  __init__()
  initiate_client()
  get_list_pair_binance()
  get_list_pair_ftx()
}
class t3e20d5d192c0["TechnicalIndicatorsCreation"] {
  __init__()
  format_time_for_df()
  _get_buffer_length()
  get_selected_indicators()
}
class be18d1eb0e880["BackTestClientInterface"] {
  <<unresolved_base>>
}
be18d1eb0e880 <|-- t49d28ff7fba3
class b67f7ade18a4f["BackTestClientInterface"] {
  <<unresolved_base>>
}
b67f7ade18a4f <|-- t43ce1fc5ef4d
class bfb52a00bc764["BackTestClientInterface"] {
  <<unresolved_base>>
}
bfb52a00bc764 <|-- t8174f5fcb687
class bebd830f94387["abc.ABC"] {
  <<unresolved_base>>
}
bebd830f94387 <|-- t023ef983e730
class b989f1678d5c0["BackTestClientInterface"] {
  <<unresolved_base>>
}
b989f1678d5c0 <|-- ta838910fd595
class b6644718ebc43["BackTestClientInterface"] {
  <<unresolved_base>>
}
b6644718ebc43 <|-- t6d6671499620
class b09cf4bf8f343["BackTestClientInterface"] {
  <<unresolved_base>>
}
b09cf4bf8f343 <|-- t263161a52c7a

Les bases non résolues restent identifiées; les signatures complètes ne sont pas reconstruites.

Index des types

Référence

36 / 36 fichiers admissibles lus (60 dans l’arbre); 0 trop volumineux, 0 échec de lecture et 0 diagnostic de syntaxe.

Ce que couvre l’analyse

Les dossiers connus de dépendances et de compilation, les fichiers d’identifiants et les binaires sont exclus. La collecte couvre les README, les manifestes reconnus et les fichiers source pris en charge.

Les statistiques Linguist couvrent l’ensemble du dépôt et peuvent inclure d’autres langages.

Carte des fichiers
flowchart TD
  root["nova-backtest"]
  f0["README.md"]
  root --> f0
  f1["novalabs-backtest/utils/backtest.py"]
  root --> f1
  f2["novalabs-backtest/utils/constant.py"]
  root --> f2
  f3["pyproject.toml"]
  root --> f3
  f4["requirements.txt"]
  root --> f4
  f5["setup.py"]
  root --> f5
  f6["novalabs-backtest/__init__.py"]
  root --> f6
  f7["novalabs-backtest/clients/__init__.py"]
  root --> f7
  f8["novalabs-backtest/clients/binance.py"]
  root --> f8
  f9["novalabs-backtest/clients/btcex.py"]
  root --> f9
  f10["novalabs-backtest/clients/bybit.py"]
  root --> f10
  f11["novalabs-backtest/clients/client_interface.py"]
  root --> f11
  f12["novalabs-backtest/clients/clients.py"]
  root --> f12
  f13["novalabs-backtest/clients/huobi.py"]
  root --> f13
  f14["novalabs-backtest/clients/kucoin.py"]
  root --> f14
  f15["novalabs-backtest/clients/mexc.py"]
  root --> f15

Fichiers à lire 3

Références