toptexp.py

Created by matthieumorvant

Created on February 06, 2024

2.44 KB


def calculer_resultats(creance, tx_a_terme, strike, tx_spot, prime_percent):
    # Calcul de la prime
    prime_payee = (prime_percent / 100) * (creance / tx_spot)
    detail_prime = "{}% de {} / {} = {:.2f} €".format(prime_percent, creance, tx_spot, prime_payee)
    
    # Calcul du seuil de rentabilité x
    x = (1 / strike) - (prime_payee / creance)
    detail_x = "(1 / {}) - ({:.2f} / {}) = {:.4f}".format(strike, prime_payee, creance, x)
    
    # Calcul de l'encaissement sans couverture
    sans_couverture = creance / tx_a_terme
    detail_sans_couverture = "{} / {} = {:.2f} €".format(creance, tx_a_terme, sans_couverture)
    
    if tx_a_terme > strike:
        # Exercer l'option
        description_action = "Tx à terme > Strike: Option levée"
        montant_encaisse = creance / strike
        detail_montant_encaisse = "{} / {} = {:.2f} €".format(creance, strike, montant_encaisse)
    else:
        # Ne pas exercer l'option
        description_action = "Tx à terme < Strike: Option non levée"
        montant_encaisse = sans_couverture
        detail_montant_encaisse = "{} / {} = {:.2f} €".format(creance, tx_a_terme, montant_encaisse)

    # Calculs nets
    net_encaisse = montant_encaisse - prime_payee
    detail_net_encaisse = "{:.2f} - {:.2f} = {:.2f} €".format(montant_encaisse, prime_payee, net_encaisse)
    
    cours_obtenu = creance / net_encaisse
    detail_cours_obtenu = "{} / {:.2f} = {:.3f}".format(creance, net_encaisse, cours_obtenu)

    detail_calculs = """
    Prime payée au vendeur: {}
    Montant encaissé brut (Nat/Etr): {}
    Montant net encaissé: {}
    Cours obtenu après couverture (Nat/Etr): {}
    Encaissement sans couverture (Nat/Etr): {}
    Seuil de rentabilité (x) (Nat/Etr): {}""".format(detail_prime, detail_montant_encaisse, detail_net_encaisse, detail_cours_obtenu, detail_sans_couverture, detail_x)

    return description_action, detail_calculs

# Entrée des données utilisateur
creance = float(input("Entrez la créance : "))
tx_a_terme = float(input("Entrez le Tx à terme (Nat/Etr) : "))
strike = float(input("Entrez le Strike (Nat/Etr) : "))
tx_spot = float(input("Entrez le Tx spot (Nat/Etr) : "))
prime_percent = float(input("Entrez le pourcentage de prime : "))

# Exécution des calculs
description_action, detail_calculs = calculer_resultats(creance, tx_a_terme, strike, tx_spot, prime_percent)

# Affichage des résultats
print("\nRésultats:")
print(description_action)
print(detail_calculs)