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)