Team Ai
Apppublic

Deepvest/ProfilingAI

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
goal_simulator.cpython-310.pyc56 linesDownload Raw Back to __pycache__
1o

2�C~gn"�@s~ddlZddlZddlmZmZmZddlm	Z	ddl3m4Z5ddlmZe	Gdd�d��Z
e	Gd	d6�d7��ZGdd�d�ZdS)
�N)�Dict�List�Optional)�	dataclass)�datetime�)�PersonalProfilec@sXeZdZUdZeed<eed<eeefed<eeed<e	j8ed<eeefed<dS)	�GoalSimulationResultu(Résultat de la simulation d'un objectif�success_probability�required_monthly_investment�risk_assessment�recommended_adjustments�timeline�stress_test_resultsN)�__name__�9__module__�__qualname__�__doc__�float�__annotations__r�strr�pd�	DataFrame�rr�>/Users/sandrine/Deepvest_system/src/analysis/goal_simulator.pyr	10s1112r	c@sBeZdZUdZeed<eed<eed<eed<eed<eed<dS)	�InvestmentGoalu*Définition d'un objectif d'investissement�name�
target_amount�	timeframe�priority�current_progress�required_returnN)rrrrrrr�intrrrrrs13rc@s�eZdZdZdd�Zdedededefdd	�Z	d14e15dededejfdd
�Z
dejdedefdd�Zdedejdedefdd�Zdedejdedeeeffdd�Zdededeeefdedeef16dd�Zdedefdd�ZdS)�
GoalSimulatorz!Simulateur d'objectifs financierscCs||_||_d|_dS)Ni�)�market_analyzer�risk_manager�monte_carlo_sims)�selfr$r%rrr�__init__!s17zGoalSimulator.__init__�goal�current_portfolio�personal_profile�returnc1819�s��z<|j|j||d�}|j||d�}|j||dd�}|j|||d�}|j||||d�}t|||||�||�|�||�d�WSt	yQ}	zt20d|	����d	}	~	ww)21u.Simule la réalisation d'un objectif financier)rr*�profile)�	scenariosr)g�������?)r)r.�success_target)r)r.r+)r)�success_probrr+)r22rrr
rrz)Erreur dans la simulation de l'objectif: N)�_generate_market_scenariosr�_calculate_success_probability�_calculate_required_investment�_assess_goal_risks�_generate_recommendationsr	Z_generate_timeline�_run_stress_tests�	Exception�print)23r'r)r*r+r.r0Zrequired_investmentr�adjustments�errr�simulate_goal_achievement&sP������2425�	��z'GoalSimulator.simulate_goal_achievementrr-c26Cs�z<|d}|j}tjjdd||fd�}|�||�}t|���}t�||f�}	t|�D]}27|t�	d||28�|	|29<q*|	WSt30yP}ztd|����d}~ww)u2Génère des scénarios de marché via Monte Carlo�g{�G�zt?g{�G�z�?)�loc�scale�size�u,Erreur dans la génération des scénarios: N)r&�np�random�normalZ _adjust_returns_for_risk_profile�sum�values�zeros�range�cumprodr7r8)r'rr*r-Zn_monthsZn_sims�monthly_returns�adjusted_returns�
initial_valuer.�ir:rrrr1\s*����z(GoalSimulator._generate_market_scenariosr.c31Csdz|dd�df}t�||jk�}|t|�WSty1}ztd|���WYd}~dSd}~ww)u.Calcule la probabilité d'atteindre l'objectifN�����u5Erreur dans le calcul de la probabilité de succès: �)rArDr�lenr7r8)r'r.r)Zfinal_valuesZ
success_countr:rrrr2s��z,GoalSimulator._calculate_success_probabilityr/c32Cs�z8|j|j}|jd}t�t�|�|dd�dd�f�}d|dd}||d||d}d}	||	WStyR}33ztd|34���WYd}35~36dSd}37~38ww)	u,Calcule l'investissement mensuel nécessairer<NrMr@gUUUUUU�?g�������?z2Erreur dans le calcul de l'investissement requis: rN)rr rrA�mean�diffr7r8)r'r)r.r/Zcurrent_gapZmonths_remaining�39avg_return�rZrequired_monthlyZ
safety_marginr:rrrr3�s40$41��z,GoalSimulator._calculate_required_investmentc42Cshz|�||�|�||�|�||�|�||�d�WSty3}ztd|���iWYd}~Sd}~ww)u'Évalue les risques liés à l'objectif�Zshortfall_riskZ	time_riskZinvestment_risk�liquidity_risku'Erreur dans l'évaluation des risques: N)Z_calculate_shortfall_riskZ_calculate_time_riskZ_calculate_investment_riskZ_calculate_liquidity_riskr7r8)r'r)r.r+r:rrrr4�s43444546���z GoalSimulator._assess_goal_risksr0rc	CsPg}|dkr|�d�|��D]\}}|dkr%|�d|�d|�|����q|S)u)Génère des recommandations d'ajustementg333333�?u�La probabilité d'atteinte de l'objectif est faible. Considérez : 1. Augmenter l'épargne mensuelle 2. Allonger l'horizon d'investissement 3. Ajuster l'objectif à la baissegffffff�?zRisque u élevé. Suggestion : )�append�items�_get_risk_mitigation_strategy)r'r)r0rr+�recommendations�	risk_type�47risk_levelrrrr5�s����z'GoalSimulator._generate_recommendationsrZcCsddddd�}|�|d�S)u@Retourne une stratégie de mitigation pour chaque type de risqueu+Augmenter l'épargne ou réduire l'objectifu,Prévoir une période tampon supplémentairez%Diversifier davantage le portefeuilleu/Maintenir une réserve de liquidité suffisanterTuRevoir la stratégie globale)�get)r'rZ�48strategiesrrrrX�s�z+GoalSimulator._get_risk_mitigation_strategyN)rrrrr(rrrr	r;r"rA�ndarrayr1rr2r3rr4rr5rXrrrrr#st���49�6���50�#��51����52����5354���55��56�r#)�numpyrA�pandasr�typingrrr�dataclassesrrZcore.profilingrr	rr#rrrr�<module>s