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.
Langages du dépôtPython 99.74%2
Parts calculées à partir des octets GitHub Linguist.
| Langage | % | Octets |
|---|---|---|
| Python | 219 181 | |
| Dockerfile | 572 |
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
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.
- Historique de l’échange
- Client et données
- Signaux de stratégie
- Simulation positions et capital
- 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.

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
BackTest(class) ·novalabs-backtest/utils/backtest.py:21Méthodes dans l’aperçu :
__init__, build_indicators, entry_strategy, exit_strategy.Binance(class) ·novalabs-backtest/clients/binance.py:12Méthodes dans l’aperçu :
__init__, _send_request, get_server_time, _format_long_short_ratio.Bases déclarées :
BackTestClientInterface.BTCEX(class) ·novalabs-backtest/clients/btcex.py:11Méthodes dans l’aperçu :
__init__, _send_request, connect, logout.Bases déclarées :
BackTestClientInterface.Bybit(class) ·novalabs-backtest/clients/bybit.py:13Méthodes dans l’aperçu :
__init__, _send_request, get_server_time, _get_candles.Bases déclarées :
BackTestClientInterface.BackTestClientInterface(class) ·novalabs-backtest/clients/client_interface.py:5Méthodes dans l’aperçu :
_send_request, get_server_time, _get_candles, _get_earliest_timestamp.Bases déclarées :
abc.ABC.Huobi(class) ·novalabs-backtest/clients/huobi.py:15Méthodes dans l’aperçu :
__init__, generate_signature, _send_request, get_server_time.Bases déclarées :
BackTestClientInterface.Kucoin(class) ·novalabs-backtest/clients/kucoin.py:15Méthodes dans l’aperçu :
__init__, _send_request, get_server_time, get_pairs_info.Bases déclarées :
BackTestClientInterface.MEXC(class) ·novalabs-backtest/clients/mexc.py:12Méthodes dans l’aperçu :
__init__, _send_request, get_server_time, get_pairs_info.Oanda(class) ·novalabs-backtest/clients/oanda.py:12Méthodes dans l’aperçu :
__init__, _send_request, get_server_time, get_pairs_info.OKX(class) ·novalabs-backtest/clients/okx.py:15Méthodes dans l’aperçu :
__init__, _send_request, get_server_time, get_pairs_info.Bases déclarées :
BackTestClientInterface.SaveOrderBook(class) ·novalabs-backtest/data/orderbook.py:18Méthodes dans l’aperçu :
__init__, initiate_client, get_list_pair_binance, get_list_pair_ftx.TechnicalIndicatorsCreation(class) ·novalabs-backtest/utils/indicators.py:130Méthodes dans l’aperçu :
__init__, format_time_for_df, _get_buffer_length, get_selected_indicators.
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