Eiten est une boîte à outils open source par Tradytics qui met en œuvre diverses stratégies d'investissement statistique et algorithmique telles que les portefeuilles Eigen , les portefeuilles de variance minimale , les portefeuilles de ratio Sharpe maximum et les portefeuilles génétiques basés sur des algorithmes . Il vous permet de construire vos propres portefeuilles avec votre propre ensemble d'actions qui peuvent battre le marché. Le cadre de test rigoureux inclus dans EITEN vous permet d'avoir confiance dans vos portefeuilles.
Si vous cherchez à discuter de ces outils en profondeur et à parler de plus d'outils sur lesquels nous travaillons, n'hésitez pas à rejoindre notre canal Discord où nous avons également un tas d'outils supplémentaires.
Chemin | Description |
---|---|
Eiten | Dossier principal. |
└ Figures | Chiffres pour ces référentiels GitHub. |
└ Stocks | Dossier pour conserver vos listes de stock que vous souhaitez utiliser pour créer vos portefeuilles. |
└ Stratégies | Un tas de stratégies mises en œuvre dans Python. |
backtester.py | Module de backtesting qui à la fois des backtests et de l'avant teste tous les portefeuilles. |
data_loader.py | Module pour le chargement des données de Yahoo Finance. |
portfolio_manager.py | Le fichier principal qui prend un tas d'arguments et génère plusieurs portefeuilles pour vous. |
simulator.py | Simulator qui utilise des rendements historiques et Monte Carlo pour simuler les prix futurs des portefeuilles. |
stratégie_manager.py | Gère les stratégies mises en œuvre dans le dossier «Stratégies». |
Vous devrez installer le package suivant pour former et tester les modèles.
Vous pouvez installer tous les packages à l'aide de la commande suivante. Veuillez noter que le script a été écrit à l'aide de Python3.
pip install -r requirements.txt
Voyons comment nous pouvons utiliser toutes les stratégies données dans la boîte à outils pour construire nos portefeuilles. La première chose que vous devez faire est de modifier le fichier Stocks.txt dans le dossier Stocks et ajouter les actions de votre choix. Il est recommandé de garder la liste petite, c'est-à-dire entre 5 et 50 stocks, devrait être bien. Nous avons déjà mis une petite liste de stocks contenant un tas de stocks technologiques comme AAPL, MSFT, TSLA etc. Créons nos portefeuilles maintenant. C'est la commande principale que vous devez exécuter.
python portfolio_manager.py --is_test 1 --future_bars 90 --data_granularity_minutes 3600 --history_to_use all --apply_noise_filtering 1 --market_index QQQ --only_long 1 --eigen_portfolio_number 3 --stocks_file_path stocks/stocks.txt
Cette commande utilisera 5 dernières années de données quotidiennes à l'exclusion des 90 derniers jours et créera plusieurs portefeuilles pour vous. Sur la base de ces portefeuilles, il les testera ensuite sur les données hors échantillon de 90 jours et vous montrera les performances de chaque portefeuille. Enfin, il comparera également les performances avec votre choix de marché qui est QQQ ici. Plongeons en détail chacun des paramètres.
Voici quelques exemples pour construire différents types de portefeuilles.
python portfolio_manager.py --is_test 1 --future_bars 30 --data_granularity_minutes 3600 --history_to_use 90 --apply_noise_filtering 1 --market_index QQQ --only_long 0 --eigen_portfolio_number 3 --stocks_file_path stocks/stocks.txt
python portfolio_manager.py --is_test 0 --future_bars 0 --data_granularity_minutes 60 --history_to_use all --apply_noise_filtering 1 --market_index SPY --only_long 1 --eigen_portfolio_number 3 --stocks_file_path stocks/stocks.txt
python portfolio_manager.py --is_test 1 --future_bars 90 --data_granularity_minutes 3600 --history_to_use all --apply_noise_filtering 0 --market_index SQQQ --only_long 1 --eigen_portfolio_number 1 --stocks_file_path stocks/stocks.txt
Quatre stratégies de portefeuille différentes sont actuellement prises en charge par la boîte à outils.
Lorsque vous exécutez la commande ci-dessus, notre outil générera des portefeuilles à partir de toutes ces stratégies et vous les donnera. Examinons certains portefeuilles qui en résultent.
Aux fins de ces résultats, nous utiliserons les 9 actions dans le fichier Stocks / Stocks.txt. Lorsque nous exécutons la commande ci-dessus, nous obtenons d'abord les poids du portefeuille pour les quatre stratégies. À des fins de test, la commande ci-dessus a utilisé les cinq dernières années de données quotidiennes jusqu'au 29 avril. Les données restantes de cette année ont été utilisées pour les tests à terme, c'est-à-dire que les stratégies de portefeuille n'avaient pas accès lors de la construction des portefeuilles.
Et si mon portefeuille a besoin de différentes actions? : Tout ce que vous avez à faire est de modifier les actions dans le fichier Stocks.txt et d'exécuter à nouveau l'outil. Voici à nouveau la commande finale que nous exécutons afin d'obtenir nos portefeuilles:
python portfolio_manager.py --is_test 1 --future_bars 90 --data_granularity_minutes 3600 --history_to_use all --apply_noise_filtering 1 --market_index QQQ --only_long 1 --eigen_portfolio_number 3 --stocks_file_path stocks/stocks.txt
Nous pouvons voir que le portefeuille Eigen donne un gros poids à TSLA tandis que les autres divisent leurs poids plus uniformément. Un phénomène intéressant qui se produit ici est la couverture avec SQQQ que toutes les stratégies ont appris automatiquement. Chaque outil attribue un poids positif à SQQQ tout en attribuant également des poids positifs à d'autres actions, ce qui indique que les stratégies tentent automatiquement de couvrir les portefeuilles à partir du risque. De toute évidence, ce n'est pas parfait, mais le fait que cela se produit est fascinant. Examinons les résultats des tests de dos au cours des cinq dernières années avant le 29 avril 2020.
Les backtests semblent assez encourageants. La ligne pointillée noire est l'indice de marché IE QQQ . Les autres lignes sont les stratégies. Notre implémentation de l'algorithme génétique personnalisé semble avoir les meilleurs résultats les plus backtest car il s'agit d'une version avancée d'autres stratégies. Le portefeuille Eigen qui pesait TSLA le plus a le plus de volatilité mais ses bénéfices sont également très élevés. Enfin, comme prévu, le MVP a la variance minimale et, finalement, les moindres bénéfices. Cependant, comme la variance est extrêmement faible, c'est un bon portefeuille pour ceux qui veulent rester en sécurité. La partie la plus intéressante vient ensuite, regardons les résultats des tests avant ou futurs pour ces portefeuilles.
Ces résultats sont du 29 avril 2020 au 4 septembre 2020. Le portefeuille Eigen a fait le meilleur, mais il a également eu beaucoup de volatilité. De plus, la plupart de ces rendements sont dus à la flèche TSLA au cours des derniers mois. Après cela, notre algorithme GA a fonctionné de manière assez efficace car elle battait l'indice de marché. Encore une fois, comme prévu, le MVP avait le risque et la récompense le plus bas et a lentement augmenté dans 4 à 5 mois. Cela montre l'efficacité et la puissance de ces stratégies d'optimisation du portefeuille algorithmiques où nous avons développé différents portefeuilles pour différents types de profils de risque et de récompense.
Nous sommes heureux de partager cette boîte à outils avec la communauté commerciale et espérons que les gens aimeront et y contribueront. Comme c'est le cas avec tout ce qui est dans le trading, ces stratégies ne sont pas parfaites, mais elles sont basées sur une théorie rigoureuse et de grands résultats empiriques. Veuillez faire attention lorsque vous négociez avec ces stratégies et gérez toujours vos risques. Les résultats ci-dessus n'ont pas été cueillis en cerise, mais le marché a été très optimiste au cours des derniers mois, ce qui a conduit aux résultats forts indiqués ci-dessus. Nous aimerions que la communauté essaie différentes stratégies et les partage avec nous.
Un merci spécial au blog de Scott Rome. Les portefeuilles Eigen et les concepts de portefeuille de variance minimale provenaient de ses articles de blog. Le code de filtrage des valeurs propres de la matrice de covariance a également été principalement obtenu à partir de l'un de ses postes.
Un produit par Tradytics
Copyright (C) 2020-présent, Tradytics.com