CoolFace
Apppublic

kaan1233/bistelligence-api

sourceHugging Faceupdated 2mo agoView on Hugging Face
0likes
server.cpython-312.pyc263 linesDownload Raw Back to __pycache__
1�

2�IBj����8
�ddlmZddlmZddlmZmZddlmZddl	m3Z4ddlmZddl
ZddlZddlZddlmZmZddlZddlZdd	lmZmZmZdd5lmZmZmZmZddlmZmZddlZdZ ejBd�Z"	e"rPejFe"�Z$ejJe$�Z&ejNe&�ejP�Z e)d
�naejTjWd�r>ejJd�Z&ejNe&�ejP�Z e)d�ne)d�ed��Z.ee.�fdefd�Z/ddl0m1Z1m2Z2m3Z3m4Z4e4Z5ddl6m7Z7m8Z8m9Z9m:Z:ddl;Z<ddl=m>Z>m?Z?m@Z@ddlAmBZBmCZCmDZDddlEmFZFmGZGmHZHddlImJZJmKZKddlLmMZMmNZNmOZOddlPmQZQddlRmSZSmTZTmUZUddlVZVddlWZWed� �ZXeXj�egd!�dd"gd"g�#�iaZia[ga\e]�a^d$a_da`daaiZbd%�ZceXj�d&�d'��ZeeXj�d(�d)��ZfeXj�d*�d+��ZhddliZid,�ZjeXj�d-�dee/�fd.ekd/elfd0��ZmeXj�d1�d2��ZneXj�d3�d4��ZoeXj�d5�d6��ZpeXj�d7�d8eqfd9��ZreXj�d:�d8eqfd;��ZseXj�d<�d8eqfd=��ZteXj�d>�d?elfd@��ZvGdA�dBe�ZwddlAmBZBmCZCmDZDddlEmFZFmGZGmHZHddlmZddlmZmZddl
Zddl;Z<GdC�dDe�ZxGdE�dFe�ZyeXj�dG�ee/�fd/elfdH��ZzGdI�dDe�ZxeXj�dG�ee/�fdJexd/elfdK��Z{eXj�dL�ee/�fd8eqd/elfdM��Z}eXj�dN�ee/�fd/elfdO��Z~eXj�dP�ee/�fd/elfdQ��ZeXj�dR�ee/�fd/elfdS��Z�eXj�dT�ee/�fd/elfdU��Z�GdV�dFe�ZyeXj�dT�ee/�fdJeyd/elfdW��Z�eXj�dX�ee/�fd8eqd/elfdY��Z�GdZ�d[e�Z�eXj�d\�ee/�fd?e�d/elfd]��Z�eXj�d^�d�d_eqfd`��Z�eXj�da�d�d8eqd_eqfdb��Z�eXj�dc�dd��Z�eXj�de�df��Z�eXj�dg�dh��Z�Gdi�dDe�ZxGdj�dke�Z�eXj�dl�dme�fdn��Z�eXj�d^�eXj�do�dp���Z�Gdq�dBe�ZweXj�dr�d?ewfds��Z�eXj�dt�du��Z�eXj�dv�dw��Z�eXj�dv�d?elfdx��Z�dy�Z�eX�j'dzed{d|�}�d{�~�e�dk(rddl�Z�e��j,d�d�d�d|���ddlmZGd��d�e�Z�eXj�d��d�e�fd���Z�y#e,$rZ-e)de-���YdZ-[-��gdZ-[-wwxYw)��)�FastAPI)�StaticFiles)�JSONResponse�StreamingResponse)�CORSMiddleware)�jsonable_encoder)�	BaseModelN)�datetime�	timedelta)�credentials�	firestore�auth)�Request�
HTTPException�Security�Depends)�6HTTPBearer�HTTPAuthorizationCredentials�FIREBASE_CREDENTIALSuA[SİSTEM] Firebase Admin SDK (Env Var) başarıyla başlatıldı.zfirebase-adminsdk.jsonu?[SİSTEM] Firebase Admin SDK (Dosya) başarıyla başlatıldı.uI[UYARI] Firebase Credentials bulunamadı. Bulut veritabanı aktif değil.u"[HATA] Firebase başlatılamadı: F)�7auto_errorrc��|sddiSt�ddiS|j}	tj|�}|S#t$r}tdd���d}~wwxYw)N�uid�8local_useri�uGeçersiz yetkilendirme)�status_code�detail)�firebase_dbrr�verify_id_token�	Exceptionr)r�token�
decoded_token�es    �.C:\Users\kaan_\Desktop\project\xu100\server.py�get_current_userr#.sh����|�$�$����|�$�$��#�#�E�O��,�,�U�3�
�����O���4M�N�N��O�s�5�	A�
A�A)�fetch_stock_data�fetch_market_index�BIST100_TICKERS�ALL_BIST_TICKERS)�calculate_technical_score�check_market_regime�get_signal_label�analyze_news_sentiment)�train_model�predict_confidence�predict_multi_horizon)�load_portfolio�add_position�remove_position)�load_watchlist�add_to_watchlist�remove_from_watchlist)�fetch_gemini_response�fetch_elite_report)�calculate_correlation_matrix�analyze_portfolio_risk�get_balancing_suggestions)�run_backtest)�analyze_sectors�get_sector_rotation_summary�get_ticker_sectorzBISTelligence API)�title)zhttp://localhost:3000zhttp://localhost:8000zhttp://127.0.0.1:5500z%https://bistelligence-ui.onrender.com�*r?)�
allow_origins�allow_credentials�
allow_methods�
allow_headersu(Yapay zeka analizi henüz tamamlanmadı.c�F
��ddl}ddlm}td�td|j�j	d��d��td�td�t�}t
|�atdtjd	d9����tdtt��d��tt�atd
tt��d��	td�ddl
m}|5tj gd�d��dj#�j%�addd�t&j(j*�(t&j(j-d�t&_td�g}d}d}d}tD�]�}	|	tvr�
	t|	}10t1|11�\}}|jdg�D�
cgc]}
|
��}}
d}d}d}d}ddl}|j4�}|jdi�jdd�}tjdd�}|dk(rt7d|d z�}nA|d!k(rt7d"|d#z�}n,|d$k(rt9d%|d%z12�}n|d&k(rt9d'|d z13�}n|}|d(k\r�t;|14|	�}t=||15�}|d)}|d*}|d+}|d,}|dk\r�t?|d-|z16z||zz�}|jAd.t?|d/z��d0��|d1kDr|jAd2t?|��d��nG|d3krB|jAd4t?|��d��n#|jAd5�n|jAd6�tC|�}|jA|	tE|jd7d�d8�||||||d9�tE|jd:d�d8�tE|jd;d�d8�|jd<d�|jd=i�||jd>��tE|jd>d�d-�ndtG|	�d?�
�|d-z
}|d@zdk(rtd
|�dA�����|D]#}
|
dB|
dC<|
dDtHvs�|
dCxxdEz
cc<�%tK|dF�dG�H�a&tOtLddID�
cgc]}
|
dD��	c}
�a$tdJ�tLD�
cgc]}
|
dBdKk\s�|
dLdKk\s�|
��c}
ddM}|j�j	dN�}tP|k7r_|rMdOjS|D�
cgc]}
|
dD�dP|
dB�dQ|
dL�d���c}
�}tU|t�a+tdR�n
dSa+tdT�|a(ntdU�tdV�tdWd���tdX|�dY|�dZ��td[�td��	�fd\��|j��t��tL�tVd]�}tXr?tXj[d^�j]d_�jO|�td`�yy#1swY���xYw#t.$r}td|���Yd}~���d}~wwxYwcc}
w#t.$r}|d-z
}Yd}~���d}~wwxYwcc}
wcc}
wcc}
w#t.$r}tda|���Yd}~yd}~wwxYw)bNr�r17z<============================================================u-BİST Finansal API v2 - Saatlik Güncelleme (z%H:%M:%S�)u"18[1/3] Endeks verisi çekiliyor...z  Piyasa Rejimi: �regime�19Bilinmiyorz20[2/3] u hisse verisi çekiliyor...z  u hisse başarıyla indirildi.u=  Alternatif yatırım verileri (Döviz/Altın) çekiliyor...)�_yf_lock)�TRY=X�EURTRY=X�GC=F�10y)�period�Closez$[UYARI] Currency data fetch failed: u821[3/3] Şelale Filtreleme (TA -> ML -> AI) başlıyor...��reasons�22thresholds�ml_weight_impactg�?�level�neutral�bearg�������?g�������?�strong_beargffffff�?g333333�?�bull皙�����?�strong_bullg�������?�#�23confidence�
gb_confidence�
rf_confidence�model_accuracy�zHibrit Puan (TA + ML %�du ağırlık)�Fu Yapay Zeka Çok Olumlu (Güven: �(uYapay Zeka Olumsuz (Güven: u,Yapay Zeka Kararsız, Sadece TA Baz Alındıu&TA Filtresine Takıldı (Zayıf Trend)�
current_price�)r]r^r_�	stop_loss�target_price�risk_reward�24categories�rsi)
�ticker�price�score�signal�ml_conf�	ml_detailrfrgrhrirQrj�sector�25z hisse analiz edildi...rm�26sort_scorerkg@c��|d|dfS)Nrsro���xs r"�<lambda>zrun_analysis.<locals>.<lambda>�s���<��!�I�,�0O�T��key�reverse�u227[4/4] Elit Hisseler Yapay Zekaya Gönderiliyor...�2ro��%Y-%m-%dz, z (Puan: u, ML Güven: %u%  Gemini raporu başarıyla alındı.��Bugün piyasada hem Teknik Analiz hem de Yapay Zeka barajını geçebilen 'Elit' bir hisse bulunamadı. Nakitte beklemek en güvenli seçenek olabilir.u  Uygun elit hisse bulunamadı.uD  Gemini AI Raporu bugün zaten çekildi, eski rapor kullanılıyor.uM28[5/5] AI Model Portföyü İşlemleri Manuel Olarak Tetiklenmeyi Bekliyor...�29uSistem Hazır! z hisse analiz edildi. (z hata)u2http://127.0.0.1:8000 adresinden erişebilirsiniz.c����ddl}t||j�rt|�St||j�rt|�St||j�rt|�St||j�r|j�St|t�r*|j�D��cic]\}}|�|���c}}St|t�r|D�cgc]30}�|���c}S|Scc}}wcc}w)Nr)
�numpy�31isinstance�bool_�bool�integer�int�floating�float�ndarray�tolist�dict�items�list)�obj�np�k�v�
convert_numpys    �r"r�z#run_analysis.<locals>.convert_numpys������#�r�x�x�(��c��*:��#�r�z�z�*�3�s�8�O��#�r�{�{�+�E�#�J�->��#�r�z�z�*�3�:�:�<�,?��#�t�$�c�i�i�k�-Z�k�d�a��a��q�1A�.A�k�-Z�&Z��#�t�$��-L��1�m�A�.>��-L�&L��J��.[��-Ls�2C1�C7)�	timestamp�
market_regime�recommendations�elite_ai_report�system_data�ai_cacheu?  Sonuçlar başarıyla Firebase ai_cache belgesine kaydedildi.z   Firebase Cache kaydedilemedi: )/�timer32�print�now�strftimer%r)r��get�len�TARGET_TICKERSr$�33stock_data�data_fetcherrI�yf�download�ffill�bfill�
currency_data�index�tzinfo�tz_localizerr(�algo_config_manager�34get_config�min�maxr,r-r��appendr*�roundr=�previous_top_tickers�sortedr��set�last_ai_report_date�joinr6r�r�35collection�document) r�r36�idxrIr!�res�analyzed�failed�elite_stocks_strrk�dfrm�details�rrQro�gb_conf�rf_conf�	model_accr��config�base_ml_weight�regime_level�	ml_weight�model�	ml_result�signal_info�37top_elites�	today_str�38elite_text�39cache_datar�s                                @r"�run_analysisr�gs�����!�	�(�O�	�9�,�(�,�,�.�:Q�:Q�R\�:]�9^�^_�40`�a�	�(�O�	�41/�0�42�43�C�'��,�M�	��m�/�/��,�G�H�44I�J�	�H�S��(�)�)D�45E�F�!�.�1�J�	�B�s�:���<�46=�>�:�
�M�N�)�
��K�K�(E�e�T�U\�]�c�c�e�k�k�m�M�����%�%�1�"/�"5�"5�"A�"A�$�"G�M��47�E�G�48�C��H�
�F��� �.����#��L	��F�#�B�6�r�:�N�E�7�")�+�+�i��"<�=�"<�Q�q�"<�G�=��G��G��G��I�
'�3�(�3�3�5�F�#�Z�Z��b�9�=�=�>P�RV�W�N�(�,�,�W�i�@�L��v�%���^�c�%9�:�	���.���n�s�&:�;�	���'���^�c�%9�:�	���.���n�s�&:�;�	�*�	���{�#�B��/��.�u�b�9�	�#�L�1��#�O�4��#�O�4��%�&6�7�	���$���!�i�-�!8�W�y�=P� Q�R�E��N�N�%;�C�	�#�
�<N�;O�|�#\�]���|����)I�#�g�,��WX�'Y�Z� �2�����)E�c�'�l�^�ST�'U�V��N�N�#Q�R����G�H�*�5�1�K��J�J� ��w�{�{�?�A�>��B��%�"�%,�%,�&/��49#�7�;�;�{�A�#>��B� %�g�k�k�.�!�&D�a� H�&�{�{�=�!�<�%�k�k�,��;�"�:A�+�+�e�:L�:X�u�W�[�[���2�A�6�^b�+�F�3�#�
�&
��M�H��"�}��!���8�*�$;�<�=��[!�d���G�*��,���X�;�.�.�
�l�O�s�"�O��50�S�&O�Y]�^�O��_�S�b�5I�J�5I���(��5I�J�K��51�?�A�,�X�_���'�52�b�0@�Q�y�\�UW�EW�!�_�X�Y[�Z[�\�J������'�'�53�3�I��i�'�����oy�#z�oy�jk�q��{�m�8�A�g�J�<�~�VW�Xa�Vb�Uc�cd�$e�oy�#z�{�J�0��]�K�O��9�:�x�O��3�4�'��
�T�U�	�54Z�[�	�B�x�j�/��	�O�H�:�%<�V�H�F�55K�L�	�>�@�	�X�J��6�	�����*�=�9�,�_�=�.�	56�57���"�"�=�1�:�:�:�F�J�J�:�V��S�T��i�X���:�
�4�Q�C�8�9�9��:�� >��N�	��a�K�F��	�� K��Y��58${��N�6�
�0���4�5�5��6�s��X*�,9X�%A59X*�+Y�	Y�60I4Y�Y0�.
Y5�<Y5�Y5�	Y:�%A6Y?�X'�"X*�*	Y�3Y�Y�Y�	Y-�Y(�(Y-�?	Z �Z�Z z/api/dashboardc	�61�trtt�ndttD�cgc]
}|ddk\s�|��c}�ttD�cgc]
}|ddk\s�|��c}�td�}dt|tddd�Scc}wcc}w)	Nrrm�<r~)�analyzed_count�strong_signals�
total_bullishr��success�)�statusrG�statsr�)r�r�r�r�r�)r�r�s  r"�
get_dashboardr�s���.8�#�j�/�Q��/�N�/�Q�Q�w�Z�2�=M�q�/�N�O���M��A�A�g�J�"�<L�a��M�N�*�	
�E� �=�5�]l�mp�np�]q�r�r��	O��Ms�
A;62�A;63�	
B�Bz/api/macro-datac�J�	t�tjrddiSd}t�}|� |js|djdd�}dtvr)tdjstdjdnd}d	tvr)td	jstd	jdnd}d64tvr)td65jstd66jdnd}d||r|d�nd|r|d�nd|rd|d��ndd
�d�S#t$r}dt|�d�cYd}~Sd}~wwxYw)Nr��error�N/ArO�����z.2frJrrKrLr��$)�xu100�usd�eur�gold�r��data�r��message)r��emptyr%�ilocr�str)�idx_valr�r�r�r�r!s      r"�get_macro_datar� s8��6�� �M�$7�$7��g�&�&��� �"���?�3�9�9��W��*�*�2�.�s�3�G�18�M�1I�R_�`g�Rh�Rn�Rn�m�G�$�)�)�"�-�tu��4>�-�4O�Xe�fp�Xq�Xw�Xw�m�J�'�,�,�R�0�}~��17�=�1H�Q^�_e�Qf�Ql�Ql�}�V�$�)�)�"�-�rs�� � �'*�#�c���'*�#�c���*.�!�D��:��E�	�67�	68���6�!�c�!�f�5�5��6�s#�D�C$D�	D"�69
D�D"�D"�startupc��tK�ddl}|jtd��j�t	�y�w)NrT��target�daemon)�	threading�Threadr��start�schedule_hourly_update�r�s r"�
startup_eventr�;s,������I���L��6�<�<�>���s�68c�X�d�}tj|d��}|j�y)Nc�|�	ddl}ddlm}ddl}|jd�|j	d�}|j70|�}|j
�dkr$d|jcxkrdkrnn	t�ntd	|jd71��d����#t$r}td|���Yd}~�d}~wwxYw)NrrEizEurope/Istanbulrrr�u*[UYARI] Saatlik güncelleme başarısız: u[BİLGİ] Piyasa kapalı (z%H:%Mu), güncelleme atlandı.)r�r72�pytz�sleep�timezoner��weekday�hourr�rr�r�)r�r73r��tzr�r!s      r"�74update_jobz*schedule_hourly_update.<locals>.update_jobEs�����)���J�J�t�����0�1�B��(�,�,�r�"�C��{�{�}�q� �R�3�8�8�%8�b�%8�L� �N��2�3�<�<��3H�2I�Ia�b�c�!��!�L��F�q�c�J�K�K��L�s�075B�	B;�#B6�6B;Tr�)r�r�r�)r�ts  r"r�r�Ds%��d�&	���76�4�8�A��G�G�Iryz/api/elite-report�refresh�userc��|r�|jdd�}tj�jd�}tj||dd��}|d|k7r|dd�}|ddk\r77d	d78t79d�S|dxxdz
cc<|t|<d
}tddD]"}|ddk\s�||d�d|d�d|d�d�z
}�$|rt|t�andadt80d�S)Nrrr�r)�date�countrr�r�uOGünlük yenileme limitinize (3/3) ulaştınız. Lütfen yarın tekrar deneyin.)r�r��reportr`rPrrrmr�rkz: Skor z - rnr�r�r�)r�r	)	r�r81r�r��ai_refresh_limitsr�r�r6r�)rrrr��82user_limitr�r�s       r"�get_elite_reportras����h�h�u�l�+���L�L�N�+�+�J�7�	�'�*�*�3��Q�0O�P�83��f���*�"+�a�8�J��g��!�#�%�3D�P_�`�
`�	�7��q� ��!+��#���84� ��"�%�A���z�R����8��
�W�Q�w�Z�L��A�h�K�=�PR�S�S�85�&��0��]�K�O�x�O��?�;�;ryz/api/market-moversc	�d�g}g}g}tj�D]�\}}t|�dkr�	t|djd�}t|djd�}t|djd�}t|djd�}|dkDr||z86|zdznd}	|dkDr||z87|zdznd}88||zd	z}|j||	|d89��|j||90|d91��|j|||d����t|d�d
��}t|d�d
��}
t|d�d
��}d|D�cgc]
}|ddk\s�|��c}ddt|�D�cgc]
}|ddks�|��c}dd|
ddtt|
��dd|ddd�S#t$rY���wxYwcc}wcc}w)N�rOr������i�����Volumerrai@B)rk�changerl)rk�volumerlc��|dS�Nrrurvs r"rxz#get_market_movers.<locals>.<lambda>�s��q��{ryTrzc��|dSrrurvs r"rxz#get_market_movers.<locals>.<lambda>�����8�ryc��|dS)Nrrurvs r"rxz#get_market_movers.<locals>.<lambda>�rryr�rrrr�����)r��
daily_gainers�daily_losers�weekly_gainers�
weekly_losers�volume_leaders)92r�r�r�r�r�r�rr��reversedr�)�daily�weeklyrrkr��93curr_price�94prev_price�95week_price�vol�	daily_pct�96weekly_pct�vol_tl�daily_sorted�
weekly_sorted�
volume_sortedrws                r"�get_market_moversr+�s����E�
�F�
�F� �&�&�(�97����r�7�Q�;��	��r�'�{�/�/��3�4�J��r�'�{�/�/��3�4�J��r�'�{�/�/��3�4�J���8��)�)�"�-�.�C�JT�WX�.�*�z�1�Z�?�3�F�^_�I�KU�XY�>�:�98�2�j�@�C�G�_`�J��J�&�)�3�F��L�L�F�i�*�U�V��M�M�V�z�J�W�X��M�M�V�v�99�S�T�#)�,�%�%:�D�I�L��6�'<�d�K�M��6�'<�d�K�M��%1�F�\��Q�x�[�A�5E�!�\�F�s��K�$,�\�$:�P�$:�q�a��k�R�>O��$:�P�QT�RT�U�'���,��h�}�5�6�s��;�'���,�
����	��	��G��Ps*�CF�<
F(�100F(� 
F-�.F-�	F%�$F%z/api/marketc���tjdd�tjdd�tjdd�tjdd�tjdd�tt�d	�S)101NrGrH�descriptionrPrT�unknown�102volatility�trend_strength)rGr-rTr/r0�
total_tickers)r�r�r�r�ruryr"�103get_marketr2�sg�� �#�#�H�l�;�$�(�(���;��"�"�7�I�6�#�'�'��d�;�'�+�+�,<�d�C��^�,�
�ryz/api/recommendationsc��tS�N)r�ruryr"�get_recsr5�s���ryz/api/stock/{ticker}rkc
�\�|tvr%t|g�}||vr
||t|<nd|�d�d�St|}t|�\}}t||�}t	||�}t||�}|j
dg�}|ddkr|dk\rd}|jd	�n |d104dkr|dk\rd}|jd�t|�}	|j
dg�}105|106D�cgc]}|d
t|ddzd�d���}}g}
|jd�}|j�D�]\}}t|d�rt|j��n107t|�}|
j|d|vrtt|d�d�ntt|d�d�d|vrtt|d�d�ntt|d�d�d|vrtt|d�d�ntt|d�d�tt|d�d�d|vrt!|d�nd
d����idd�d|�dt#|��dt|j
dd
�d��d|�d |	�d!|j
d!i��d|�d"t|j
d"d
�d��d#t|j
d#d
�d��d$|j
d$d
��d%|j
d%��t|j
d%d
�d�nd&�d'|j
d'i��d(|d108|d)|d*|d|d+��d,|�d-|
�Scc}w).u9Tek bir hisse için detaylı analiz verileri döndürür.r�u için veri bulunamadı.r�rQr_g�������?r~�1u<Yapay Zeka Barajı aşılamadı (Model Doğruluğu Düşük)r\u7Yapay Zeka Barajı aşılamadı (Düşük Güven Skoru)�feature_importancerr`ra)�name�109importancer�OpenrerO�High�Lowr)r�open�high�low�closerr�r�rkrqrlrdrmrnrirfrgrhrjN�	fibonacci�mlr]r^)r\r]r^r_r8�
multi_horizon�
price_history)r�r$r(r,r-r.r�r�r*r��tail�iterrows�hasattrr�rr�r�r=)rk�new_datar�rmr�r�r�rDrQr��feature_imp�f�feature_imp_serializedrE�last_100r��row�date_strs                  r"�get_stock_detailrP�s����Z��#�V�H�-���X��!)�&�!1�J�v��%�V�H�<T�2U�V�V�	�F�	�B�.�r�2�N�E�7���F�#�E�"�5�"�-�I�)�%��4�M��k�k�)�R�(�G��!�"�T�)��B�;��E����U�V�	�<�	 �2�	%��B�;��E����P�Q�"�5�)�K��-�-� 4�b�9�K�Ze�f�Ze�UV�q��t�5��1����Q�;O�P�Ze��f��M��w�w�s�|�H��%�%�'���S�&-�c�6�&:�3�s�x�x�z�?��C�������4:�c�M�E�%��F��,�a�0�u�U�SV�W^�S_�M`�bc�Gd�4:�c�M�E�%��F��,�a�0�u�U�SV�W^�S_�M`�bc�Gd�27�3�,�5��s�5�z�*�A�.�E�%�PS�T[�P\�J]�_`�Da��5��W��.��2�,4��O�c�#�h�-�(��
110�	�(���)���&��	�#�F�+��	��w�{�{�?�A�6��:�	�111	���	�+�
�	�g�k�k�,��3��	�7��	�U�7�;�;�{�A�6��:��	��g�k�k�.�!�<�a�@��	�w�{�{�=�!�4��	�'�+�+�e�2D�2P�u�W�[�[���*�A�.�VZ��	�W�[�[��b�1��	
�#�L�1�&��7�&��7�'�(8�9�"8�112��*	��+�,	��-���!gs�L)z/api/fundamentals/{ticker}c��	tj|�}|j}|jdd�|jdd�|jdd�|jdd�|jdd�|jdd�|jdd�|jd	d�|jd113d�|jdd�|jdd�d
�}d|d�S#t$r}dt|�d�cYd}~Sd}~wwxYw)N�	marketCapr��114trailingPE�	forwardPE�priceToBook�
dividendYield�beta�
profitMargins�fiftyTwoWeekHigh�fiftyTwoWeekLowrq�industry)�115market_cap�trailing_pe�116forward_pe�
price_to_book�dividend_yieldrW�profit_margins�fifty_two_week_high�fifty_two_week_lowrqr[r�)r��fundamentalsr�r�)r��Ticker�infor�rr�)rkrrfr�r!s     r"�get_fundamentalsrgs���6��I�I�f����v�v���(�(�;��6��8�8�L�%�8��(�(�;��6�!�X�X�m�U�;�"�h�h���>��H�H�V�U�+�"�h�h���>�#'�8�8�,>��#F�"&�(�(�+<�e�"D��h�h�x��/�����U�3�117��$�T�:�:���6�!�c�!�f�5�5��6�s�C#C&�&	D�/
D�<D�Dz/api/news/{ticker}c	���	tj|�}|j}|sdgd�Sg}|D]�}|jdd�}t	|�}|jdd�}|dkDr%tj|�jd�}nd}|j||jd	d118�|jdd�||d����d|d�S#t$r}	d
t|	�d�cYd}	~	Sd}	~	wwxYw)Nr�)r��newsr>rP�providerPublishTimerz%Y-%m-%d %H:%MrH�link�#�	publisher)r>rkrmr��	sentimentr�r�)r�rerir�r+r119�
fromtimestampr�r�rr�)120rkr�raw_news�formatted_news�nr>rn�pub_time�dtr!s121          r"�get_newsru,s���6��I�I�f����6�6���'��4�4����A��E�E�'�2�&�E�.�u�5�I��u�u�2�A�6�H��!�|��+�+�H�5�>�>�?O�P��!���!�!�����f�c�*��U�U�;��=��&�#�
��&$�^�<�<���6�!�c�!�f�5�5��6�s#�'C122�BC123�124	C+�
C&� C+�&C+z/api/run-backtest�reqc���������K�|jddg��t|jdd���t|jdd���t|jdd���t|jd	d125���|jdd��d
�vrddlm}|dd�nd�vrddlm}|dd�nd�vrddlm}|�������fd�}t|�d��S�w)N�tickerszTHYAO.IS�
lookback_days��
buy_thresholdr~�initial_capital�j�@�max_allocation_pctrY�	algorithm�trend�BIST30r�r'��BIST100ra�TUM_HISSELERc	�6�K�ddl}ddl}ddlm}	�D�cgc]
}|tvs�|��}}|r�|j126ddt
|��d�d��dz���|j�}|jd||�}|j�sG|j127dddd��dz���|jd��d{���|j�s�G|j�}|D]}||t|<�tt������
�}	|	D]4}128|j129|130�dz���|jd	��d{����6ycc}w7��7�#t$rB}ddl}|j�|j131d132t!|�d��dz���Yd}~yd}~wwxYw�w)Nr)r$�progressu) hisse indiriliyor (1-2 dk sürebilir)...)�type�percentrkr�u(Veriler indiriliyor, lütfen bekleyin...r`g{�G�z�?r�)r�r�)�json�asyncior�r$r��dumpsr��get_running_loop�run_in_executor�doner��resultr:r�	traceback�	print_excr�)r�r�r$r�missing�loop�taskrI�mt�genr�r!r�rr|�lookbackr~�	thresholdrxs             ������r"�generatez"api_run_backtest.<locals>.generatebs��������1�	J�")�A�'�Q�Q�j�-@�q�'�G�A�� �d�j�j�*��QT�U\�Q]�P^�_H�OI�"J�K�NR�R�R�/�w�/�/�1���+�+�D�2B�G�L���)�)�+�$�$�*�*�j�Q�R|�%}�~�BF�F�F�'�'�-�-��*�*�*��)�)�+� �;�;�=��"�B�%-�b�\�J�r�N�#��z�7�H�i��Zl�nw�x�C��� �d�j�j��o��,�,�#�g�m�m�D�)�)�)���!B�+��*���	J�����!��$�*�*�g�#�a�&�A�B�T�I�I�I��	J�si�F�E�
E�E�BE�:E�;E�A*E�:E	�;E�F�E�	E�	F�8F�F�F�Fzapplication/x-ndjson)�133media_type)r�r�r�r�r'r)	rvr'r�rr|r�r~r�rxs	   @@@@@@r"�api_run_backtestr�Os�������g�g�i�*��.�G��3�7�7�?�C�0�1�H��C�G�G�O�R�0�1�I��C�G�G�$5�x�@�A�O��s�w�w�';�T�B�C������W�-�I��7��1�"�3�B�'��	�g�	�1�"�4�C�(��	�7�	"�1�"��J�J�<�X�Z�4J�K�K�s�CC"c��eZdZUeed<y��ResetPortfolioRequest�capitalN��__name__�134__module__�__qualname__r��__annotations__ruryr"r�r�����
�Nryr�c�:�eZdZUeed<eed<eed<dZeed<y��
PortfolioItemrk�amount�costN�
purchase_date�r�r�r�r�r�r�r�r�ruryr"r�r������K��K�135�K��M�3�ryr�c��eZdZUeed<y��
WatchlistItemrkN�r�r�r�r�r�ruryr"r�r������Kryr�z/api/portfolioc�z�t|jdd�t�}|D�cgc]}|dtvs�|d��}}|rt	|�}|D]}||t|<�g}d}d}|D�]}|d}	|	tvrLt|	j136s9dt|	jvr$tt|	djdd�}137n|d}138|d	|139z}|d	|dz}||z140}
|dkDrt|
|zd141zd�nd}||z
}||z
}d}td�}tD]}|d|	k(s�|d}|d}n|j|	t|	�|d	|d|142t|d�t|
d�|||d
�143���144||z145}|dkDrt||zd146zd�nd}|t|d�t|d�t|d�|d�d�Scc}w)NrrrkrrOr�rer�r�rarmrn)147rkrqr�r�rd�total_value�pnl_tl�pnl_pctrmrn)r��148total_cost�149global_pnl�global_pnl_pct)r��summary)
r/r�rr�r$r��columnsr�r�r*r�r�r=)r�pf�itemr�rIr��enriched_pfr��	total_valrr!�valr�r�r��ticker_score�
ticker_signalr�r�r�s                    r"�
get_portfolior��s��	������5�{�	C�B�+-�Q�"�$��X��j�0P�t�H�~�"�G�Q��#�G�,���B�%�b�\�J�r�N���K��J��I�����N���150�?�:�a�=�#6�#6�7�j�QR�m�F[�F[�;[��z�!�}�W�5�:�:�2�>��B�J��f��J��8�n�z�)���H�~��V��,���t���59�A�X�%��$��#�-�q�1�1���d��151��S��	���(��+�
� �A���{�a�� ��z�� !�(��
��	!�	����'��*��8�n���L�'� ��a�=��F�A�&��!�#�152�	�/�H�Z�'�J�BL�q�.�U�J��3�s�:�A�>�VW�N�� ��A�.��153�A�.��154�A�.�,�	155����aRs156�F8�F8c�:�eZdZUeed<eed<eed<dZeed<yr�r�ruryr"r�r��r�ryr�c157��t|j|j|j|j|jdd�t�ddiS�Nrrr�r�)r0rkr�r�r�r�r�r�rs  r"�	add_to_pfr��s?������d�k�k�4�9�9�d�6H�6H�$�(�(�SX�Zf�Jg�it�u��i� � ryz/api/portfolio/{ticker}c�L�t||jdd�t�ddiSr�)r1r�r�rkrs  r"�rm_pfr��s$���F�D�H�H�U�L�9�;�G��i� � ryz/api/portfolio/opportunityc�^�t|jdd�t�}|D�cgc]}|jd�s�|��}}|sddd�S	|D�cgc]}tj|dd���}}t|�}t�tjrddd�St}d	|vr*|d	jst|d	jd158�nd}d|vr*|djst|djd159�nd
}d|vr*|djst|djd160�nd}	|	|zdz}161g}|D�])}tj|d�}|jj|gd��d}
|j|
}t|d	�}t|d�}t|d�}||zdz}|d|dz}||z}||z}||z}||z}||z}||162z}|d}|tvrJt|js7dt|jvr"tt|djd163�n|d}|d|z}|j!|d|d|||||d����,d|d�Scc}wcc}w#t"$r/}ddl}|j'�ddt)|���d�cYd}~Sd}~wwxYw)Nrrr�r�u�Portf├Ây├╝n├╝zde al─▒┼ş tarihi girilmi┼ş hisse bulunamad─▒. L├╝tfen 'D├╝zenle' butonuna basarak al─▒┼ş tarihi ekleyin.r�r�uzAlternatif yat─▒r─▒m verileri hen├╝z sunucuda haz─▒r de─şil, l├╝tfen 1 dakika sonra tekrar deneyin.rJr�g@@rKgA@rLg��@g
�t}?@�nearest)�methodrr�r�rkrO)rkr��invested_tl�current_stock_value�	usd_value�	eur_value�164gold_valuer�r�uHesaplama hatas─▒: )r/r�rr165�strptimer�r�r�r�r��pd�to_datetimer��get_indexerr�r�r�rr�r�r�)rr�r��items_with_date�unique_dates�min_date�df_alt�curr_usd�curr_eur�
curr_gold_usd�curr_gold_tl�results�target_dater�rN�hist_usd�hist_eur�
hist_gold_usd�hist_gold_tlr��166usd_amount�167eur_amount�gold_amount�usd_current_tl�eur_current_tl�gold_current_tlr�current_stock_pricer�r!r�s                               r"�get_opportunity_costr��sK��	������5�{�	C�B�(*�H���d�h�h��.G�t��O�H��!�/O�P�	P�8R�Yh�i�Yh�QU��)�)�$��*?��L�Yh��i��|�$��� �M�$7�$7�%�3o�p�
p���6=��6G�PV�W^�P_�Pe�Pe�5����-�-�b�1�2�ko��9C�v�9M�V\�]g�Vh�Vn�Vn�5��168�+�0�0��4�5�tx��:@�F�:J�SY�Z`�Sa�Sg�Sg��f�V�n�1�1�"�5�6�ms�
�%��0�J�>����#�D��.�.��o�)>�?�K��,�,�*�*�K�=��*�K�A�N�C��+�+�c�"�C��S��\�*�H��S��_�-�H�!�#�f�+�.�M�)�H�4�169�B�L��x�.�4��<�7�K�$�x�/�J�$�x�/�J�%��4�K�'�(�2�N�'�(�2�N�)�L�8�O��X��A�LM�Q[�O�dn�op�dq�dw�dw�}D�HR�ST�HU�H]�H]�}]�%�170�1�
�g�(>�(C�(C�B�(G�"H�cg�hn�co��"&�x�.�3F�"F���N�N��x�.�!%�o�!6�*�':�+�+�-��
�5$�H$�W�5�5��qI��171j��h�R������!�0G��A��x�.P�Q�Q��R�sA�I*�I*�172I4� I/�.'I4�GI4�/I4�4	J,�=$J'�!J,�'J,z/api/portfolio/riskc	��ddlm}||jdd�t�}|sddd�Sd}g}|D]|}|d}|tvs�t|��tt|�dkDs�1t
t|d	jd173�}|t
|d�z}||z
}|j||d���~|dk(rdd
d�Sg}	g}174|D]-}|	j|d�|175j|d|z��/ddl	}ddl176}
i}|	D]>}t|}|d	j�j�jd�||<�@|
j|�j�}t|�dkrddd�S|j�}|j!�}|j#|177�}|j%||z�}|j'|j)|j*|j)||���}|dz|z178dz}||j'd�z}|j-�j/d�j1�}dt/|d�t/|d�||	d�S)Nr)r/rrr�uPortföy boş.r�rkrOr�r�)rkr�u"Geçerli fiyat verisi bulunamadı.r���r~zYeterli tarihsel veri yok.gffffff�?ra�rer�)r��var_95_daily_pct�var_95_monthly_pct�correlation_matrixrx)�portfolio_managerr/r�rr�r�r�r�r�r��pandas�179pct_change�dropnarF�	DataFrame�mean�cov�array�sum�sqrt�dot�T�corrr��to_dict)rr/r�r��pf_datar�rrdr��
valid_tickers�w_list�pr�r��returns_dictr��ret_df�mean_returns�180cov_matrix�weights�	pf_return�pf_std�var_95_daily�var_95_monthly�corr_matrixs                         r"�get_portfolio_riskr,sN��0�	������5�{�	C�B�
�!�.>�?�?��I��G�����N���181�?�z�!�}�8�S��A��=O�RS�=S�!�*�Q�-��"8�"=�"=�b�"A�B�M��%��X��"7�7�C����I��N�N�a��4�5�
��A�~�!�.R�S�S��M�
�F�
�����Q�x�[�)��
�
�a��h��*�+�����L�
��
��]���W�+�0�0�2�9�9�;�@�@��E��Q����R�\�\�,�
'�
.�
.�
0�F�182�6�{�R��!�.J�K�K��;�;�=�L�����J��h�h�v��G����|�g�-�.�I�
�W�W�R�V�V�G�I�I�r�v�v�j�'�'B�C�
D�F��T�M�I�-��4�L�!�B�G�G�B�K�/�N��+�+�-�%�%�a�(�0�0�2�K��!�,��2�#�N�A�6�)� ��ryz/api/portfolio/markowitzc�j�t|jdd�t�}|sddd�Stj|�}tt|�\}}|rd|d�St|�}tt|t�}|jj�}|jj�}d||||d�d�S)	Nrrr�uPortf├Ây bo┼ş.r�r�)rx�matrix)r��warnings�suggestions�correlation)
r/r�rr�r�r7r�r8r9r�r�r��values)	rr��pf_dfr�errrrrx�matrix_datas	         r"�get_markowitz_analysisrhs���	������5�{�	C�B�
�!�.D�E�E��L�L���E�3�J��F��K��183�!�c�2�2�%�k�2�H�+�J��~�N�K��!�!�(�(�*�G��$�$�+�+�-�K���"��!�184�	�ryz/api/watchlistc185�8�t|jdd�t�}g}|D�cgc]
}|tvs�|��}}|rt	|�}|D]}||t|<�|D�]5}|tvs�
t|j186r�!dt|jvs�7tt|djdd�}tt|�dkDr#tt|djdd�n|}|dk7rt||z187|zd	zd�nd}	d}188td�}tD]}|d189|k(s�|d}190|d}n|191dk(r4t|}
t|
�\}}|}192|jdt|��}|j|t|�||	|193|d
����8ycc}w)NrrrOr�rer`rrrarkrmrn)rkrqrlrrmrn)r2r�rr�r$r�r�r�r�r�r*r�r(r�r=)r�wlr�r�missing_tickersrIr��curr_p�prev_prrmrnr�r��	dyn_score�dyn_detailss                r"�
get_watchlistr#�s���	������5�{�	C�B�194�C�#%�<�"�Q���(;�q�"�O�<��#�O�4���B�%�b�\�J�r�N�����195�?�:�a�=�#6�#6�7�j�QR�m�F[�F[�;[��:�a�=��1�6�6�r�:�A�>�F�BE�j�QR�m�BT�WX�BX�U�:�a�=��1�6�6�r�:�A�>�^d�F�AG�1��U�V�f�_�f�4�c�9�1�=�RS�F��E�%�a�(�F�$���X�;�!�#��g�J�E��x�[�F��	%���z���]��)B�2�)F�&�	�;�!��$����3C�I�3N�O���J�J��+�A�.�� �� �
�
�/��
=s196�
F�Fc��eZdZUeed<yr�r�ruryr"r�r��r�ryc�`�t|j|jdd�t�ddiSr�)r3rkr�rr�s  r"�add_wlr&�s(���T�[�[�$�(�(�5�,�"?��M��i� � ryz/api/watchlist/{ticker}c�L�t||jdd�t�ddiSr�)r4r�rr�s  r"�rm_wlr(�s$���&�$�(�(�5�,�"?��M��i� � ryc��eZdZUeed<y)�
GeminiRequest�kap_textNr�ruryr"r*r*�s���Mryr*z/api/geminic	���tt|jdd�t��}ttddD�cgc]}|d|d|ddd���c}�}t197jd	d198��dt199jdd
��dt200jdd
��d�}	t
||||j�}d|iScc}w#t$r}ddt|���icYd}~Sd}~wwxYw)Nrrrrkrmrn�label)rkrmrnrGrHz (Volatilite: %r/�?u, Trend G├╝c├╝: r0rF�advice�Hata olu┼ştu: )	r�r/r�rr�r�r5r+r)rvr�pf_strr��top_recs�201regime_strr/r!s        r"�
get_ai_advicer4�s"��
������� =�{�K�
L�F��jy�z|�{|�j}�~�j}�ef�q��{�Q�w�Z�1�X�;�W^�K_�`�j}�~��H�"�%�%�h��=�>�o�m�N_�N_�`l�nq�Nr�Ms�tL�MZ�M^�M^�_o�qt�Mu�Lv�vw�x�J�5�&�v�z�8�S�\�\�R���&�!�!�����5��-�c�!�f�X�6�7�7��5�s#�B>�"C�	C&�C!�C&�!C&z
/api/backtestrc�<���fd�}t|�ddddd���S)uEAlgoritmanın geçmiş performans analizi. SSE ile progres gönderir.c3��K�ttt���D](}t|�}dt	j202|��d����*y�w)N)rzdata: z203 204)r:r�r�rr�r�)�update�encodedrs  �r"�event_generatorz%get_backtest.<locals>.event_generator�s>�����"�:�~��S�F�&�v�.�G��4�:�:�g�.�/�t�4�4�T�s�AAztext/event-streamzno-cachez205keep-alive�no)z
Cache-Control�206ConnectionzX-Accel-Buffering)r��headers)r)rr9s` r"�get_backtestr=�s.���5����&�'�&�!%�207��ryz/api/backtest/single/{ticker}c�n�|tvr%t|g�}||vr
||t|<nd|�d�d�St|}ddl}|j�}|j	|dd��|d	<|j	|dd208��|d<|j|ddd
��}|�9|js-|jdd�df|d<|jdd�df|d<n209d|d<d|d<g}|jd�j�D�]"\}}	|jt|d�rt|j��n210t|�tt|	d�d�t!j"|	d	�stt|	d	�d�ndt!j"|	d�stt|	d�d�ndt!j"|	d�stt|	d�d�ndt!j"|	d�stt|	d�d�ndd����%t%t|gdd|��}211d}|212D]}|ddk(s�|d}ng}
i}|rH|j'd�dk(r4|j'dg�}
|j'di�j'|i�}t)d|||
|d��}t+|�S) uETekil bir hisse için detaylı backtest ve grafik verisi döndürür.r�u i├ğin veri bulunamad─▒.r�rNrOr~)�length�SMA_50���SMA_200r�g@)r?�std�BBLre�BBUrzr)rrA�sma50�sma200�bbl�bbur}g�?)r|r~rr�r�r�r�r��
recent_trades�ticker_results)r�rk�prices�tradesr�)r�r$�	pandas_ta�copy�sma�bbandsr�r�rFrGr�rHr�rr�r�r��isnar:r�rr)rkrrIr��ta�df_indrQrLr�rN�bt_genr�r�rMr��encoded_datas                r"�get_single_backtestrW�s����Z��#�V�H�-���X��!)�&�!1�J�v��%�V�H�<[�2\�]�]�	�F�	�B��
�W�W�Y�F��v�v�f�W�o�b�v�9�F�8�����v�g��s��;�F�9��
�Y�Y�v�g��r�s�Y�
;�F�
��&�,�,����A�q�D�)��u�
����A�q�D�)��u�
���u�
���u�
�
�F��K�K��$�-�-�/���S��
�
�'.�s�F�';�C����213�O��S���5��W��.��2�;=�7�7�3�x�=�;Q�U�5��X��/��3�W[�=?�W�W�S��^�=T�e�E�#�i�.�1�1�5�Z^�68�g�g�c�%�j�6I�5��s�5�z�*�A�.�t�68�g�g�c�%�j�6I�5��s�5�z�*�A�.�t�
214�	�0��*�v�h��]`�lu�
v�F�
�F�����<�8�#��&�\�F����F��G�
�&�*�*�X�&�)�3����O�R�0���*�*�-�r�2�6�6�v�r�B��#������%��L���%�%ryz/api/sectorsc�h�tt�}t|�}t||d��}t	|�S)u*Sekt├Âr analizi ve rotasyon sinyalleri.)�sectors�rotation)r;r�r<rr)rYrZrVs   r"�get_sectorsr[*s:���j�)�G�*�7�3�H�#���%��L���%�%ryz/api/tickersc��tSr4r�ruryr"�get_tickersr]:s���ryz
/api/screenerc��g}tj�D�]{\}}|�t|�dkr�	t|�}|jd}t||�}|rt
||�dznd}|jdd�}|jdd�}|jdd�}	|jd	d�}215|jd216d�}|jdd�}|	|217kDrdnd
}
ddlm	}|j|jdd�d�}|j||tt|�d�tt|�d�tt|	�d�|
tt|�d�tt|�d�tt|�d�d�	���~tt!d|d���S#t$r}Yd}~���d}~wwxYw)uSHisse tarama ve filtreleme i├ğin teknik ve ML verilerini d├Ând├╝r├╝r.NrAr�rarrO�RSI�MACD�MACD_Signal�ADX�Volume_Ratio�Al�Sat��218SECTOR_MAP�.ISrP�	Di─şerre)	rkrqrArj�macd�macd_status�adx�volume_ratio�ml_scorer�r�)r�r�r��_build_featuresr�r,r-r��sector_analyzerrg�replacer�r�r�rrr)r�rkr��df_ml�last_row�model_bundlern�close_pricerjrj�macd_signalrlrmrkrgrqr!s                 r"�get_screenerrwAs����G� �&�&�(�219���
�:��R��3���#	�#�B�'�E��z�z�"�~�H�'�u�f�5�L�HT�)�,��>��D�Z[�H�#�,�,�w��2�K��,�,�u�a�(�C��<�<���*�D�"�,�,�}�a�8�K��,�,�u�a�(�C�#�<�<���:�L�"&��"4�$�%�K�
3��^�^�F�N�N�5�"�$=�{�K�F��N�N� � ��u�[�1�1�5��U�3�Z��+��e�D�k�1�-�*��U�3�Z��+� %�e�L�&9�1� =�!�%��/�1�5�220�221
�7)�R�(�I�w�)O�P�Q�Q���	���	�s�E#F-�-	G�<Gc�"�eZdZUeed<eed<y)r�rkr�N)r�r�r�r�r�r�ruryr"r�r�ts���K��Mryc��eZdZUeeed<y)�PortfolioPayloadr�N)r�r�r�r�r�r�ruryr"rzrzxs
���
��ryrzz/api/portfolio/analyze�payloadc��d}d}i}ddlm}g}|jD�](}|j}|j}|t222vr�t223|js�t224|}	t|	djd�}225t|	�dkDrt|	djd�n|226}|227|z}||z}
||z
}|||
z228z
}|j|jdd�d	�}|j|d�|z||<|j|t|229d230�|t|d231�t|232|z233|zdzd234�d��d
dtt���icSy)u�Kullan─▒c─▒n─▒n portf├Ây├╝ndeki hisselerin g├╝ncel durumunu ve sekt├Ârel da─ş─▒l─▒m─▒n─▒ analiz eder.rrfrOr�r`rrhrPrirera)rkrlr��value�daily_change_pctr/r0N)rprgr�rkr�r�r�r�r�r�r�rqr�r�r�r!)r{r��	daily_pnl�sector_distributionrgr�r�rkr�r�rdr"r}�235prev_valuerqs               r"�analyze_portfolior�{s\���K��I���*��G��
�
�����������Z��236�6�(:�(@�(@��F�#�B�!�"�W�+�"2�"2�2�"6�7�M�8;�B��!���r�'�{�/�/��3�4��J�!�F�*�E�#�f�,�J��5� �K��%�*�,�-�I��^�^�F�N�N�5�"�$=�{�K�F�*=�*A�*A�&�!�*L�u�*T���'��N�N� ��}�a�0� ��u�a��$)�M�J�,F�*�+T�X[�*[�]^�$_��
��-�c�!�f�X�6�7�7�3ryz/api/ai-portfolioc��	tjtt�}d|d�S#t$r}dt|�d�cYd}~Sd}~wwxYw�Nr�r�r�r�)�model_portfolio_bot�get_bot_dashboardr�rrr��r�r!s  r"�get_ai_portfolior��sC��2376�"�4�4�_�k�R��#�T�2�2���6�!�c�!�f�5�5��6���"%�	A�
A�A�Ac��eZdZUeed<yr�r�ruryr"r�r��r�ryz/api/ai-portfolio/resetc��	tj|jt�}dd|j�d�d�S#t$r}dt|�d�cYd}~Sd}~wwxYw)Nr�u	Portföy u TL ile sıfırlandı.r�r�)r��reset_bot_portfolior�rrr�)rvr�r!s   r"�reset_ai_portfolior��sU��6�"�6�6�s�{�{�K�P��#�)�C�K�K�=�H^�0_�`�`���6�!�c�!�f�5�5��6�s�69�	A�
A�A�Az/api/ai-portfolio/runc��	tjtt�ddd�S#t$r}dt|�d�cYd}~Sd}~wwxYw)Nr�u'Bot işlemleri başarıyla tamamlandı.r�r�)r��run_trading_botr�rrr�)r!s r"�run_ai_portfolio_botr��sB��6��+�+�O�[�I�#�0Y�Z�Z���6�!�c�!�f�5�5��6�r�z/api/algo-configc��	tjt�}d|d�S#t$r}dt	|�d�cYd}~Sd}~wwxYwr�)r�r�rrr�r�s  r"�get_algo_configr��sA��6�"�-�-�k�:��#�T�2�2���6�!�c�!�f�5�5��6�s� �	A�
<�A�Ac���	tjt|d�r|j�n|t�tjt��ddd�S#t$r}dt|�d�cYd}~Sd}~wwxYw)Nr�r�uAAlgoritma ayarları kaydedildi. Analiz yeniden başlatılıyor...r�r�)238r��save_configrHr�rr��create_task�trigger_reanalysisrr�)rvr!s  r"�save_algo_configr��sg��6��'�'�g�c�6�6J����239�PS�U`�a����.�0�1�#�0s�t�t���6�!�c�!�f�5�5��6�s�AA�	A;�#
A6�0A;�6A;c��K�td�tjd��d{���ddl}|jt240d��j
�y7�/�w)NuX241[SİSTEM] Kullanıcı algoritma ayarlarını değiştirdi, analiz baştan başlıyor...r`rTr�)r�r�r�r�r�r�r�r�s r"r�r��sD����	�242e�f�243�-�-��244�����I���L��6�<�<�>��s�$A�A�0A�/�frontendT)�	directory�html)r9�__main__z245server:appz	127.0.0.1i@)�host�port�reloadc�:�eZdZUeed<eed<eed<dZeed<y)�	ClientLogr�r��msgrP�sourceN)r�r�r�r�r�r�ruryr"r�r��s��246
�I�247
�I�	�H��F�C�ryr�z/api/client-log�logc248��K�td|j�d|j�d|j�d|j���ddiS�w)Nz249[FRONTEND ERROR] z | r��ok)r�r�r�r�r�)r�s r"�receive_client_logr��sC����	�����z��S�X�X�J�c�#�'�'��#�c�j�j�\�250R�S��d���s�AA)r�)��fastapir�fastapi.staticfilesr�fastapi.responsesrr�fastapi.middleware.corsr�fastapi.encodersr�pydanticr	r�r�r�r�r251r�os�firebase_adminrr
rrrrr�fastapi.securityrr�	functoolsr�getenv�firebase_creds_env�loads�	cred_dict�Certificate�cred�initialize_app�clientr��path�existsrr!�securityr#r�r$r%r&r'r��analyzerr(r)r*r+�yfinancer��ml_modelr,r-r.r�r/r0r1�watchlist_managerr2r3r4�gemini_advisorr5r6�	markowitzr7r8r9�252backtesterr:rpr;r<r=r�r��app�add_middlewarer�r�r�r�r�r�r�r�r253r�r�r�r��on_eventr�r�r�r�r�rr+r2r5r�rPrgru�postr�r�r�r�r�r��deleter�r�rrr#r&r(r*r4r=rWr[r]rwrzr�r�r�r�r�r�r��mountr��uvicorn�runr�r�ruryr"�<module>r�s���+�=�2�-�����(�	��7�7�=�=�E�����R�Y�Y�5�6��4���D�J�J�1�2�	�&�{�&�&�y�1��%��%�%�d�+�&�i�&�&�(��
�Q�R�	�����0�	1�&�{�&�&�'?�@��%��%�%�d�+�&�i�&�&�(��
�O�P�
�Y�Z���'��AI�(�AS�O�">�O� a�`�!��m�m��K�K�K�K�U�U�D�e�e�#�[�[���
�'�(���������%��%����
�
�254����u��<�����
���m6�^���	��s��s����	��6��6�4���i�������:���	��%*��AQ�9R�<�d�<�$�<��<�@���	��&��&�X�����������	� ��!�����	��E�S�E� �E�T���	%�&�6�S�6�'�6�4���	��6�S�6��6�D���255��0L��0L��0L�d�I��L�K�U�U��(����I���I�����	��&�'7�8�<��<��<�|�I�����256��07�8H�0I�!�M�!��!��!����%�&�$+�,<�$=�!�#�!�T�!�'�!����	%�&�&-�.>�&?�>R�t�>R�'�>R�L���	��$+�,<�$=�9�T�9� �9�v���	#�$�(/�0@�(A����%��:���	��&�'7�8�)��)��)�V�I�����257��-4�5E�-F�!��!�d�!��!����%�&�$+�,<�$=�!�#�!�T�!�'�!��I�����-��3:�;K�3L�
5�}�
5�D�
5��
5�&������C���� ���	(�)�8&��8&��8&�*�8&�|�����	&��	&��������������-R��-R�d�I���y�����258"�#�#8�/�#8�$�#8�R��������	��6���6��I�����259#�$�6�1�6�%�6����260!�"�6�#�6����	��6��6����261��6�$�6��6�?��	�	�#�{�Z�d�;�*�	�M��z����G�K�K��;�T�$�G���	�����262���)�����K&�4�	�.�q�c�2632�3�3��4�s�:B3Y>�>Z�Z�Z