Boucles et Conditions en Python

Les boucles en Python

Les boucles sont un concept essentiel en programmation, permettant d'exĂ©cuter un bloc de code plusieurs fois en fonction d'une condition ou d'un nombre d'itĂ©rations dĂ©terminĂ©. Dans le contexte de la finance, elles peuvent ĂȘtre utilisĂ©es pour analyser des donnĂ©es sur plusieurs pĂ©riodes ou pour effectuer des calculs rĂ©pĂ©titifs. Un exemple trĂšs concret serait le backtest, le backtest est une simulation sur le passĂ© d’une stratĂ©gie d’investissement ou de trading. Pour rĂ©aliser un backtest, nous allons parcourir chaque prix sur une pĂ©riode donnĂ©e, et cela se fait grĂące Ă  une boucle. En Python, on utilise principalement deux types de boucles : for et while.

La boucle for en Python

La boucle for est utilisĂ©e pour parcourir une sĂ©quence et exĂ©cuter un bloc de code pour chaque Ă©lĂ©ment de cette sĂ©quence. Une sĂ©quence peut avoir plusieurs types comme une liste, un tuple, un dictionnaire ou une chaĂźne de caractĂšres. Nous verrons ces types lors de la prochaine sĂ©ance, pour l’instant cela n’est pas trĂšs important pour la comprĂ©hension.

Par exemple, supposons que nous avons un solde de compte actuel de 3000€, tous les mois, nous touchons un salaire de 2000€ et nous avons 1800€ de dĂ©pense. Nous souhaitons connaĂźtre Ă  la fin de l’annĂ©e (aprĂšs 12 mois) le solde de notre compte :

balance = 3000
salary = 2000
expenses = 1800

for i in range(12):
	balance = balance + salary - expenses 
	print("Solde aprùs", i+1, "mois", balance, "€")

print("Le solde de mon compte en fin d'annĂ©e est :", balance, "€")

Ici, nous définissons trois variables : balance, salary et expenses. Ces variables représentent respectivement le solde de départ du compte, le salaire mensuel et les dépenses mensuelles.

Ensuite, nous utilisons une boucle for pour simuler les transactions financiÚres sur une période de 12 mois. La fonction range(12) génÚre une séquence de nombres de 0 à 11 (12 éléments au total).

Vous pouvez remarquer que les 2 lignes en dessous du for ne sont pas alignĂ©es au mĂȘme niveau. En effet, elles sont ce qu’on appelle indentĂ©es, c'est-Ă -dire espacĂ©es de 4 espaces Ă  gauche. Les lignes indentĂ©es sont incluses par le for, alors que celles non indentĂ©es comme la derniĂšre ne le seront pas. ConcrĂštement, l’affichage “Solde aprĂšs
” sera affichĂ© 12 fois alors que le texte “Le solde de mon compte
” ne sera affichĂ© qu’une seule fois.

Nous mettons par la suite Ă  jour notre solde en lui ajoutant le salaire et en retirant les dĂ©penses et affichons grĂące Ă  la fonction print() notre nouveau solde, ainsi que le mois de l’annĂ©e. Comme nous l’avons vu plus haut, la fonction range(12) gĂ©nĂšre une sĂ©quence de nombres de 0 Ă  11 donc lors de l’affichage, nous ajouterons 1 Ă  i afin de commencer au mois 1 au lieu du mois 0.

Enfin, nous affichons le solde final en fin d’annĂ©e.

Python output result

La boucle while en Python

La boucle while est utilisĂ©e pour exĂ©cuter un bloc de code tant qu'une condition est vraie. Par exemple, supposons que nous voulons calculer combien de temps faut-il pour doubler un investissement avec un taux d'intĂ©rĂȘt annuel fixe :

initial_investment = 1000
interest_rate = 0.05
years = 0
current_value = initial_investment

while current_value < initial_investment * 2:
    current_value = current_value * (1 + interest_rate)
    years += 1

print("Il faudra", years, "années pour doubler l'investissement.")

Dans cet exemple, le bloc de code Ă  l'intĂ©rieur de la boucle while sera exĂ©cutĂ© tant que la valeur de current_value est infĂ©rieure au double de l'investissement initial. À chaque itĂ©ration, nous mettons Ă  jour la valeur de current_value avec les intĂ©rĂȘts et on incrĂ©mente years de 1.

Nous sortons donc de la boucle while lorsque la valeur de current_value devient supĂ©rieur Ă  2 fois notre investissement initial. A ce moment, nous affichons grĂące Ă  la fonction print la valeur de notre variable years qui reprĂ©sente le nombre d’annĂ©e nĂ©cessaire pour doubler notre investissement.

Comment utiliser des conditions en Python ?

Les conditions sont également un concept important en programmation. Elles permettent d'exécuter un bloc de code si une condition est vraie, et éventuellement un autre bloc de code si cette condition est fausse. En Python, on utilise les mots-clés if, elif et else pour définir des conditions. if pour si, elif pour sinon si et enfin else pour sinon.

