Team Ai
Apppublic

Deepvest/ProfilingAI

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

2d��g�!�@s�ddlZddlZddlmZmZmZddlm	Z	ddl3Z4ddlmZ
ddlZddlmZddlmZmZddlmZe	Gdd�d��ZGd	d5�d6�ZGdd�d�ZdS)
�N)�Dict�List�Tuple)�	dataclass)�ProcessPoolExecutor)�datetime�	timedelta)�EnhancedBacktestResultc@sLeZdZUdZeeefed<eeefed<ej	ed<eeefed<dS)�OptimizationResultu-Résultats de l'optimisation de la stratégie�best_params�performance_metrics�optimization_path�parameter_importanceN)7�__name__�8__module__�__qualname__�__doc__r�str�float�__annotations__�pd�	DataFrame�rr�B/Users/sandrine/Deepvest_system/src/analysis/strategy_optimizer.pyr9s1011r12c13@s�eZdZdZddefdd�Zdeedej	dej	d	e14fd15d�Zdej
deedej	dej	d	ef16d
d�Zded	efdd�Zd	e17fdd�Zdd�ZdS)�StrategyOptimizeru)Optimiseur de stratégie utilisant Optuna�d�n_trialscCs||_||_d|_dS�N)�backtest_enginer�study)�self�enhanced_backtest_enginerrrr�__init__s18zStrategyOptimizer.__init__�symbols�19start_date�end_date�returnc�sT�tjddtjjdd�d��_�jj����fdd��jdd	����}���|S)20u)Optimise les paramètres de la stratégie�maximize�strategy_optimization�*)�seed)�	direction�21study_name�samplercs��|����Sr)�22_objective)�trial�r%r r$r#rr�<lambda>/sz5StrategyOptimizer.optimize_strategy.<locals>.<lambda>T)r�show_progress_bar)	�optuna�create_study�samplers�23TPESamplerr�optimizer�_analyze_optimization_results�_plot_optimization_results)r r#r$r%�optimization_resultsrr0r�optimize_strategy s���z#StrategyOptimizer.optimize_strategyr/c�s��|�ddd�|�ddd�|�ddd�|�dd	d24�|�ddd
�|�ddd�|�ddd�d�}|jj||||d�IdH}|�|�}|S)z%Fonction objectif pour l'optimisation�technical_weightg�������?g333333�?�alternative_weightg�������?皙�����?�
social_weight�signal_threshold�333333�?gffffff�?�position_size_factorg�?g@�	stop_lossg{�G�z�?�take_profitg���Q��?g333333�?)r<r=r?r@rBrCrD)r#r$r%�strategy_paramsN)�
suggest_floatr�run_enhanced_backtest�_calculate_optimization_score)r r/r#r$r%�params�results�optimization_scorerrrr.<s"�	��25zStrategyOptimizer._objectiverJcCsJ|jd}t|jd�}|jd|}d|d|ddd|}|S)z$Calcule le score pour l'optimisation�sharpe_ratio�max_drawdown�
annual_returnr>rA�)r�abs)r rJrLrM�return_risk_ratio�scorerrrrH[s26��z/StrategyOptimizer._calculate_optimization_scorecCsT|jj}tjdd�|jjD�dd�|jjD�d�}tj�|j�}t||jj	||d�S)u(Analyse des résultats de l'optimisationcS�g|]}|j�qSr�rI��.0�trrr�27<listcomp>p�zCStrategyOptimizer._analyze_optimization_results.<locals>.<listcomp>cSrSr)�numberrUrrrrXqrY)�index)rrr
r)28rrrr�trialsr3�29importance�get_param_importancesr30�31best_value)r rr
rrrrr8is��z/StrategyOptimizer._analyze_optimization_resultscCs�tj�d�tjdd�}t�d�tjj�|j	�t�32d�t�d�tjj�|j	�t�33d�t�d�tjj�|j	�t�34d	�t�d35�t
jdd�|j	jD�|j	j��d
�}tj|d�tjdd�t�36d�t��t��dS)u+Visualisation des résultats d'optimisation�seaborn)��37��figsize��zProgression de l'optimisation��uImportance des paramètres��uCorrélations des paramètres��cSrSrrTrUrrrrX�rYz@StrategyOptimizer._plot_optimization_results.<locals>.<listcomp>)�columns��data�-��rotationuDistribution des paramètresN)�plt�style�use�figure�subplotr3�
visualization�38matplotlib�plot_optimization_historyr�title�plot_param_importances�plot_parallel_coordinaterrr\r�keys�sns�boxplot�xticks�tight_layout�show)r �figrkrrrr9~s*3940414243444546�47z,StrategyOptimizer._plot_optimization_resultsN)r)rrrr�intr"rrr�	Timestampr48r;r3�Trialrr.rrHr8r9rrrrrs4���49�����50�rc@sTeZdZdZedefdd��Zedejdejfdd��Z	ededej51fd	d52��ZdS)�BacktestVisualizeru4Visualisation détaillée des résultats de backtestrJcCs�tj�d�tjdd�}t�d�d|j��}t�|j|j	�t�53d�t�d�t�|j�}tj
|j|j	dd	d54d�t�55d�t�d
�tj|jdd�t�56d�t�d�tj|jjddd�t�57d�t�d�t�|�}tj|d�t�58d�t�d�t�|j�}tj|j|j	d�tjdd�t�59d�t�d�t�|j�}tj|j|j	d�tjdd�t�60d�t��t��dS) u/Création d'un dashboard de performance completr`)��rciKrOzPerformance du portefeuilleiLr�redrA)�color�alpha�	DrawdownsiMT)�kdezDistribution des rendementsiN�RdYlGn)�cmap�centeruÉvolution des positionsiOrjzPerformance par type de signaliP)�x�yrlrmuMétriques de risqueiQu&Contribution des données alternativesN)rorprqrrrs�returns�cumprod�plotr[�valuesrwr��_calculate_drawdowns�fill_betweenr{�histplot�heatmap�	positions�T�_calculate_signal_returns�barplotr�Series�risk_metricsr}�alternative_contributionr~r)rJr��cumulative_returns�	drawdowns�signal_returnsr��alt_contributionrrr�create_performance_dashboard�s@616263646566676869707172737475z/BacktestVisualizer.create_performance_dashboardr�r&cCs(d|��}|����}||d}|S)zCalcul des drawdownsrO)r��	expanding�max)r��76cumulative�running_maxr�rrrr��sz'BacktestVisualizer._calculate_drawdownscCs@t��}|jd��D]}|jd|k}|j|��||<q|S)z(Calcul des rendements par type de signalr+)rr�signals�uniquer��mean)rJr��signal_type�maskrrrr��s77z,BacktestVisualizer._calculate_signal_returnsN)rrrr�staticmethodr	r�rr�r�rr�rrrrr��s2r�)�numpy�np�pandasr�typingrrr�dataclassesrr3�matplotlib.pyplot�pyplotror`r{�concurrent.futuresrrr�src.models.backtest_resultsr	r78rr�rrrr�<module>s79