tfutures.py

Created by matthieumorvant

Created on February 09, 2024

2.42 KB


def calculer_futures(nb_contrats, cours_initial, cours_echeance, dg_par_contrat, nominal_contrat, cours_par_dates):
    dg_initial = nb_contrats * dg_par_contrat
    print("Dépôt de garantie initial (DG): {:.2f} €".format(dg_initial))

    dg_courant = dg_initial
    cours_precedent = cours_initial
    print("\nLigne\tCC\t\tRésultat\tAppel de Marge\tDG")

    for i, cc in enumerate(cours_par_dates, 1):
        resultat = nb_contrats * (cours_precedent - cc) * nominal_contrat / 100
        dg_courant += resultat

        appel_marge = 0
        if dg_courant < dg_initial:
            appel_marge = dg_initial - dg_courant
            dg_courant = dg_initial

        print("{}\t\t{:.2f}\t\t{:.2f}\t\t{:.2f}\t\t\t{:.2f}".format(i, cc, resultat, appel_marge, dg_courant))
        cours_precedent = cc

    # Montant encaissé à la vente des contrats
    montant_encaisse = nb_contrats * cours_initial * nominal_contrat / 100
    detail_encaisse = "Montant encaissé = {} * {:.2f} * {} / 100 = {:.2f} €".format(nb_contrats, cours_initial, nominal_contrat, montant_encaisse)

    # Montant décaissé lors du dénouement de l'opération
    montant_decaisse = nb_contrats * cours_echeance * nominal_contrat / 100
    detail_decaisse = "Montant décaissé = {} * {:.2f} * {} / 100 = {:.2f} €".format(nb_contrats, cours_echeance, nominal_contrat, montant_decaisse)

    # Calcul du résultat global
    resultat_global = montant_encaisse - montant_decaisse
    detail_resultat_global = "Résultat global = {:.2f} - {:.2f} = {:.2f} €".format(montant_encaisse, montant_decaisse, resultat_global)

    return detail_encaisse, detail_decaisse, detail_resultat_global

# Paramètres d'entrée
nb_contrats = int(input("Nombre de contrats : "))
cours_initial = float(input("Cours initial : "))
cours_echeance = float(input("Cours à l'échéance : "))
dg_par_contrat = float(input("DG par contrat : "))
nominal_contrat = float(input("Nominal du contrat : "))
nb_dates = int(input("Nombre de cours à entrer : "))
cours_par_dates = [float(input("Cours {}: ".format(i + 1))) for i in range(nb_dates)]

# Exécution des calculs
detail_encaisse, detail_decaisse, detail_resultat_global = calculer_futures(nb_contrats, cours_initial, cours_echeance, dg_par_contrat, nominal_contrat, cours_par_dates)

# Affichage des détails des calculs et du résultat global
print("\nDétails des calculs:")
print(detail_encaisse)
print(detail_decaisse)
print(detail_resultat_global)

During your visit to our site, NumWorks needs to install "cookies" or use other technologies to collect data about you in order to:

With the exception of Cookies essential to the operation of the site, NumWorks leaves you the choice: you can accept Cookies for audience measurement by clicking on the "Accept and continue" button, or refuse these Cookies by clicking on the "Continue without accepting" button or by continuing your browsing. You can update your choice at any time by clicking on the link "Manage my cookies" at the bottom of the page. For more information, please consult our cookies policy.