Team Ai
Apppublic

Deepvest/ProfilingAI

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

2�C~g �@s�ddlZddlZddlmZmZmZddlm	Z	ddl3m4Z5mZddlm
Z
Gdd�de
�Ze	Gdd	�d	��ZGd6d�d�ZdS)�N)�Dict�List�Optional)�	dataclass)�datetime�	timedelta)�Enumc@s4eZdZdZdZdZdZdZdZdZ	dZ7d	Zd8ZdS)�MarketScenariouTypes de scénarios de marché�bull_market�bear_market�high_volatility�low_volatility�crisis�recoveryZsidewaysZhigh_inflation�stagflationN)
�__name__�9__module__�__qualname__�__doc__�BULL_MARKET�BEAR_MARKET�HIGH_VOLATILITY�LOW_VOLATILITY�CRISIS�RECOVERYZSIDEWAYSZHIGH_INFLATION�STAGFLATION�rr�@/Users/sandrine/Deepvest_system/src/analysis/scenario_manager.pyr	10sr	c@sJeZdZUdZeed<eed<eed<ee	efed<ee	efed<dS)�ScenarioConfiguConfiguration d'un scénario�
scenario_type�duration�severity�11parameters�macro_conditionsN)12rrrrr	�__annotations__�int�floatr�strrrrrrs13rc@s�eZdZdZdd�Zdejdedejfdd�Zd	e	ed14e15eefde16fdd�Z
de	efd
d�Zdejdedejfdd�Zdejdedejfdd�Zdejde17eefdejfdd�Zdejd18e19eefdede20fdd�Zde21dede22fdd�ZdS)�ScenarioManageru%Gestionnaire de scénarios de marchécCs||_||_||_dS)N)�data_fetcher�market_analyzer�risk_manager)�selfr)r*r+rrr�__init__"s23zScenarioManager.__init__�	base_data�config�returnc24Cs�z4|��}|jtjkr|�||�}n|jtjkr|�||�}n|jtjkr+|�||�}|�	||j25�}|WStyO}ztd|���|WYd}~Sd}~ww)u,Génère un scénario de marché spécifiqueu*Erreur dans la génération du scénario: N)
�copyrr	r�_generate_bull_marketrZ_generate_bear_marketr�_generate_crisis�_add_macro_conditionsr#�	Exception�print)r,r.r/�
scenario_data�errr�generate_scenario's��z!ScenarioManager.generate_scenario�	scenarios�base_portfolioc	�s��i}|D]?}z |j|��IdH|d�}|j||||d�IdH}|||jj<WqtyD}ztd|j�d|���WYd}~qd}~ww|S)u/Teste la stratégie sous différents scénariosN)r.r/)�strategyr7r;r/uErreur test scénario z: )r9Z_get_base_data�_backtest_scenarior�valuer5r6)	r,r<r:r;�resultsZscenario_configr7�scenario_resultsr8rrr�test_strategy_under_scenarios?s(���"��z-ScenarioManager.test_strategy_under_scenariosc	Cs&ttjdddddd�ddd	d26�d�gS)u+Génère une série de scénarios de stress�?皙�����?g@g�������?g333333�?)�volatility_increaseZcorrelation_increaseZliquidity_decreaseg���Q���g���Q��?g{�G�z�?)�27gdp_growth�inflation_rate�
interest_rate)rr r!r"r#)rr	r)r,rrr�generate_stress_scenarios]s����z)ScenarioManager.generate_stress_scenarios�datac28Csvz|��}d|j}||}d}||}d|��|jdWSty:}ztd|���|WYd}~Sd}~ww)u)Génère un scénario de marché haussierg-C��6*?rC�ru!Erreur génération bull market: N)�29pct_changer!�cumprod�ilocr5r6)r,rIr/�returnsZbull_adjustmentZadjusted_returnsZvol_adjustmentr8rrrr2rs30��z%ScenarioManager._generate_bull_marketc3132Cs�zKd|j}|��}t|jd�}t�d||�}|jd|�d|��9<|j|d�}|��d|j	d}d|��|jd|j|d�<|WSt33yf}	ztd|	���|WYd}	~	Sd}	~	ww)uGénère un scénario de criseg333333ÿg333333�?rNrJrDuErreur génération crise: )r!r1r%r �np�linspacerMrLrKr"r5r6)34r,rIr/Zinitial_dropZdata_crisisZdrop_periodZdrop_returnsZ35vol_periodZ
increased_volr8rrrr3�s36 ��z ScenarioManager._generate_crisisr#cCs,|��}|��D]\}}||d|��<q|S)u5Ajoute les conditions macro-économiques aux donnéesZmacro_)r1�items)r,rIr#Zdata_with_macro�	conditionr>rrrr4�sz%ScenarioManager._add_macro_conditionsr7c37�sx�z|j�|�|j|||jd�IdH}|�||�}|||d�WSty;}ztd|���iWYd}~Sd}~ww)u1Exécute un backtest sur un scénario spécifique)rIZinitial_portfolior+N)r/r?�analysisuErreur backtest scénario: )r+Zadjust_for_scenario�backtest�_analyze_scenario_resultsr5r6)r,r<r7r;r/r?rSr8rrrr=�s$�����z"ScenarioManager._backtest_scenarior?cCs<|�|d�|�|d�|�|d�|�||�|�|�d�S)u%Analyse les résultats d'un scénariorN)�max_drawdown�
recovery_timeZrisk_adjusted_returnZstrategy_adaptationZrisk_management_effectiveness)�_calculate_max_drawdown�_calculate_recovery_timeZ_calculate_risk_adjusted_returnZ_evaluate_strategy_adaptationZ_evaluate_risk_management)r,r?r/rrrrU�s38�z)ScenarioManager._analyze_scenario_resultsN)rrrrr-�pd�	DataFramerr9rrr'r&rArHr2r3r4r=rUrrrrr(s2�39�40�"	�41��42�r()�numpyrO�pandasrZ�typingrrr�dataclassesrrr�enumrr	rr(rrrr�<module>s