# Guide d'installation Trading bot ### Plan #### 1 - Vérifier installation anaconda #### 2 - Installer git #### 3 - Set up le projet via git * 3-1 Se créer un Personnal Acess Token * 3-2 Télécharger le code : Cloner le projet * 3.3 set up son environment #### 4 - Ajouter les données - historique prix marché #### 5 - Start guide ### Notes préalables * pour valider une commande en terminal il faut simplement faire `entrer`. Les commandes exécutées précédemment peuvent être retrouver avec les fleches directionnelles dans le terminal. * par defualt tu vas utiliser powershell comme terminal. Donc quand je parle de terminal, je parle de powershell. * Quand dans une commande ou exemple de sortie, il y a `<user_name>` cela signifie que l'ensemble de cette string doit etre remplacée (y compris les "<>" ) par ce qui est demandé. Si mon nom d'utilisateur est `tintin` alors `<user_name>` est remplacée par `tintin`. * Tu peux supprimer le projet que l'on a télécharger précédemment; tu vas utiliser git comme un grand; ca sera plus simple pour mettre à jour le code. * Si une commande ne donne pas le résultat attendu, ferme et réouvre le terminal..la magie de l'informatique * *deplacement dans les fichiers via le terminal* : * `ls` : affiche les fichiers et dossiers du repertoire actif (== ou tu te trouves avec le terminal) * `cd <dossier>` : se place dans le dossier `<dossier>` (qui doit être un dossier accessible depuis le repertoire actif) * `cd ..` : retour au dossier parent ## 1 Vérifier installation anaconda * Ouvrir "Anaconda Prompt" (terminal d'Anaconda) * Vérifier installation d'anaconda en tapant dans le terminal : * `conda -V` Un numéro de version doit apparaitre. * Taper * `where conda` * Tu dois avoir différents chemins commencant par `C:\Users\<user_name>\anaconda3\<autre chose>` * le `<user_name>` nous intéresse pour la suite * Maintenant on va permettre à tous les terminaux d'executer conda * Rechercher dans la barre de recherche "Modifier les variables d'environnement système" * Cliquer sur le bouton Variables d'environnement * Sélectionner la variable `Path` et Modifier (la créer si inexistante) avec les valeurs suivantes (une valeurs par case): * `C:\Users\<user_name>\anaconda3\Scripts` * `C:\Users\<user_name>\anaconda3` * Valider la modification et fermer les fenetres. * Ouvrir un terminal "Powershell" en mode administrateur * taper : * ```set-executionpolicy unrestricted``` et valider avec O * Fermer et réouvrez Powershell * Est cve qu'il y a `base` en début de ligne de commande ? * Si oui; bravo * Sinon; tapez : `conda init powershell`, fermer et ré-ouvrez le terminal ## 2 - Installer Git * Aller sur https://git-scm.com/ et cliquer sur Download * Pour choisir la version adéquat il faut savoir si on est en x32 ou x64 * rechercher "voir si vous avez une version 32 bits ou 64" dans la barre de recherche et regarder type du systeme dans les specs de l'appareil * Sur la page des versions choisir la version `Standalone Installer` adequat (32 ou 64) * Télécharger et installer l'exécutable * Valide l'ensemble des étapes, les paramètres par defaults sont ok * Réouvre ton Powershell et tape * `git --version` ## 3 - Set up le projet via git #### 3.1 Créer un personnal access token * Sur github en etant connecté aller en haut à droite surla liste deroulante et cliquer sur *settings*, puis : * Developer settings (en bas dans le menu a gauche) * Personal access tokens * Tokens * Generate a new token (classic) : * mettre une date expiration (no expiration c'est possible) * choisir les scopes (cocher la case des grouypes suivants) : * repo : * workflow * write:packages * admin:public_key * notifications * user * write:discussion * projetc * admin:gpq_key * admin:ssh_signing_key C'est une liste exhaustive mais tu seras tranquille. A noter que les droits au projet sont gérés par le Maintainer et tu n'auras pas les accès de push (donc pas de betises permises au moins). >Edit : il semble que sur Gihub dans un projet perso je ne peux pas te mettre en "read-only" seulement. Donc pas de betises, ne push jamais le code ca sera plus simple! * Generate token * **IMPORTANT** copie le code du token (bloc vert) quelque part (tu ne pourras pas le retrouver sinon) #### 3.2 Cloner le projet (le télécharger depuis le repository distant) * Se placer avec son terminal powershell dans le dossier souhaité pour y mettre le projet (aller on fais joujou avec les commandes terminal) * par exemple chez moi, c'est `~\Documents\Code\Rhizome\` * cloner le projet via la branch dev, le dossier `trading_electricty_rhizome` sera téléchargé; taper dans le terminal : ``` git clone --single-branch -b dev https://github.com/brustt/trading_electricity_rhizome.git ``` * On doit te demander ton username et ton mot de passe : * username c'est ton email de github * le mot de passe est le **Personnal Acess Token** * Enter et le projet doit se telecharger > Dans le futur, je mettrais les mises à jour sur la branch dev donc tu pourras mettre à jour le code en une seule commande!(on y reviendra plus loi, voir le start guide) #### 3.2 Set up son environment virtuel * On va creer l'environnment virtuel (un espace isolé ou toutes les dependances du projet seront installées et on pourra run le code) : * se placer à la racine du projet : ``` cd trading_electricity_rhizome ``` * Ouvrez un terminal; créer l'environment virtuel avec le fichier environment.yml : ``` create env create -f environment.yml ``` Les paquets doivent s'installer l'un apres l'autre ## 4 - Ajouter les données - historique prix marché * Intégrer le dossier `data/` à la racine du projet. dossier data dispo sur drive (`data/DATA_USED_IN_CODE/` ) : https://onedrive.live.com/?authkey=%21Aljs1ENCRoBXnto&id=1DC29A749D2DF9C6%2140089&cid=1DC29A749D2DF9C6 > Yeeah t'es (presque) pret à trader copain ## 5 - Start guide #### A chaque session * Avec vs code : Onglet Terminal > New Terminal Tout se fait desormais dans ce terminal. Dans le terminal précédemment ouvert, vérifier que l'environnement conda est activé (la ligne de commande est préfixé par le nom d'environnement). Sinon : ``` conda activate rhizome ``` #### Paramètres ##### Fichier config/1.yml ```yml # physic constants storage_cpty: 956 storage_pwr: 100 rho_d: 0.84 rho_s: 0.84 t_discharge: 8 init_storage_cpty: 300 # balance start level balance_init_level: 1000 # market market_name: "germany" # trading dates bound experiment date_start: "01-01-2020" date_end: "12-01-2020" hour_begin_trade: "00" # column to predict column_to_trade: "true_prices" #strategy name_strategy: "pair_method" # mean reversion alpha: 0.7 period: 23 n_frames: 24 # number of forecast n_iteration: 10 # training params size_window_train: 730 # forecaster params model_name: "lgbm" params: name_feature_builder: "lgbm" n_lags_features: 168 ``` **Détails des paramètres** : Je crois que les noms des paramètres sont assez explicites, je te laisse des précisions sur les moins évidents ou sur ceux que tu ne dois pas toucher : (| == ou, i.e detaille les valeurs possibles du paramètres) * market_name : "germany" | * n_frames : int =>nombres d'unités (heures) à prédire (forecast/trading) * n_iteration : int =>iterations de forecast/trading (pour n_frames=24, n_iteration est le nombre de jours) * name_strategy : "pair_method" | "mean_reversion" * "pair_method" : ne prend pas de paramètres d'entrée (si ce n'est l'heure de début de trading *hour_begin_trade*) * "mean_reversion" : * alpha : float => coefficient multiplicateur des seuil d'achat et de vente (upper bound and lower bound). On rappel que les seuil sont determiné via la moyenne glissante +- alpha * std * period : nombres d'heures de la moyenne glissante * model_name: "lgbm" * "lgbm" * name_feature_builder: "lgbm" * n_lags_features: int => entrée (heures passée; i.e le modèle prend 1 semaine en entrée) / dimension de l'entrée du modèle * size_window_train : int => nombre de jours passés à intégrer dans l'entrainement du modèle #### Run (terminal) * Se positionner dans le dossier trading_electricity_rhizome : ``` cd trading_electricity_rhizome ``` * Run (sans argu) On peut passer 2 paramètres en ligne de commande : * market_name (remplace celui du fichier 1.yml) * exp_name : prefixe au nom du dossier d'enregitrement remplacent ceux définis dans le fichier *1.yml* (seuelment pour markets). Il suffit de les ajouter, séparer par un espace a la commande de run (voir plus bas) : Seul market **sans parametres** Tous les parametres de l'experience sont alors extraits de 1.yml ``` python src/main.py ``` **avec parametres** Experience trading sur la france avec comme prefixe d'enregistrement "test_full_year" ``` python src/main.py --market_name=france --exp_name=test_full_year ```