Team Ai
Apppublic

Deepvest/ProfilingAI

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

2|ӊg�$�@spddlZddlZddlmZmZmZddlmZm	Z	ddl3mZddlm
Z
eGdd�d��ZGdd	�d	�ZdS)4�N)�Dict�List�Optional)�datetime�	timedelta)�	dataclass)�StrategySignalc@szeZdZUdZejed<ejed<ejed<ejed<ee	e5fed<ee	e6fed<ee	e7fed<ee	e8fed	<d9S)�EnhancedBacktestResultu"Résultats détaillés du backtest�returns�	positions�trades�signals�performance_metrics�risk_metrics�alternative_contribution�signal_qualityN)�__name__�10__module__�__qualname__�__doc__�pd�Series�__annotations__�	DataFramer�str�float�rr�A/Users/sandrine/Deepvest_system/src/analysis/enhanced_backtest.pyr	s1112131415r	c@s�eZdZdZ	ddefdd�Z	ddeeded	ed16e	de17f18dd
�Zdej
deedefdd�Zdeededefdd�Zdeedeeefdedejdeef19dd�Zdedejde20fdd�ZdS) �EnhancedBacktestEngineu9Moteur de backtest avancé pour la stratégie améliorée�@B�initial_capitalcCs||_||_||_||_dS)N)�strategy�risk_manager�data_fetcherr )�self�enhanced_strategyr"r#r rrr�__init__s21zEnhancedBacktestEngine.__init__T�symbols�22start_date�end_date�use_alternative_data�returnc�s<�z�|j�|||�IdH}|�|j|�}|j}dd�|D�}|jD]a}	zC|r0|�||	�IdH}23ni}24|jj||jd|	�|25d�IdH}|�	||||j|	�}|�26||||j|	�\}}|�||	||||�Wq!ty�}
zt
d|	�d|
���WYd}
~
q!d}
~
ww|�||�WSty�}
zt
d|
����d}
~
ww)u7Exécute un backtest complet avec données alternativesNcSsi|]}|d�qS)rr)�.0�symbolrrr�27<dictcomp>1sz@EnhancedBacktestEngine.run_enhanced_backtest.<locals>.<dictcomp>)�	portfolio�market_data�alternative_datau&Erreur pendant le backtest à la date �: zErreur dans le backtest: )r#�fetch_market_data�_initialize_results�indexr � _get_historical_alternative_datar!�generate_trade_signals�loc�_execute_signalsZ_update_portfolioZ_record_results�	Exception�print�_calculate_final_metrics)r$r'r(r)r*r0�results�portfolio_value�current_positions�dater1r
r�errr�run_enhanced_backtest$sb�28�����	����z,EnhancedBacktestEngine.run_enhanced_backtest�datescCsJtj|td�tj||td�tjgd�d�tjgd�d�tjgd�d�d�S)u9Initialise les structures de données pour les résultats)r5�dtype)r5�columnsrD�r-�type�size�price�cost)rE)r-�	direction�29confidencerH)r-Zsignal_type�value)r>rrr
�alternative_signals)rrrr)r$rCr'rrrr4js�z*EnhancedBacktestEngine._initialize_resultsr@c30�s��z%|j�||�IdH}|j�||�IdH}|j�||�IdH}|||d�WStyA}ztd|���iWYd}~Sd}~ww)u0Récupère les données alternatives historiquesN)�	satellite�social_media�web_trafficu-Erreur récupération données alternatives: )r#Zfetch_historical_satellite_dataZfetch_historical_social_dataZfetch_historical_traffic_datar:r;)r$r'r@�satellite_data�social_data�traffic_datarArrrr6ts(�31�32�33����z7EnhancedBacktestEngine._get_historical_alternative_datar
r?r>r0c	Cs�g}|D]m}zN|jdkr.|�|||�}|dkr-|�|jd|||j|||jdd��n%|jdkrS|�||�}|dkrS|�|jd|||j|||jdd��Wqtyq}ztd|j�d|���WYd}~qd}~ww|S)	uExécute les signaux de trading�buyrg����MbP?rF�selluErreur exécution signal r2N)rKZ_calculate_buy_size�appendr-Z_calculate_sell_sizer:r;)	r$r
r?r>r0r�signalrHrArrrr9�sF34���35�����z'EnhancedBacktestEngine._execute_signalsr=c	36Cs�zM|d����}|djd|jd|�|�|�|�|�|�d�}|j�|�}|�	|d|d�}|�37|d|�}t||d|d|d||||d	�WStya}zt
d38|����d}~ww)u*Calcule les métriques finales du backtestr>������)�total_return�
annual_return�sharpe_ratio�max_drawdownr
rNrr)r39rrr
rrrru"Erreur calcul métriques finales: N)�40pct_change�dropna�ilocr Z_calculate_annual_return�_calculate_sharpe_ratio�_calculate_max_drawdownr"Zcalculate_risk_metricsZ#_calculate_alternative_contributionZ_evaluate_signal_qualityr	r:r;)	r$r=r0�portfolio_returnsrrrrrArrrr<�s:������z/EnhancedBacktestEngine._calculate_final_metricsN)r)T)rrrrrr&rrr�boolr	rBr�
DatetimeIndexrr4r6rrr9rr<rrrrrsL�41������42�F43��44��45���46�*r)�pandasr�numpy�np�typingrrrrr�dataclassesrZsrc.models.signalsrr	rrrrr�<module>s