Python Forum
Trading Risk management script.
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Trading Risk management script.
#1
Lightbulb 
This program is a lightweight, pure-Python tool designed to help traders accurately measure, control, and optimize their risk on every position. Built entirely with the Python standard library, it provides a fast and transparent way to calculate position sizes, validate risk levels, and maintain consistent risk discipline across all trades.

Code:
def calculer_position_sizing(capital, risque_pourcent, sl_pips): """ Calcule la taille de position pour le trading Args: capital: Capital disponible en € risque_pourcent: Pourcentage du capital à risquer (0-100) sl_pips: Stop Loss en pips Returns: Dict avec taille_lot, exposition, levier """ # Vérifications if capital <= 0: return {"erreur": "Le capital doit être positif"} if risque_pourcent <= 0 or risque_pourcent > 100: return {"erreur": "Le risque doit être entre 0 et 100%"} if sl_pips <= 0: return {"erreur": "Le SL doit être positif"} # Montant à risquer en € montant_risque = capital * (risque_pourcent / 100) # Valeur d'un pip (pour crypto généralement 1 pip = 0.01 USDT) # Pour BTC/USDT: 1 pip = 0.01 (par defaut) # Vous pouvez modifier selon votre pair valeur_pip = 0.01 # Risque total en € risque_total = sl_pips * valeur_pip # Taille de lot (en unités) if risque_total > 0: taille_lot = montant_risque / risque_total else: taille_lot = 0 # Exposition (montant total engagé) # Pour crypto: exposition = taille_lot * prix_moyen # Exemple BTC à 50000: exposition = taille_lot * 50000 exposition = taille_lot * 1 # 1 = prix normalisé (à adapter) # Levier estimé (exposition / capital) if capital > 0: levier = exposition / capital if exposition > 0 else 1 else: levier = 1 return { "capital": capital, "risque_pourcent": risque_pourcent, "montant_risque": montant_risque, "sl_pips": sl_pips, "taille_lot": round(taille_lot, 4), "exposition": round(exposition, 2), "levier": round(levier, 2) } def afficher_resultats(resultats): """Affiche les résultats de manière formatée""" if "erreur" in resultats: print(f"\n❌ Erreur: {resultats['erreur']}") return print("\n" + "=" * 60) print("📊 RÉSULTATS DU POSITION SIZING") print("=" * 60) print(f"\n💰 Capital: {resultats['capital']}€") print(f"⚠️ Risque: {resultats['risque_pourcent']}%") print(f"📉 Montant à risquer: {resultats['montant_risque']}€") print(f"🎯 Stop Loss: {resultats['sl_pips']} pips") print("\n" + "-" * 60) print(f"📦 Taille de lot: {resultats['taille_lot']} unités") print(f"💵 Exposition: {resultats['exposition']}€") print(f"🔧 Levier estimé: x{resultats['levier']}") print("=" * 60) def main(): print("=" * 60) print("💹 CALCULATEUR DE POSITION SIZING TRADING") print("=" * 60) print("\nCe tool calcule la taille optimale de votre position") print("basée sur votre capital et votre tolérance au risque") print("\n" + "=" * 60) while True: try: print("\n📝 Entrez vos paramètres (ou 'quit' pour quitter):") capital_input = input("\n💰 Capital disponible (€): ").strip() if capital_input.lower() in ['quit', 'q']: print("\n👋 Au revoir!") break capital = float(capital_input) risque_input = input("⚠️ Pourcentage de risque (1-10%): ").strip() risque_pourcent = float(risque_input) sl_input = input("🎯 Stop Loss (pips): ").strip() sl_pips = float(sl_input) # Calculer resultats = calculer_position_sizing(capital, risque_pourcent, sl_pips) # Afficher afficher_resultats(resultats) # Demander si on continue continuer = input("\n🔄 Faire un autre calcul? (oui/non): ").strip().lower() if continuer not in ['oui', 'o', 'yes', 'y']: print("\n👋 Merci d'avoir utilisé le calculateur!") break except ValueError: print("\n❌ Erreur: Entrez des nombres valides!") except KeyboardInterrupt: print("\n\n👋 Programme arrêté") break except Exception as e: print(f"\n❌ Erreur: {e}") if __name__ == "__main__": main()
Usage example:

💰 Capital disponible (€): 100
⚠️ Pourcentage de risque (1-10%): 1
🎯 Stop Loss (pips): 1

============================================================
📊 RÉSULTATS DU POSITION SIZING
============================================================

💰 Capital: 100.0€
⚠️ Risque: 1.0%
📉 Montant à risquer: 1.0€
🎯 Stop Loss: 1.0 pips

------------------------------------------------------------
📦 Taille de lot: 100.0 unités
💵 Exposition: 100.0€
🔧 Levier estimé: x1.0
buran write Nov-29-2025, 07:09 PM:
Please, use proper tags when post code, traceback, output, etc. This time I have added tags for you.
See BBcode help for more info.

Attached Files

