CoolFace
Apppublic

kaan1233/bistelligence-api

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

2G�Ej/����SSKJr SSKJr SSKJrJr SSKJr SSK	J3r4 SSKJr SSK
rSSKrSSKrSSKJrJr SSKrSSKrSS	KJrJrJr SS5KJrJrJrJr SSKJrJr SSKrSSK r SSK!r"Sr#S
r$\%"\$S-S5r&\&ROS5 SSS5 \RP"\$S-5 \$r)Sr1Sr2Sr3\Rh"S5r5\5(aP\Rl"\55r7\Rp"\75r9\Rt"\95 \Rv"5r3\0"S5 Og\RZRyS5(a>\Rp"S5r9\Rt"\95 \Rv"5r3\0"S5 O	\0"S5 \"SS9r?\"\?54S\4Sjjr@SSKAJBrBJCrCJDrDJErEJFrF \FrGSSKHJIrIJJrJJKrK SSKLrMSS KNJOrOJPrPJQrQ SS!KRJSrSJTrTJUrU SS"KVJWrWJXrXJYrY SS#KZJ[r[J\r\ SS$K]J^r^J_r_J`r` SS%KaJbrb SS&KcJdrdJereJfrf SSKgrgSSKhrh\"S'S(9ri\iR�\/S)QSS*/S*/S+9 0qk0ql/qm\n"5qoS,qpSqqSqr0rs0rtS-SS.S/.quS0rvS1rw\iR�S25S35ry\iR�S45S55rz\iR�S65S75r{\iR�S85S95r}SSK~r~S:r\iR�S;5S\"\@54S<\�S=\�4S>jj5r�\iR�S?5S@5r�\iR�SA5SB5r�\iR�SC5SD5r�\iR�SE5SF\�4SGj5r�\iR�SH5SF\�4SIj5r�\iR�SJ5SF\�4SKj5r�\iR�SL5SM\4SNj5r�\iR�SO5SF\�SM\4SPj5r�\iGRSQ5SR\�4SSj5r�"STSU\5r�\iR�SV5\"\@54S=\�4SWjj5r�"SXSY\5r�\iGRSV5\"\@54SZ\�S=\�4S[jj5r�\iGR%S\5\"\@54SF\�S=\�4S]jj5r�\iR�S^5\"\@54S=\�4S_jj5r�\iR�S`5\"\@54S=\�4Sajj5r�\iR�Sb5\"\@54S=\�4Scjj5r�\iR�Sd5\"\@54S=\�4Sejj5r�\iGRSd5\"\@54SZ\�S=\�4Sfjj5r�\iGR%Sg5\"\@54SF\�S=\�4Shjj5r�"SiSj\5r�\iGRSk5\"\@54SR\�S=\�4Sljj5r�\iR�Sm5S�Sn\�4Sojj5r�\iR�Sp5S�SF\�Sn\�4Sqjj5r�\iR�Sr5Ss5r�\iR�St5Su5r�\iR�Sv5Sw5r�"SxSy\5r�"SzS{\5r�\iGRS|5S}\�4S~j5r�\iR�Sm5\iR�S5S�55r�"S�S�\5r�\iGRS�5SR\�4S�j5r�\iGRS�5S�5r�\iR�S�5S�5r�\iGRS�5SR\�4S�j5r�S�r�\iGRWS�\"S�S�S�9S�S�9 \�S�:XaSSK�r�\�GR\"S�S�S�S�S�9 SSKJr "S�S�\5r�\iGRS�5S�\�4S�j5r�g!,(df   GN}=f!\*\+4a> SSK,r,\RZR]\,R^"5S
5r)\0"S\)35 GN�f=f!\=ar>\0"S\>35 Sr>C>GN�Sr>C>ff=f)��)�FastAPI)�StaticFiles)�JSONResponse�StreamingResponse)�CORSMiddleware)�jsonable_encoder)�	BaseModelN)�datetime�	timedelta)�credentials�	firestore�auth)�Request�
HTTPException�Security�Depends)�6HTTPBearer�HTTPAuthorizationCredentialsc��[U[5(a/UR5VVs0sHupU[U5_M snn$[U[5(aUVs/sHn[U5PM sn$[U[75(aU[R"U5(d6[R"U5(d[R"U5(agU$[U[R5(a7[R"U5(d[R"U5(agU$s snnfs snf�N)�8isinstance�dict�items�9clean_nans�list�float�math�isnan�np�isinf�floating)�obj�k�v�items    �	server.pyrrs����#�t���-0�Y�Y�[�9�[�T�Q��:�a�=� �[�9�9�	�C��	�	�-0�1�S�T�10�4� �S�1�1�	�C��	�	��:�:�c�?�?�b�h�h�s�m�m�r�x�x��}�}��0=�11�J�12�C����	%�	%�
�8�8�C�=�=�B�H�H�S�M�M���J��:��1s�D8�D>zconsecutive_recs.jsonz.test�w�testu7[UYARI] consecutive_recs.json yazılamıyor, fallback: c���[RR[5(a0[	[SSS9n[13R"U5sSSS5 $0$!,(df   0$=f![a 0s$f=f)N�r�utf-8��encoding)�os�path�exists�CONSECUTIVE_RECS_FILE�open�json�load�	Exception)�fs r&�load_consecutive_recsr71sk��	�w�w�~�~�+�,�,�	��+�S�7�C�q��y�y��|�D�C��I�	D�C��I���	��I�	�s.�A-�A�	A-�14A*�%A-�*A-�-A<�;A<c���[[SSS9n[R"X5 SSS5 g!,(df   g=f![[154an[
SU35 SnAgSnAff=f)Nr'r+r,z([UYARI] consecutive_recs kaydedilemedi: )r2r1r3�dump�IOError�PermissionError�print)�datar6�es   r&�save_consecutive_recsr?:sV��>�
�'��w�
?�1��I�I�d��@�
?�
?���_�%�>�
�8���<�=�=��>�s.�A�1�A�16?�A�A�A*�A%�%A*�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)�17auto_errorrc��U(dSS0$[cSS0$URn[R"U5nU$![an[SSS9eSnAff=f)N�uid�18local_useri�uGeçersiz yetkilendirme)�status_code�detail)�firebase_dbrr�verify_id_tokenr5r)r�token�
decoded_tokenr>s    r&�get_current_userrK[sh����|�$�$����|�$�$��#�#�E�O��,�,�U�3�
�����O���4M�N�N��O�s�<�19A�20A�A)�fetch_stock_data�fetch_market_index�fetch_latest_prices�BIST100_TICKERS�ALL_BIST_TICKERS)�calculate_technical_score�check_market_regime�get_signal_label)�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�*rg)�
allow_origins�allow_credentials�
allow_methods�
allow_headersu(Yapay zeka analizi henüz tamamlanmadı.�loadinguSunucu başlatılıyor...��status�progress�messagec��SSKnSSKJn [5 [RS5S:wa%[RSSSS.5 [
S	5 gg![a,nSSKnUR5 [
SU35 SnANpSnAff=f![RS5S:wa%[RSSSS.5 [
S	5 ff=f)21Nr�r22u(23[KRİTİK HATA] run_analysis çöktü: rn�ready�duSistem Hazır (kısmi veri ile)rmuB[UYARI] Analiz kısmen tamamlandı, sistem kısmi veri ile hazır.)24�timer25�_run_analysis_innerr5�	traceback�	print_excr<�
system_status�get�update)rur26r>rws    r&�run_analysisr|�s����!�27X������X�&�'�1�� � �G��Qr�!s�t��V�W�2��
�?������
�9�!��=�>�>��?�����X�&�'�1�� � �G��Qr�!s�t��V�W�2�s*�28A�29B�"B�B�B�B�ACc��^)�SSKnSSKJn [S5 [SUR"5R	S5S35 [S5 [S5 [30R
SS	S31S.5 [5n[U5q	[S[RS
S535 [S[[5S35 [32R
S[[5S3S.5 [[5q[S[[5S35 [S5 SSKJn U ["R$"/SQSS9SR'5R)5qSSS5 [*R,R.b([*R,R1S5[*lSSKJn [S5 [33R
SSS.5 U"[5n[S 5 [34R
S!S"S.5 /nSnSn	S#n35[GH�nU[;aM[Un[7U5up�URS$/5Vs/sHo�PM nnURU05nURS%5nURS&5nSnUb�Ub�US:�a"US:aUS-
nUR9S'US(S35 O!US:�aUS)-nUR9S*US(S35 US+:�aUS-
nUR9S,US--S(S35 OUS:aUS-nUR9S.5 [;S[=S-U
U-55n
SnSnSnSnSSKnUR@"5nURS/05RS0S15n[RS2S35nUS4:Xa[=S5US+-5nODUS6:Xa[=S7US8-5nO.US9:Xa[;S:US:-365nOUS;:Xa[;S<US+-375nOUnU
S!:�a�[CX�5n[EUU5nUS=nUS>nUS?nUS@nUS1:�a�[GU
SAU-38-UU--5n
UR9SB[GUS--5SC35 USD:�aUR9SE[GU5S35 OHUSF:aUR9SG[GU5S35 O#UR9SH5 OUR9SI5 [IU
5n UR9U[KURSJS5SK5U
U UUUUSL.[KURSMS5SK5[KURSNS5SK5URSOS5URSP05UURSQ5b[KURSQS5SA5OS[MU5SR.
5 USA-
nUS-S:Xa:[SUSS35 S![GU[[5-ST-5-[39SU'GM�GM� UH'nUSVUSW'USX[N;dMUSW==SY-
ss'M) [QUSZS[S\9q)[U[RSS)Vs/sHo�SXPM	 sn5q'[W5n!UR"5R	S]5n"[RSS)Vs/sHo�SXPM	 n#n[RH�nUSXn$U$U#;a4U$U!;a%U!U$S^U":waU!U$S_==SA-
ss'U"U!U$S^'O#SAU"S`.U!U$'OU$U!;aU!U$S^U":waSU!U$S_'U!RU$05RS_S5USa'M� [YU!5 [Sb5 [RVs/sHo�SVST:�dM
UScST:�dMUPM snSS	n%UR"5R	S]5n&[ZU&:wafU%(aOSdR]U%Vs/sHo�SXSeUSVSfUScS3PM sn5n'[_U'[5q0[Sg5 O
Shq0[Si5 U&q-O[Sj5 [Sk5 [SlS35 [SmUSnU	So35 [40R
SpS-SqS.5 [Sr5 [S5 U)4Ssjm)UR5T)"[5T)"[R5[`St.n([b(a?[bReSu5RgSv5RUU(5 [Sw5 gg!,(df   GNr=f![2an[SU35 SnAGNPSnAff=fs snf![2anU	SA-
n	SnAGM
SnAff=fs snfs snfs snfs snf![2an[SxU35 SnAgSnAff=f)yNrrrz<============================================================u-BİST Finansal API v2 - Saatlik Güncelleme (z%H:%M:%S�)u"41[1/3] Endeks verisi çekiliyor...rl�uEndeks verisi çekiliyor...rmz  Piyasa Rejimi: �regime�42Bilinmiyorz43[2/3] u hisse verisi çekiliyor...�44)rorpz  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: )�fetch_fundamentalsu*45[3/4] Temel analiz verileri çekiliyor...�u#Temel analiz verileri çekiliyor...uA46[4/4] Şelale Filtreleme (TA -> Funda -> ML -> AI) başlıyor...�#u:Şelale filtreleme ve Yapay Zeka analizleri yapılıyor...��reasons�47trailingPE�returnOnEquityuUcuz Çarpan (F/K: z.1f�uPahalı Çarpan (F/K: g�������?u(Yüksek Özsermaye Karlılığı (ROE: %rtu Negatif Özsermaye Karlılığı�48thresholds�ml_weight_impact��?�level�neutral�bearg�������?�strong_beargffffff�?g333333�?�bull皙�����?�strong_bullg�������?�49confidence�
gb_confidence�
rf_confidence�model_accuracy�zHibrit Puan (TA + ML %u 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�50categories�rsi)
�ticker�price�score�signal�ml_conf�	ml_detailr�r�r�r�r�r��sectorz hisse analiz edildi...�2ror��51sort_scorer�g@c��USUS4$)Nr�r����xs r&�<lambda>�%_run_analysis_inner.<locals>.<lambda>?s���<��!�I�,�0O�T��key�reverse�%Y-%m-%d�	last_date�count)r�r��consecutive_daysu252[4/4] Elit Hisseler Yapay Zekaya Gönderiliyor...r�z, 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.uM53[5/5] AI Model Portföyü İşlemleri Manuel Olarak Tetiklenmeyi Bekliyor...�54uSistem Hazır! z hisse analiz edildi. (z hata)rsuSistem Hazır!u2http://127.0.0.1:8000 adresinden erişebilirsiniz.c�6>�SSKn[XR5(a[U5$[XR5(a[U5$[XR5(a[U5$[XR5(aUR5$[U[5(a,UR5VVs0sHup#UT"U5_M snn$[U[5(aUVs/sHnT"U5PM
 sn$U$s snnfs snf)Nr)
�numpyr�bool_�bool�integer�intr!r�ndarray�tolistrrr)r"rr#r$�
convert_numpys    �r&r��*_run_analysis_inner.<locals>.convert_numpyys������#�x�x�(�(��c��*:��#�z�z�*�*�3�s�8�O��#�{�{�+�+�E�#�J�->��#�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�D�9D)�	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: )4rur55r<�now�strftimeryr{rMrRr�rz�len�TARGET_TICKERSrL�56stock_data�data_fetcherr��yf�download�ffill�bfill�
currency_data�index�tzinfo�tz_localizer5r�rQ�append�max�min�algo_config_manager�57get_configrTrUr�rS�roundre�previous_top_tickers�sortedr��setr7r?�last_ai_report_date�joinr^r�rG�58collection�document)*rur59�idxr�r>r��fundamental_data�res�analyzed�failed�elite_stocks_strr��dfr��detailsr*r��	fund_data�pe�roe�fund_score_adjr��gb_conf�rf_conf�	model_accr��config�base_ml_weight�regime_level�	ml_weight�model�	ml_result�signal_info�consec_data�current_date_str�top_tickers�tck�60top_elites�	today_str�61elite_text�62cache_datar�s*                                         @r&rvrv�sX	����!�	�(�O�	�9�(�,�,�.�:Q�:Q�R\�:]�9^�^_�63`�a�	�(�O�	�64/�0����I�1�If�g�h�65�66�C�'��,�M�	��m�/�/��,�G�H�67I�J�	�H�S��(�)�)D�68E�F����b��N�8K�7L�Lg�5h�i�j�!�.�1�J�	�B�s�:���<�69=�>�:�
�M�N�)�
��K�K�(E�e�T�U\�]�c�c�e�k�k�m�M�����%�%�1�"/�"5�"5�"A�"A�$�"G�M��0�	�707�8����b�5Z�[�\�)�.�9��	�N�P����b�5q�r�s�71�C��H�
�F��� �.����#��c	��F�#�B�6�r�:�N�E�")�+�+�i��"<�=�"<�Q�q�"<�G�=�)�,�,�V�R�8�I����|�,�B��-�-� 0�1�C��N��~�#�/���6�b�2�g�"�b�(�N��N�N�%8��C���#B�C��"�W�"�b�(�N��N�N�%;�B�s�8�1�#E�F���:�"�b�(�N��N�N�%M�c�RU�g�VY�]�Z[�#\�]��1�W�"�b�(�N��N�N�%E�G���3�s�E�N�$:�;�<�E��G��G��G��I�
'�(�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��%�"�%,�%,�&/��72#�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�*�$;�<�=�,.��h��^�AT�6T�XZ�5Z�1[�,[�
�j�)�"�E!�R���G�*��,���X�;�.�.�
�l�O�s�"�O��73�S�&O�Y]�^�O��_�S�b�5I�J�5I��(��5I�J�K��74(�)�K��|�|�~�.�.�z�:��(7���(<�=�(<�1�X�;�(<�K�=�
����k���+���k�!��s�#�K�0�4D�D���$�W�-��2�-�4D�K��$�[�1��-.�=M�#N��C� ��k�!�k�#�&6�{�&C�GW�&W�,-��C� ��)� +����R� 8� <� <�W�a� H��75����+�&�76�?�A�,�X�_��'�77�b�0@�!�Q�y�\�UW�EW�!�_�X�Y[�Z[�\�J�����'�'�78�3�I��i�'�����oy�#z�oy�jk��{�m�8�A�g�J�<�~�VW�Xa�Vb�Uc�cd�$e�oy�#z�{�J�0��]�K�O��9�:�x�O��3�4�'��
�T�U�	�79Z�[�	�B�x�j�/��	�O�H�:�%<�V�H�F�80K�L����G��IY�Z�[�	�>�@�	�X�J��6�	�����*�=�9�,�_�=�.�	81�82��;��"�"�=�1�:�:�:�F�J�J�:�V��S�T��W�X���:�
�4�Q�C�8�9�9��:��*>��~�	��a�K�F��	�� K��>��,Y��83${��P�6�
�0���4�5�5��6�s��c!�-7c�$Ac!�&*d�d�Nd�0d*�:d/�3d4�d4�d4�d9�A<d>�84c�c!�!85d�+c?�?d�d�86d'�d"�"d'�>87e �e�e z/api/system-statusc��[$r)ryr�r�r&�get_system_statusr
�s���r�z/api/dashboardc	�$�[(a[[5OS[[Vs/sHoSS:�dM
UPM sn5[[Vs/sHoSS:�dM
UPM sn5[S.nS[U[SSS.$s snfs snf)	Nrr��<r�)�analyzed_count�strong_signals�
total_bullishr��success�)rnr��statsr�)r�r�r�r�r�)r*rs  r&�
get_dashboardr�s��.8�Z�#�j�/�Q��/�N�/�Q�w�Z�2�=M�q�/�N�O���M��A�g�J�"�<L�a��M�N�*�	
�E� �=�5�]l�mp�np�]q�r�r��	O��Ms�B88�B89�B
�"B
z/api/macro-datac��[b[R(aSS0$Sn[5nUb%UR(dUSRSSnS[;a.[SR(d[SRSOSnS	[;a.[S	R(d[S	RSOSnS90[;a.[S91R(d[S92RSOSnSUU(aUSOSU(aUSOSU(aSUS3OSS
.S.$![anS[U5S.sSnA$SnAff=f)Nrn�error�N/Ar������z.2fr�rr�r�r�$)�xu100�usd�eur�gold�rnr=�rnrp)r��emptyrM�ilocr5�str)�idx_valr�rrrr>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�	�93�	94���6�!�c�!�f�5�5��6�s#�D1�DD1�195E�;
E�E�E�startupc��n# �SSKnUR"[SS9R5 [	5 g7f)NrT��target�daemon)�	threading�Threadr|�start�schedule_hourly_update�r,s r&�
startup_eventr1�s)����
���L��6�<�<�>���s�35c�T�Sn[R"USS9nUR5 g)Nc��SSKnSSKJn SSKnURS5 UR	S5nUR96"U5nUR
5S:a&SURs=::aS:aO O[5 O[S	URS975S35 M�![an[SU35 SnANSnAff=f)NrrrizEurope/Istanbulrr��u*[UYARI] Saatlik güncelleme başarısız: u[BİLGİ] Piyasa kapalı (z%H:%Mu), güncelleme atlandı.)rur98�pytz�sleep�timezoner��weekday�hourr|r5r<r�)rur99r5�tzr�r>s      r&�100update_job�*schedule_hourly_update.<locals>.update_job�s�����)���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�3101B�102C�(B;�;CTr))r,r-r.)r;�ts  r&r/r/�s%��d�&	���103�4�8�A��G�G�Ir�z/api/elite-report�refresh�userc���U(a�URSS5n[R"5RS5n[RX#SS.5nUSU:waUSS.nUSS:�a104S	S105[106S.$US==S-
ss'U[U'S
n[SSH$nUSS:�dMXVSSUSSUSS3-
nM& U(a[U[5qOSqS[107S.$)NrCrDr�r��dater�rBr��ruOGünlük yenileme limitinize (3/3) ulaştınız. Lütfen yarın tekrar deneyin.)rnrp�reportr�r�r�r�rr�z: Skor z - r�r�r�r)rnrD)	rzr108r�r��ai_refresh_limitsr�r�r^r�)r>r?rCr	�109user_limitr110r*s       r&�get_elite_reportrG�s����h�h�u�l�+���L�L�N�+�+�J�7�	�'�*�*�3�Q�0O�P�111��f���*�"+�a�8�J��g��!�#�%�3D�P_�`�
`�	�7��q� ��!+��#���112� ��"�%�A���z�R���8��
�W�Q�w�Z�L��A�h�K�=�PR�S�S�113�&��0��]�K�O�x�O��?�;�;r�z/api/market-moversc�v�/n/n/n[R5H�up4[U5S:aM[USRS5n[USRS5n[USRS5n[USRS5nUS:�a114XV-115U-S-OSn	US:�a116XW-117U-S-OSn118X�-S	-nURX9US119.5 URX:US120.5 URX;US.5 M� [USS
S9n[USS
S9n
[USS
S9n[SUVs/sHo�SS:�dM
UPM snSS[U5Vs/sHo�SS::dM
UPM snSSU
SS[[U
55SSUSSS.5$![a GM�f=fs snfs snf)N�r�r�����i�����Volumerrti@B)r��changer�)r��volumer�c��US$�NrLr�r�s r&r��#get_market_movers.<locals>.<lambda>s��q��{r�Tr�c��US$rOr�r�s r&r�rP����8�r�c��US$)NrMr�r�s r&r�rPrRr�rrLrr������)rn�
daily_gainers�daily_losers�weekly_gainers�
weekly_losers�volume_leaders)r�rr�rr#r�r5r�r�reversedr)�daily�weeklyrMr�r��121curr_price�122prev_price�123week_price�vol�	daily_pct�124weekly_pct�vol_tl�daily_sorted�
weekly_sorted�
volume_sortedr�s                r&�get_market_moversrg�s����E�
�F�
�F� �&�&�(�125���r�7�Q�;��	��r�'�{�/�/��3�4�J��r�'�{�/�/��3�4�J��r�'�{�/�/��3�4�J���8��)�)�"�-�.�C�JT�WX�.�*�1�Z�?�3�F�^_�I�KU�XY�>�:�2�j�@�C�G�_`�J��&�)�3�F��L�L�F�*�U�V��M�M�V�J�W�X��M�M�V�126�S�T�#)�,�%�%:�D�I�L��6�'<�d�K�M��6�'<�d�K�M���%1�F�\��x�[�A�5E�!�\�F�s��K�$,�\�$:�P�$:�q��k�R�>O��$:�P�QT�RT�U�'���,��h�}�5�6�s��;�'���,�
�����	��	��G��Ps*�CF�7F1127�F1128�F6�/F6�129F.�-F.z/api/marketc���[RSS5[RSS5[RSS5[RSS5[RSS5[[5S	.$)130Nr�r��descriptionr�r��unknown�131volatility�trend_strength)r�rir�rkrl�
total_tickers)r�rzr�r�r�r�r&�132get_marketrn,sg�� �#�#�H�l�;�$�(�(���;��"�"�7�I�6�#�'�'��d�;�'�+�+�,<�d�C��^�,�
�r�z/api/recommendationsc� �[[5$r)rr�r�r�r&�get_recsrp;s
���o�&�&r�z/api/stock/{ticker}r�c
��U[;a%[U/5nX;aX[U'OSUS3S.$[Un[U5up4[X 5n[	XR5n[XR5nUR
S/5nUSS:aURS5 O%USS	:aUS133:�aUS-nURS5 [U5n	UR
S
/5n134/nURS5nUR5GHup�[U
S5(a[U
R55O135[U
5nURUSU;a[[US5S5O[[US5S5SU;a[[US5S5O[[US5S5SU;a[[US5S5O[[US5S5[[US5S5SU;a[!US5OSS.5 GM [#0SS_SU_S[%U5_S[UR
SS5S5_SU_SU	_S UR
S 05_SU_S![UR
S!S5S5_S"[UR
S"S5S5_S#UR
S#S5_S$UR
S$5b[UR
S$S5S&5OS%_S'UR
S'05_S(USUS)US*USU136S+._S,U_S-U_5$![&a0nSS%KnUR+5nSS.[U53US/.sS%nA$S%nAff=f)0u9Tek bir hisse için detaylı analiz verileri döndürür.ru için veri bulunamadı.r!r�r�r�u8ML Modeli Yetersiz Veri Nedeniyle Sadece TA Baz Alındır�r��7ru5ML Düşük Güven Skoru Nedeniyle Puan Tırpanlandı�feature_importancertrB�Openr�r��High�LowrKr)rBr2�high�low�closerMrnrr�r�r�r�r�r�r�r�r�r�r�Nr��	fibonacci�mlr�r�)r�r�r�r�rs�
multi_horizon�
price_historyuHisse detay hatası: )rnrp�trace)r�rLrQrTrUrVrzr�rS�tail�iterrows�hasattrr$rBr�rr�rrer5rw�137format_exc)r��new_datar�r�r�rrr|r�r�feature_imp_serializedr}�last_100r��row�date_strr>rw�error_traces                   r&�get_stock_detailr�Bs���Ef���#�'���1�H��!�%-�%5�138�6�"�")���@X�6Y�Z�Z�
��
��2�2�6����B�'��&�u�1�	�-�e�8�
��+�+�i��,���%�&��-��N�N�U�V�
�|�
$�r�
)���{���139���N�N�R�S�&�u�-��"+���/C�R�!H���
��7�7�3�<�� �)�)�+�H�C�*1�#�v�*>�*>�s�3�8�8�:��C��H�H�� � � �8>�#�
��e�C��K�0�!�4�5�QV�WZ�[b�Wc�Qd�fg�Kh�8>�#�
��e�C��K�0�!�4�5�QV�WZ�[b�Wc�Qd�fg�Kh�6;�s�l�u�U�3�u�:�.��2��e�TW�X_�T`�Na�cd�He��u�S��\�2�A�6�08�C��#�c�(�m�,�Q�
"�
�,��140��i�141��f�142�
�'��/�143�
�U�7�;�;���:�A�>�	144�145
�U�146�
�k�
147�
�'�+�+�l�B�7�148�
�w�149�
��w�{�{�;��:�A�>�150�
�E�'�+�+�n�a�"@�!�D�151�
�7�;�;�}�a�8�152�
�g�k�k�%�6H�6T�5����U�A�.��2�Z^�153�
����[�"�5�154�
�'��5�!*�?�!;�!*�?�!;�"+�,<�"=�&<��155�*
�]�+156�,
�]�-157��	��0�f���*�*�,��!�0E�c�!�f�X�.N�Yd�e�e��f�s#�.L�K(L�158M�$%M�	M�Mz/api/fundamentals/{ticker}c��[R"U5nURnURSS5URSS5URSS5URSS5URSS5URSS5URSS5URS	S5URS159S5URSS5URSS5S
.nSUS.$![anS[U5S.sSnA$SnAff=f)N�	marketCaprr��	forwardPE�priceToBook�
dividendYield�beta�
profitMargins�fiftyTwoWeekHigh�fiftyTwoWeekLowr��industry)�160market_cap�trailing_pe�161forward_pe�
price_to_book�dividend_yieldr��profit_margins�fifty_two_week_high�fifty_two_week_lowr�r�r)rn�fundamentalsrr!)r��Ticker�inforzr5r$)r�r=r�r=r>s     r&�get_fundamentalsr��s���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�162��$�T�:�:���6�!�c�!�f�5�5��6�s�C$C'�'163D	�1
D�>D	�D	z/api/news/{ticker}c	���[R"U5nURnU(dS/S.$/nUH�nURSS5nSSSS.nURS	S1645nUS165:�a&[R166"U5R
S5nOSnURUURS
S5URSS5UUS.5 M� SUS.$![an	S[U	5S.sSn	A	$Sn	A	ff=f)Nr)rn�newsrfr�r��Nötrz#94a3b8)r��label�color�providerPublishTimerz%Y-%m-%d %H:%Mr��link�#�	publisher)rfr�r�ru�	sentimentrr!)167r�r�r�rzr168�
fromtimestampr�r�r5r$)169r�r=�raw_news�formatted_news�nrfr��pub_time�dtr>s170          r&�get_newsr��s���6��I�I�f����6�6���'��4�4����A��E�E�'�2�&�E�"$�w��K�I��u�u�2�A�6�H��!�|��+�+�H�5�>�>�?O�P��!���!�!�����f�c�*��U�U�;��=��&�#�
��&$�^�<�<���6�!�c�!�f�5�5��6�s#�-C�BC�171C1�
C,�&C1�,C1z/api/news-sentiment-limit�requestc��URRn[R"5R	S5nU[172;aUSS.[173U'[174USU:waUSS.[175U'[
SS[176US-1775nSUS.$)	Nr�rrArBrCr�r)rn�	remaining)�client�hostr178r�r��news_sentiment_limitsr�)r��ip�todayr�s    r&�get_news_sentiment_limitr��s���	���	�	�B��L�L�N�#�#�J�/�E�	�&�&�-2�Q�$?��b�!��R� ��(�E�1�-2�Q�$?��b�!��A�q�0��4�W�=�=�>�I��i�8�8r�z/api/analyze-news/{ticker}c���URRn[R"5R	S5nU[179;aUSS.[180U'[181USU:waUSS.[182U'[183USS:�aSSS	.$[R"U5nURnU(dSS184S	.$SSK	nURXSS5n[U[5(aZSU;aT[185US==S
-
ss'[SS[186US-1875nSURSS5URSS5US.$S[U5S	.$![ an	SS[U	53S	.sSn	A	$Sn	A	ff=f)Nr�rrArBr�rCru9Günlük haber duygu analizi limitinize (3) ulaştınız.r!u'Analiz edilecek yeni haber bulunamadı.rr�r�rr��reasonr�)rnr�r�r�zHata: )r�r�r188r�r�r�r�r�r��gemini_advisor�analyze_news_sentimentrrr�rzr$r5)189r�r�r�r�r=r�r��resultr�r>s190          r&�api_analyze_newsr��so��	���	�	�B��L�L�N�#�#�J�/�E�	�&�&�-2�Q�$?��b�!��R� ��(�E�1�-2�Q�$?��b�!��R� ��)�Q�.�!�.i�j�j�A��I�I�f����6�6���%�2[�\�\���6�6�v���|�L���f�d�#�#��6�(9�!�"�%�g�.�!�3�.��A�q�#8��#<�W�#E�E�F�I�#����G�R�0� �*�*�X�w�7�&�	�
�&�#�f�+�>�>���A�!��s�1�v�h�.?�@�@��A�s+�-E�1BE�8
E�191E+�E&� E+�&E+z/api/run-backtest�reqc���^^^^^^# �URSS/5m[URSS55m[URSS55m[URSS55m[URS	S19255mURSS5mS
T;aSSKJn USSmO ST;aSSKJn USSmOST;aSSKJn UmUUUUUU4Sjn[U"5SS9$7f)N�tickerszTHYAO.IS�
lookback_days��
buy_thresholdr��initial_capital�j�@�max_allocation_pctr��	algorithm�trend�BIST30r�rPr��BIST100rt�TUM_HISSELERc	�f># �SSKnSSKnSSKJn TVs/sHo3[;dMUPM nnU(a�UR193"SS[
U5S3S.5S-7v� UR"5nURSX$5nUR5(dMUR194"SSSS.5S-7v� UR"S5IShv�N UR5(dMMUR5nUHnXx[U'M [[TTTTTT
5n	U	H5n195UR196"U1975S-7v� UR"S	5IShv�N M7 gs snfN�N![aBnSSKnUR5 UR198"S199[!U5S.5S-7v� SnAgSnAff=f7f)Nr)rLrou) hisse indiriliyor (1-2 dk sürebilir)...)�type�percentr�r�u(Veriler indiriliyor, lütfen bekleyin...r�g{�G�z�?r)r�rp)r3�asyncior�rLr��dumpsr��get_running_loop�run_in_executor�doner6r�rbr5rwrxr$)r3r�rLr=�missing�loop�taskr��mt�genr�r>rwr�r��lookbackr��	thresholdr�s             ������r&�generate�"api_run_backtest.<locals>.generates�������1�	J�")�A�'�Q�j�-@�q�'�G�A���j�j�*��QT�U\�Q]�P^�_H�OI�"J�K�NR�R�R��/�/�1���+�+�D�2B�L���)�)�+�+��*�*�j�Q�R|�%}�~�BF�F�F�!�-�-��*�*�*��)�)�+�+� �;�;�=��"�B�%-�\�J�r�N�#��z�7�H�i��Zl�nw�x�C����j�j��o��,�,��m�m�D�)�)�)���!B�+�*���	J�����!��*�*�g�#�a�&�A�B�T�I�I�I��	J�si�F1�E"�
E�E�BE"�E�	E"�$A+E"�E �E"�F1�E"� E"�"200F.�,8F)�$F1�)F.�.F1zapplication/x-ndjson)�201media_type)rzr�rr�rPr)	r�rPr�r�r�r�r�r�r�s	   @@@@@@r&�api_run_backtestr�s������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� �\rSrSr%\\S'Srg)�
WatchlistItemi4r�r�N��__name__�202__module__�__qualname__�__firstlineno__r$�__annotations__�__static_attributes__r�r�r&r�r�4s���Kr�r�z/api/portfolioc�r�[URSS5[5nUVs/sHo"SPM	 nn0nU(a[U5n/nSnSnUGH}nUSnUSn	X�;a203XHbXHn	O\U[204;aR[205UR(d:S[206UR;a#[[207USRSS5n	US	U	-n208US	US-nX�-209nUS:�a[X�-S210-S5OSn
Xk-
nXz-
nSn[S5nURS5nURS5n[HHnUSU:XdMUS
nUSnU(dURS5nU(dURS5n O URU[U5US	US[U	S5[U211S5[US5U
UUUUS.5 GM� Xv-212nUS:�a[UU-S213-S5OSn[U[US5[US5[US5US.S.5$s snf![a GN�f=f)NrCrDr�r�costr�rr��amountrtr�r�r�r�)r�r�r�r�r��total_value�pnl_tl�pnl_pctr�r�r�r�)r��214total_cost�215global_pnl�global_pnl_pct)r�summary)rWrzrGrNr5r�r"�columnsr�r#rSr�r�rer)r?�pfr%r��live_prices�enriched_pfr��	total_valr=r]�valr�r�r��ticker_score�
ticker_signalr�r�r*r�r�s                     r&�
get_portfolior�7sr��	������5�{�	C�B�*,�-�"�$�H�~�"�G�-��K��	�-�g�6�K��K��J��I�����N���&�\�216����� :�$��J�
�*�_�Z��]�%8�%8�W�217�ST�
�H]�H]�=]��z�!�}�W�5�:�:�2�>��B�J��8�n�z�)���H�~��V��,�����59�A�X�%���#�-�q�1�1����218���	���(��+�
��x�x��/���H�H�[�)�	� �A���{�a�� ��z�� !�(��
�#�#$�5�5��#8�L� � !���k� 2�I��!�	����'��*��8�n���L�"�:�q�1� ��a�=��F�A�&��!�#�(�"�
219�
	�A�^�'�J�BL�q�.�U�J��3�s�:�A�>�VW�N��� ��A�.��220�A�.��221�A�.�,�	222�����{.��223�	��	�s�H#�H(�(224H6�5H6c�^�\rSrSr%\\S'\\S'\\S'Sr\\S'Sr	\\S'Sr225\\S'S	rg)226�
PortfolioItemi�r�r�r�N�
purchase_dater�r�r�)r�r�r�r�r$r�r�rrr�r�r�r�r�r&r�r��s/���K��K�227�K��M�3���L�%���I�u�r�r�r%c���[URURURURUR228URURSS5[5 SS0$�NrCrDrnr)	rXr�r�r�rr�r�rzrG�r%r?s  r&�	add_to_pfr�sb������d�k�k�4�9�9�d�6H�6H�$�J[�J[�]a�]k�]k�mq�mu�mu�v{�~J�nK�MX�Y��i� � r�z/api/portfolio/{ticker}c�J�[XRSS5[5 SS0$r)rYrzrG�r�r?s  r&�rm_pfr�s"���F�H�H�U�L�9�;�G��i� � r�z/api/portfolio/opportunityc���[URSS5[5nUVs/sHo"RS5(dMUPM nnU(dSSS.$UVs/sHn[R"USS5PM nn[U5n[b[R(aSSS.$[nS	U;a/US	R(d[US	RS2295OSnSU;a/USR(d[USRS2305OS
nSU;a/USR(d[USRS2315OSn	X�-S-n232/nUGH1n[R"US5nURRU/SS9Sn
URU
n[US	5n[US5n[US5nUU-S-nUSUS-nUU-nUU-nUU-nUU-nUU-nUU233-nUSnU[;aQ[UR(d9S[UR;a"[[USRS2345OUSnUSU-nUR!USUSUUUUUS.5 GM4 SUS.$s snfs snf!["a/nSSKnUR'5 SS[)U53S.sSnA$SnAff=f)NrCrDrru�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.r�rg@@r�gA@r�g��@g
�t}?@�nearest)�methodrr�r�r�r�)r�r�invested_tl�current_stock_value�	usd_value�	eur_value�235gold_valuerr uHesaplama hatas─▒: )rWrzrGr236�strptimer�r�r"rr#�pd�to_datetimer��get_indexerr�r�r�r5rwrxr$)r?r�r%�items_with_date�unique_dates�min_date�df_alt�curr_usd�curr_eur�
curr_gold_usd�curr_gold_tl�results�target_dater�r��hist_usd�hist_eur�
hist_gold_usd�hist_gold_tlr�237usd_amount�238eur_amount�gold_amount�usd_current_tl�eur_current_tl�gold_current_tlr=�current_stock_pricerr>rws                               r&�get_opportunity_costr)�sG��	������5�{�	C�B�(*�H���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��239�+�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�240�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]�}]�%�241�1�
�g�(>�(C�(C�B�(G�"H�cg�hn�co��"&�x�.�3F�"F���N�N��x�.�!%�o�!6�*�':�+�+�-��
�5$�H$�W�5�5��qI��242j��h�R������!�0G��A��x�.P�Q�Q��R�sB�J�J�J(�$J#�?-J(�-G0J(�#J(�(243K!�2$K�K!�K!z/api/portfolio/riskc	���SSKJn U"URSS5[5nU(dSSS.$Sn/nUH�nUSnU[;dM[UcM [[U5S:�dM8[
[US	RS2445nU[
US5-nX8-
nURXhS.5 M� US:XaSS
S.$/n	/n245UH.nU	RUS5 U246RUSU-5 M0 SSK	nSSK247n
0nU	H>n[UnUS	R5R5RS5X�'M@ U
R"U5R5n[U5S:aSSS.$UR5nUR!5nUR""U2485nUR$"UU-5nUR&"UR("UR*UR("UU555nUS-U-249S-nUUR&"S5-nUR-5R/S5R15nS[/US5[/US5UU	S.$)Nr)rWrCrDruPortföy boş.r!r�r�rr�)r�r�u"Geçerli fiyat verisi bulunamadı.r���r�zYeterli tarihsel veri yok.gffffff�?rt�r�r)rn�var_95_daily_pct�var_95_monthly_pct�correlation_matrixr�)�portfolio_managerrWrzrGr�r�rr#r�r��pandas�250pct_change�dropnar�	DataFrame�mean�cov�array�sum�sqrt�dot�T�corrr��to_dict)r?rWr�r��pf_datar%r=r�r��
valid_tickers�w_list�prr�returns_dictr��ret_df�mean_returns�251cov_matrix�weights�	pf_return�pf_std�var_95_daily�var_95_monthly�corr_matrixs                         r&�get_portfolio_riskrL�sF��0�	������5�{�	C�B�
�!�.>�?�?��I��G�����N���252�?�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�����\�\�,�
'�
.�
.�
0�F�253�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�)� ��r�z/api/portfolio/markowitzc�~�[URSS5[5nU(dSSS.$[R"U5n[[U5up4U(aSUS.$[U5n[[U[5nURR5nURR5nSUUUUS.S.$)	NrCrDruPortf├Ây bo┼ş.r!r)r��matrix)rn�warnings�suggestions�correlation)
rWrzrGrr4r_r�r`rar�r�r��values)	r?r��pf_dfrK�errrOrPr��matrix_datas	         r&�get_markowitz_analysisrVs���	������5�{�	C�B�
�!�.D�E�E��L�L���E�3�J��F��K�254�!�c�2�2�%�k�2�H�+�J��~�N�K��!�!�(�(�*�G��$�$�+�+�-�K���"��!�255�	�r�z/api/watchlistc256�t�[URSS5[5n/nUVs/sHo3[;dMUPM nnU(a[	U5nUHnXV[U'M UGHFnU[;dM[UR257(aM*S[UR;dMC[[USRSS5n[[U5S:�a#[[USRSS5OUnUS:wa[Xx-258U-S	-S5OSn	Sn259[S5n[HnUS260U:XdMUSn261USn O U262S:Xa3[Un
[U
5up�Un263URS[U55nURU[U5UU	U264US
.5 GMI U$s snf)NrCrDr�rr�r�rJrrtr�r�r�)r�r�r�rLr�r�)rZrzrGr�rLr"r�r�r#r�rSr�rQr�re)r?�wlr�r=�missing_tickersr�r��curr_p�prev_prLr�r�r*r��	dyn_score�dyn_detailss                r&�
get_watchlistr^5s���	������5�{�	C�B�265�C�#%�<�"�Q��(;�q�"�O�<��#�O�4���B�%�\�J�r�N�����266�?�:�a�=�#6�#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�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�.�� �� �
�
�/�@�J��M=s267�
F5�F5c�`�[URURSS5[5 SS0$r)r[r�rzrGrs  r&�add_wlr`cs(���T�[�[�$�(�(�5�,�"?��M��i� � r�z/api/watchlist/{ticker}c�J�[XRSS5[5 SS0$r)r\rzrGrs  r&�rm_wlrbhs"���&�(�(�5�,�"?��M��i� � r�c� �\rSrSr%\\S'Srg)�
GeminiRequestiq�kap_textr�Nr�r�r�r&rdrdqs���Mr�rdz/api/geminic	���[[URSS5[55n[[SSVs/sHo3SUSUSSS.PM sn5n[268RS	S2695S[270RSS
5S[271RSS
5S3n[
X%X@R5nSU0$s snf![anSS[U530sSnA$SnAff=f)NrCrDrr�r�r�r�)r�r�r�r�r�z (Volatilite: %rk�?u, Trend G├╝c├╝: rlr~�adviceuHata oluştu: )	r$rWrzrGr�r�r]rer5)r�r?�pf_strr*�top_recs�272regime_strrhr>s        r&�
get_ai_advicerlts��
������� =�{�K�
L�F��jy�z|�{|�j}�~�j}�ef��{�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�8�\�\�R���&�!�!�����5��N�3�q�6�(�3�4�4��5�s#�B>�$C�273C'�
C"�C'�"C'z
/api/backtestr�c�8^�U4Sjn[U"5SSSSS.S9$)uEAlgoritmanın geçmiş performans analizi. SSE ile progres gönderir.c3�># �[[[TS9H*n[U5nS[R274"U5S3v� M, g7f)N)r�zdata: z275 276)rbr�r�rr3r�)r{�encodedr�s  �r&�event_generator�%get_backtest.<locals>.event_generator�s=����"�:�~��S�F�&�v�.�G��4�:�:�g�.�/�t�4�4�T�s�AAztext/event-streamzno-cachez277keep-alive�no)z
Cache-Control�278ConnectionzX-Accel-Buffering)r��headers)r)r�rps` r&�get_backtestru�s.���5����&�'�&�!%�279��r�z/api/backtest/single/{ticker}c��U[;a%[U/5nX;aX [U'OSUS3S.$[UnSSKnUR5nUR	USSS9US	'UR	USS280S9US'URUSSS
S9nUb>UR(d-URSS2S4US'URSS2S4US'O281SUS'SUS'/nURS5R5GH?up�UR[US5(a[UR55O282[U5[[U	S5S5[ R""U	S	5(d[[U	S	5S5OS[ R""U	S5(d[[U	S5S5OS[ R""U	S5(d[[U	S5S5OS[ R""U	S5(d[[U	S5S5OSS.5 GMB [%[U/SSUS9n283SnU284HnUSS:XdMUSn O /n
0nU(aIUR'S5S:Xa4UR'S/5n
UR'S05R'U05n[)SUUU
US.5n[+U5$) uETekil bir hisse için detaylı backtest ve grafik verisi döndürür.ru i├ğin veri bulunamad─▒.r!rNr�r�)�length�SMA_50���SMA_200rg@)rw�std�BBLr��BBUr�rB)rBry�sma50�sma200�bbl�bbur�g�?)r�r�r�r�r�r=rnr�
recent_trades�ticker_results)rnr��prices�tradesr�)r�rL�	pandas_ta�copy�sma�bbandsr"r#rr�r�r�r$rBr�rr�isnarbrzrr)r�r�r�r��ta�df_indr�r�r�r��bt_genr�r%r�r��encoded_datas                r&�get_single_backtestr��s����Z��#�V�H�-����!)�!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�F�';�';�C����285�O��S���5��W��.��2�;=�7�7�3�x�=�;Q�;Q�U�5��X��/��3�W[�=?�W�W�S��^�=T�=T�e�E�#�i�.�1�1�5�Z^�68�g�g�c�%�j�6I�6I�5��s�5�z�*�A�.�t�68�g�g�c�%�j�6I�6I�5��s�5�z�*�A�.�t�
286�	�0��*�v�h��]`�lu�
v�F�
�F�����<�8�#��&�\�F����F��G�
�&�*�*�X�&�)�3����O�R�0���*�*�-�r�2�6�6�v�r�B��#������%��L���%�%r�z/api/sectorsc�h�[[5n[U5n[UUS.5n[	U5$)u*Sekt├Âr analizi ve rotasyon sinyalleri.)�sectors�rotation)rcr�rdrr)r�r�r�s   r&�get_sectorsr��s:���j�)�G�*�7�3�H�#���%��L���%�%r�z/api/tickersc��[$rr�r�r�r&�get_tickersr��s���r�z
/api/screenerc��/n[R5GH�upUb[U5S:aM[U5nURSn[X15nU(a[
XS5S-OSnURSS5nURSS5nURSS5n	URS	S5n287URS288S5nURSS5nX�:�aSOS
n
SSKJ	n URURSS5S5nURUU[[U5S5[[U5S5[[U	5S5U
[[U5S5[[U5S5[[U5S5S.	5 GM� [[!SUS.55$![anSnAGM�SnAff=f)uSHisse tarama ve filtreleme i├ğin teknik ve ML verilerini d├Ând├╝r├╝r.Nryrrtrr��RSI�MACD�MACD_Signal�ADX�Volume_Ratio�Al�Sat��289SECTOR_MAP�.ISr�u	Di─şerr�)	r�r�ryr��macd�macd_status�adx�volume_ratio�ml_scorerr )r�rr��_build_featuresr#rTrUrz�sector_analyzerr��replacer�r�rr5rr)rr�r��df_ml�last_row�model_bundler��close_pricer�r��macd_signalr�r�r�r�r�r>s                 r&�get_screenerr��s����G� �&�&�(�290��
�:��R��3���#	�#�B�'�E��z�z�"�~�H�'�u�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�291�292
�7)�R�(�I�w�)O�P�Q�Q���	���	�s�E&F4�4293G294�G295c�*�\rSrSr%\\S'\\S'Srg)�PortfolioAnalyzeItemi r�r�r�N)r�r�r�r�r$r�rr�r�r�r&r�r� s���K��Mr�r�c�&�\rSrSr%\\\S'Srg)�PortfolioPayloadi$rr�N)r�r�r�r�rr�r�r�r�r�r&r�r�$s���$�%�%r�r�z/api/portfolio/analyze�payloadc�4�SnSn0nSSKJn /nURGHnURnURnU[296;dM([297UR(aMB[298Un	[U	SRS5n299[U	5S:�a[U	SRS5OU300nX�-nX�-n
X-
nX,U
-301-
nURURSS5S	5nURUS5U-X>'URU[U302S3035U[US3045[X�-305U-S-S3065S.5 GM US:�a[X!-S-S3075OSnS
[US3085[US3095UUUS.$![anSS[U53S.sSnA$SnAff=f)ueKullanıcının portföyündeki hisselerin güncel durumunu ve sektörel dağılımını analiz eder.rr�r�rr�rJr�r�uDiğerr�rt)r�r�r��value�daily_change_pctr)rnr��	daily_pnl�
daily_pnl_pct�sector_distributionr�ruPortföy analiz hatası: r!N)r�r�rr�r�r�r"rr#r�rzr�r�r�r5r$)r�r�r�r�r�r�r%r�r�r�r�r^r��310prev_valuer�r�r>s                 r&�analyze_portfolior�'s���.T����	� ��.����M�M�D��[�[�F��[�[�F���#�J�v�,>�,D�,D�,D���'�� %�b��k�&6�&6�r�&:� ;�
�<?��G�a�K�U�2�g�;�#3�#3�B�#7�8�]�311�%�.��'�0�312��$���j�0�1�	�#������u�b�(A�8�L��.A�.E�.E�f�a�.P�SX�.X�#�+����$�"�=�!�4�$�"�5�!�_�(-�
�0J�j�/X�\_�._�ab�(c� ��%"�4FQ�ST�_��y�6�#�=�q�A�Z[�
� � ��a�0��y�!�,�*�#6��
313�	314���T�!�0I�#�a�&��.R�S�S��T�s*�>E2�E2�DE2�2315F�<F�F�Fz/api/ai-portfolioc��[R"[[5n[	SUS.5$![316anS[
U5S.sSnA$SnAff=f�Nrr rr!)�model_portfolio_bot�get_bot_dashboardr�rGrr5r$�r=r>s  r&�get_ai_portfolior�^sH��3176�"�4�4�_�k�R���Y��=�>�>���6�!�c�!�f�5�5��6�s�,/�318A�
A�A�Ac� �\rSrSr%\\S'Srg)�ResetPortfolioRequestii�capitalr�N)r�r�r�r�rr�r�r�r�r&r�r�is��
�Nr�r�z/api/ai-portfolio/resetc��[R"UR[5nSSURS3S.$![anS[U5S.sSnA$SnAff=f)Nru	Portföy u TL ile sıfırlandı.r!r)r��reset_bot_portfolior�rGr5r$)r�r=r>s   r&�reset_ai_portfolior�lsU��6�"�6�6�s�{�{�K�P��#�)�C�K�K�=�H^�0_�`�`���6�!�c�!�f�5�5��6�s�7:�319A�
A�A�Az/api/ai-portfolio/runc��[R"[[5 SSS.$![anS[U5S.sSnA$SnAff=f)Nru'Bot işlemleri başarıyla tamamlandı.r!r)r��run_trading_botr�rGr5r$)r>s r&�run_ai_portfolio_botr�tsB��6��+�+�O�[�I�#�0Y�Z�Z���6�!�c�!�f�5�5��6�s�#&�320A�
A�A�Az/api/algo-configc��[R"[5nSUS.$![anS[	U5S.sSnA$SnAff=fr�)r�r�rGr5r$r�s  r&�get_algo_configr�sA��6�"�-�-�k�:��#�T�2�2���6�!�c�!�f�5�5��6�s�!�321A�
>�A�Ac��[R"[US5(aUR5OU[5 [322R"[55 SSS.$![anS[U5S.sSnA$SnAff=f)NrruAAlgoritma ayarları kaydedildi. Analiz yeniden başlatılıyor...r!r)323r��save_configr�rrGr��create_task�trigger_reanalysisr5r$)r�r>s  r&�save_algo_configr��sj��6��'�'�g�c�6�6J�6J����324�PS�U`�a����.�0�1�#�0s�t�t���6�!�c�!�f�5�5��6�s�AA!�!325B�+
A>�8B�>Bc��# �[S5 [R"S5IShv�N SSKnUR"[326SS9R
5 gN,7f)NuX327[SİSTEM] Kullanıcı algoritma ayarlarını değiştirdi, analiz baştan başlıyor...r�rTr))r<r�r6r,r-r|r.r0s r&r�r��sA���	�328e�f�329�-�-��330����
���L��6�<�<�>��s�%A�A�-A�/�frontendT)�	directory�html)�name�__main__z331server:appz	127.0.0.1i@)r��port�reloadc�B�\rSrSr%\\S'\\S'\\S'Sr\\S'Srg)	�	ClientLogi�rur��msgr��sourcer�N)r�r�r�r�r$r�r�r�r�r�r&r�r��s��332
�I�333
�I�	�H��F�C�r�r�z/api/client-log�logc334��# �[SURSURSURSUR35 SS0$7f)Nz335[FRONTEND ERROR] z | rn�ok)r<rur�r�r�)r�s r&�receive_client_logr��sB���	�����z��S�X�X�J�c�#�'�'��#�c�j�j�\�336R�S��d���s�AA)r�)��fastapir�fastapi.staticfilesr�fastapi.responsesrr�fastapi.middleware.corsr�fastapi.encodersr�pydanticr	r1rr3r�r337rr.�firebase_adminrr
rrrrr�fastapi.securityrr�	functoolsrr�rr�_default_recs_pathr2�_f�write�remover1r:r;�tempfiler/r��338gettempdirr<r7r?rG�getenv�firebase_creds_env�loads�	cred_dict�Certificate�cred�initialize_appr�r0r5r>�securityrKr�rLrMrNrOrPr��analyzerrQrRrS�yfinancer��ml_modelrTrUrVr0rWrXrY�watchlist_managerrZr[r\r�r]r^�	markowitzr_r`ra�339backtesterrbr�rcrdrer�r��app�add_middlewarer�r�r�r�r�r�r�r�rEr�ryr|rvrzr
rr&�on_eventr1r,r/r�rrGrgrnrpr$r�r�r�r�r��postr�r�r�r�r�deleterr)rLrVr^r`rbrdrlrur�r�r�r�r�r�r�r�r�r�r�r�r�r��mountr��uvicorn�runr�r�r�r�r&�<module>rs����+�=�2�-�����(�	��7�7�=�=�E�����-��]�	
� �7�*�C�	0�B�340�����3411��I�I� �7�*�+�.���>����Y�Y�5�6��4���J�J�1�2�	��&�&�y�1���%�%�d�+��&�&�(��
�Q�R�	�����0�	1�	1��&�&�'?�@���%�%�d�+��&�&�(��
�O�P�
�Y�Z���'��AI�(�AS�O�">�O� v�u�!��U�U��K�K�K�K�U�U�D�e�e�#�[�[���
�'�(���������%��%����
�
�342����u��<�����
�����$�!�@[�\�
�X�"f6�P���	��������	��s��s����	��6��6�4���i�������:���	��%*��AQ�9R�<�d�<�$�<��<�@���	��&��&�X�����������	� �'�!�'����	��Gf�S�Gf� �Gf�X���	%�&�6�S�6�'�6�4���	��6�S�6��6�>���	$�%�9�g�9�&�9����	%�&�#A�S�#A�7�#A�'�#A�P���343��0L��0L��0L�d�I�����	��&�'7�8�H��H��H�T�I�����344��07�8H�0I�!�M�!��!��!����%�&�$+�,<�$=�!�#�!�T�!�'�!����	%�&�&-�.>�&?�>R�t�>R�'�>R�L���	��$+�,<�$=�9�T�9� �9�v���	#�$�(/�0@�(A����%��:���	��&�'7�8�+��+��+�Z���345��-4�5E�-F�!��!�d�!��!����%�&�$+�,<�$=�!�#�!�T�!�'�!��I�����-��3:�;K�3L�5�}�5�D�5��5�"������C���� ���	(�)�8&��8&��8&�*�8&�|�����	&��	&��������������-R��-R�d�9��&�y�&����346"�#�0T�/�0T�$�0T�l��������	��6���6��I�����347#�$�6�1�6�%�6����348!�"�6�#�6����	��6��6����349��6�$�6��6�?��	�	�#�{�Z�d�;�*�	�M��z����K�K��;�T�$�G���	�����350���)����+3511�	0��	��!�]���G�G�L�L��)<�)<�)>�@W�X��	�C�DY�CZ�352[�\�]��T�4�	�.�q�c�3532�3�3��4�sQ�3\�?\�\�A]"�"A]"�]"�354\�\�A]�]�"]>�(]9�9]>