Voici un exemple simple :

bitcoin_price = 45000

if bitcoin_price <= 30000:
    print("Acheter")
elif bitcoin_price > 30000 and bitcoin_price <= 50000:
    print("Vendre la moitié")
elif bitcoin_price < 60000:
    print("Conserver")
else:
    print("Vendre la totalité")

Dans cet exemple, le programme va afficher "Vendre la moitiĂ©", car la valeur de bitcoin_price est 45 000, ce qui est supĂ©rieur Ă  30 000 et infĂ©rieur Ă  50 000. Vous dĂ©couvrez ici le mot clĂ© and qui reprĂ©sente l’opĂ©rateur et en français, il existe par ailleurs le or qui reprĂ©sente le ou en français.

Voici quelques autres exemples simples d’utilisation de conditions:

text = "hello"
if text == "hello" or text == "hi":
		print("text is hello or hi")
elif text != "hello":
		print("text is not hello and also no hi")

condition = True
if condition is True:
		print("My condition is true")
else:
		print("My condition is false")

Exemple combinant boucles et conditions en Python

Pour illustrer l'utilisation combinĂ©e des boucles et des conditions en Python, prenons un exemple oĂč nous cherchons Ă  dĂ©terminer combien de mois il vous faudra pour atteindre un objectif d'Ă©pargne, en tenant compte d'une augmentation possible de l'Ă©pargne mensuelle en fonction d'une promotion au travail.

  • Objectif d'Ă©pargne : 10 000 €
  • Épargne mensuelle actuelle : 400 €
  • Promotion prĂ©vue dans 6 mois
  • Augmentation de l'Ă©pargne mensuelle aprĂšs promotion : 200 € (Ă©pargne mensuelle de 600 €)
# Variables
savings_goal = 10000
monthly_savings = 400
promotion_month = 6
savings_increase = 200

# Initialiser les compteurs
months_needed = 0
total_savings = 0

# Boucle pour atteindre l'objectif d'Ă©pargne
while total_savings < savings_goal:
    # VĂ©rifie si la promotion a eu lieu
    if months_needed == promotion_month:
        monthly_savings += savings_increase

    # Ajoutez l'Ă©pargne mensuelle au total
    total_savings += monthly_savings

    # Incrémentez le compteur de mois nécessaires
    months_needed += 1

print(f"Il vous faudra {months_needed} mois pour atteindre votre objectif d'Ă©pargne de {savings_goal} €.")

Dans cet exemple, nous utilisons une boucle while pour simuler l'épargne mensuelle et vérifier si l'objectif d'épargne a été atteint. La condition if à l'intérieur de la boucle vérifie si la promotion a eu lieu et met à jour l'épargne mensuelle en conséquence. Le compteur months_needed permet de suivre le nombre de mois nécessaires pour atteindre l'objectif d'épargne.

Vous remarquerez Ă©galement l’utilisation de += . Pour comprendre a += 1 est exactement la mĂȘme chose que a = a + 1. L'opĂ©rateur += ajoute la valeur de droite Ă  la variable de gauche, puis affecte le rĂ©sultat Ă  la variable de gauche. Les opĂ©rateurs -= ou ***= **existent Ă©galement et marchent sur le mĂȘme principe.

a = 5
a += 3 # a = a + 3
print(a) # Affiche 8

b = 10
b -= 1 # b = b - 1
print(b) # Affiche 9

c = 2
c *= 15 # c = c * 15
print(c) # Affiche 30

Mise en pratique

Pour mettre en pratique les concepts abordĂ©s dans cette partie, essayons de rĂ©soudre un exercice simple. Imaginons que vous avez investi 1000 € dans diffĂ©rents actifs financiers, et vous voulez savoir combien d'annĂ©es, il faudra pour atteindre un certain objectif de capitalisation.

Supposons que vous avez les informations suivantes :

  • Investissement initial : 1000 €
  • Objectif de capitalisation : 2000 €
  • Taux d'intĂ©rĂȘt annuel : 4 %

Questions :

  1. Combien d'années faudra-t-il pour atteindre l'objectif de capitalisation ?
  2. Modifiez le taux d'intĂ©rĂȘt annuel et vĂ©rifiez l'impact sur le nombre d'annĂ©es nĂ©cessaires pour atteindre l'objectif.
  3. Ajoutez une boucle for pour tester diffĂ©rents taux d'intĂ©rĂȘt annuels (par exemple, de 2 % Ă  8 %, par pas de 1 %) et affichez le nombre d'annĂ©es nĂ©cessaires pour atteindre l'objectif pour chaque taux.

Cet exercice devrait vous permettre de mieux comprendre l'utilisation des boucles et des conditions en Python appliquées au contexte de la finance. Un exemple de correction se trouve ici: https://github.com/RobotTraders/Python_For_Finance/blob/main/exercise_correction_chapter_2.ipynb. N'hésitez pas à adapter cet exemple à vos propres besoins et à explorer d'autres scénarios financiers.