.py   trading size.py (Size: 4.34 KB / Downloads: 0)
Reply
#2
This is called Code sharing, so please share code, not attachments.
Reply
#3
(Nov-29-2025, 05:24 PM)Axel_Erfurt Wrote: This is called Code sharing, so please share code, not attachments.
Sorry I am new on the forum, but the code is on the post.
Reply
#4
The code should be in code tags (the python button), otherwise all indentations are lost.
Reply
#5
(Nov-29-2025, 07:08 PM)Axel_Erfurt Wrote: The code should be in code tags (the python button), otherwise all indentations are lost.
Ok Thank you for the advice, i will make sure to change it.
Reply
#6
(Nov-29-2025, 04:51 PM)NeoQuant Wrote: This program is a lightweight, pure-Python tool designed to help traders accurately measure, control, and optimize their risk on every position. Built entirely with the Python standard library, it provides a fast and transparent way to calculate position sizes, validate risk levels, and maintain consistent risk discipline across all trades.

Code:
def calculer_position_sizing(capital, risque_pourcent, sl_pips): """ Calcule la taille de position pour le trading Args: capital: Capital disponible en € risque_pourcent: Pourcentage du capital à risquer (0-100) sl_pips: Stop Loss en pips Returns: Dict avec taille_lot, exposition, levier """ # Vérifications if capital <= 0: return {"erreur": "Le capital doit être positif"} if risque_pourcent <= 0 or risque_pourcent > 100: return {"erreur": "Le risque doit être entre 0 et 100%"} if sl_pips <= 0: return {"erreur": "Le SL doit être positif"} # Montant à risquer en € montant_risque = capital * (risque_pourcent / 100) # Valeur d'un pip (pour crypto généralement 1 pip = 0.01 USDT) # Pour BTC/USDT: 1 pip = 0.01 (par defaut) # Vous pouvez modifier selon votre pair valeur_pip = 0.01 # Risque total en € risque_total = sl_pips * valeur_pip # Taille de lot (en unités) if risque_total > 0: taille_lot = montant_risque / risque_total else: taille_lot = 0 # Exposition (montant total engagé) # Pour crypto: exposition = taille_lot * prix_moyen # Exemple BTC à 50000: exposition = taille_lot * 50000 exposition = taille_lot * 1 # 1 = prix normalisé (à adapter) # Levier estimé (exposition / capital) if capital > 0: levier = exposition / capital if exposition > 0 else 1 else: levier = 1 return { "capital": capital, "risque_pourcent": risque_pourcent, "montant_risque": montant_risque, "sl_pips": sl_pips, "taille_lot": round(taille_lot, 4), "exposition": round(exposition, 2), "levier": round(levier, 2) } def afficher_resultats(resultats): """Affiche les résultats de manière formatée""" if "erreur" in resultats: print(f"\n❌ Erreur: {resultats['erreur']}") return print("\n" + "=" * 60) print("📊 RÉSULTATS DU POSITION SIZING") print("=" * 60) print(f"\n💰 Capital: {resultats['capital']}€") print(f"⚠️ Risque: {resultats['risque_pourcent']}%") print(f"📉 Montant à risquer: {resultats['montant_risque']}€") print(f"🎯 Stop Loss: {resultats['sl_pips']} pips") print("\n" + "-" * 60) print(f"📦 Taille de lot: {resultats['taille_lot']} unités") print(f"💵 Exposition: {resultats['exposition']}€") print(f"🔧 Levier estimé: x{resultats['levier']}") print("=" * 60) def main(): print("=" * 60) print("💹 CALCULATEUR DE POSITION SIZING TRADING") print("=" * 60) print("\nCe tool calcule la taille optimale de votre position") print("basée sur votre capital et votre tolérance au risque") print("\n" + "=" * 60) while True: try: print("\n📝 Entrez vos paramètres (ou 'quit' pour quitter):") capital_input = input("\n💰 Capital disponible (€): ").strip() if capital_input.lower() in ['quit', 'q']: print("\n👋 Au revoir!") break capital = float(capital_input) risque_input = input("⚠️ Pourcentage de risque (1-10%): ").strip() risque_pourcent = float(risque_input) sl_input = input("🎯 Stop Loss (pips): ").strip() sl_pips = float(sl_input) # Calculer resultats = calculer_position_sizing(capital, risque_pourcent, sl_pips) # Afficher afficher_resultats(resultats) # Demander si on continue continuer = input("\n🔄 Faire un autre calcul? (oui/non): ").strip().lower() if continuer not in ['oui', 'o', 'yes', 'y']: print("\n👋 Merci d'avoir utilisé le calculateur!") break except ValueError: print("\n❌ Erreur: Entrez des nombres valides!") except KeyboardInterrupt: print("\n\n👋 Programme arrêté") break except Exception as e: print(f"\n❌ Erreur: {e}") if __name__ == "__main__": main()
Usage example:

💰 Capital disponible (€): 100
⚠️ Pourcentage de risque (1-10%): 1
🎯 Stop Loss (pips): 1

============================================================
📊 RÉSULTATS DU POSITION SIZING
============================================================

💰 Capital: 100.0€
⚠️ Risque: 1.0%
📉 Montant à risquer: 1.0€
🎯 Stop Loss: 1.0 pips

------------------------------------------------------------
📦 Taille de lot: 100.0 unités
💵 Exposition: 100.0€
🔧 Levier estimé: x1.0
Than you very much Buran.
Reply


User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020
This forum uses Lukasz Tkacz MyBB addons.
Forum use Krzysztof "Supryk" Supryczynski addons.