Ë
    [ÖÌjD  ã                  ó¢   — d dl mZ d dlmZ d dlZd dlmZ d dlZd dl	Zd dl
Z
d dlZddlmZ g d¢Z ed¬	«       G d
„ d«      «       Zdd„Zddd„Zy)é    )Úannotations)Ú	dataclassN)ÚPathé   )ÚSettings©ÚSECUCODEÚREPORT_DATEÚNOTICE_DATEÚROEJQÚNET_INTEREST_MARGINÚNET_INTEREST_SPREADÚBLDKBBLÚLOAN_PROVISION_RATIOÚNEWCAPITALADERÚFIRST_ADEQUACY_RATIOÚLIQUIDITY_COVERAGE_RATIOÚRISK_COVERAGEÚNET_CAPITAL_LIABILITIESÚNET_ASSETS_LIABILITIESÚSOLVENCY_ART)Úfrozenc                  óD   — e Zd ZU ded<   ded<   ded<   ded<   d	Zded
<   y)ÚFinancialSectorDataResultÚintÚrowsÚstrÚreport_periodÚboolÚrebuiltr   Úoutput_pathÚ ÚwarningN)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r#   © ó    ú?C:\FundamentalWorkbench\src\fundamental_mvp\financial_sector.pyr   r      s"   … à
ƒIØÓØƒMØÓØ€GˆSÔr)   r   c                ó  — dj                  d„ | D «       «      }ddj                  t        «      d|› d|› d�ddd	d
dœ}dt        j                  j	                  |«      z   }t        j
                  j                  |dddœ¬«      }t        j
                  j                  |d¬«      5 }t        j                  |j                  «       «      }d d d «       j                  d«      xs i }|j                  d«      xs g S # 1 sw Y   Œ3xY w)NÚ,c              3  ó(   K  — | ]
  }d |› d �–— Œ y­w)Ú"Nr(   )Ú.0Úcodes     r*   Ú	<genexpr>z_fetch_chunk.<locals>.<genexpr>!   s   è ø€ Ð8©i d˜˜$˜˜q”k©iùs   ‚ÚRPT_F10_FINANCE_MAINFINADATAz(SECUCODE in (z))(REPORT_DATE='z')r   éd   ÚHSF10ÚPC)Ú
reportNameÚcolumnsÚfilterÚ
pageNumberÚpageSizeÚsourceÚclientz<https://datacenter.eastmoney.com/securities/api/data/v1/get?zMozilla/5.0z'https://emweb.securities.eastmoney.com/)z
User-AgentÚReferer)Úheadersé   )ÚtimeoutÚresultÚdata)ÚjoinÚSECTOR_FIELDSÚurllibÚparseÚ	urlencodeÚrequestÚRequestÚurlopenÚjsonÚloadsÚreadÚget)	Ú	secucodesr   ÚquotedÚparamsÚurlrH   ÚresponseÚpayloadrA   s	            r*   Ú_fetch_chunkrU       sï   € Ø�X‰XÑ8©iÓ8Ó8€Fà4ÀÇÁÌ-ÓAXØ" 6 (Ð*:¸=¸/ÈÐLØ S°GÀtñ€Fð
 IÌ6Ï<É<×KaÑKaÐbhÓKiÑ
i€CÜ�n‰n×$Ñ$ SÀð  \Eñ  3FÐ$ó  G€GÜ	�‰×	Ñ	 °Ð	Ô	4¸Ü—*‘*˜XŸ]™]›_Ó-ˆ÷ 
5à�[‰[˜Ó"Ò( b€FØ�:‰:�fÓÒ# Ð#÷ 
5Ð	4ús   Â$$C:Ã:Dc                ób
  — | j                   dz  }t        j                  | j                  dg¬«      }t        j                  |d   j                  «       «      j                  «       j                  «       }|j                  «       rz|sxt        j                  |«      }|j                  sWt        t        j                  |d   j                  «       «      j                  «       «      |k(  rt        t        |«      |d|«      S t        j                  | j                   dz  «      }|j                  |d   j                  ddg«      g d	¢f   j                  «       }|d
   j                  dd  dz   |d
   j                  d d j                  j!                  «       z   |d<   g }|d   j#                  «       }	t%        dt        |	«      d«      D ]#  }
|j'                  t)        |	|
|
dz    |«      «       Œ% t        j*                  |«      j-                  ddddddddddddddddœ¬«      }|j                  sd|j.                  vr°|j                  «       r‘t        j                  |«      }|j                  spd|j.                  v rbt        t        j                  |d   j                  «       «      j                  «       «      }d|› d|› d |› d!�}t        t        |«      |d||¬"«      S t1        d#|› d$�«      ‚|j3                  |dd%¬&«      }t        j4                  |d   «      |d<   t        j4                  |d   «      |d<   |j.                  D �cg c]	  }|d'vsŒ|‘Œ }}||   j7                  t        j8                  d(¬)«      ||<   |d*   j                  d+d,g«      }|d*   j;                  d-«      }|d*   j;                  d.«      }|d   j=                  ||d   «      |d/<   |d   j=                  |«      |d0<   |j                  |df   |j                  |d0f<   |j                  |df   |j                  |d0f<   |d   j=                  |«      |d1<   |j                  |df   |j                  |d1f<   |j                  |df   |j                  |d1f<   |j?                  |d¬2«       |jA                  | j                   d3z  dd4¬5«       tC        jD                  t        | jF                  d6z  «      «      5 }|jI                  d7|«       |jK                  d8«       d d d «       t        t        |«      |d9|«      S c c}w # 1 sw Y   Œ%xY w):Nz financial_sector_metrics.parquetr   )r7   Fzsecurity_master.parquetÚindustry_l1_codeÚX50ÚX51)Úsource_codeÚindustry_l2_codeÚindustry_l2_namerZ   é   Ú.Úsecucoder   é(   Únotice_dateÚ
sector_roeÚnet_interest_marginÚnet_interest_spreadÚprovision_coverage_ratioÚloan_provision_ratioÚcapital_adequacy_ratioÚtier1_capital_adequacy_ratioÚliquidity_coverage_ratioÚrisk_coverage_ratioÚnet_capital_liabilities_ratioÚnet_assets_liabilities_ratioÚsolvency_adequacy_ratior   u?   é‡‘èž�è¡Œä¸šæŒ‡æ ‡ï¼ˆé“¶è¡Œ/è¯�åˆ¸/ä¿�é™©ï¼‰ä¸Šæ¸¸å°šæœªå�‘å¸ƒ u    æœŸï¼Œæœ¬æ¬¡æ²¿ç”¨ u)    æœŸç»“æžœï¼ˆè¯¥è¡¨ report_period ä»�ä¸º uŸ   ï¼Œæœªæ”¹æ ‡æœŸæ•°ï¼‰ã€‚å�—å½±å“�çš„æ˜¯é‡‘èž�è¡Œä¸šä¸ªè‚¡çš„è¡Œä¸šä¸“å±žæŒ‡æ ‡ï¼Œå…¶ä½™ä¸ªè‚¡ä½¿ç”¨æœ€æ–°æœŸæ•°æ�®ã€‚ä¸Šæ¸¸å�‘å¸ƒå�Žé‡�è·‘å�³ä¼šè‡ªåŠ¨æ›´æ–°ã€‚)r   r   r    r!   r#   uZ   é‡‘èž�è¡Œä¸šæŒ‡æ ‡ï¼ˆé“¶è¡Œ/è¯�åˆ¸/ä¿�é™©ï¼‰å�–æ•°å¤±è´¥ï¼šä¸Šæ¸¸æ•°æ�®ä¸­å¿ƒå°šæœªå�‘å¸ƒ u©    æœŸçš„æ•°æ�®ï¼ŒæŽ¥å�£è¿”å›ž 0 æ�¡è®°å½•ï¼Œä¸”æœ¬åœ°æ²¡æœ‰å�¯æ²¿ç”¨çš„åŽ†å�²ç»“æžœã€‚è¯¥æœŸæ•°æ�®é€šå¸¸æ™šäºŽæ™®é€šè¡Œä¸šæŠ«éœ²ï¼›è¯·ç­‰ä¸Šæ¸¸å�‘å¸ƒå�Žé‡�è·‘æœ¬æ­¥éª¤ã€‚Úleft)ÚonÚhow>   r_   ra   rZ   r   r[   r\   Úcoerce)Úerrorsr[   ÚX5001ÚX5002ÚX5101ÚX5102Úfinancial_core_marginÚfinancial_solvencyÚfinancial_buffer)Úindexzfinancial_sector_metrics.csvz	utf-8-sig)rz   Úencodingzfundamental_mvp.duckdbÚ	sector_dfzKCREATE OR REPLACE TABLE financial_sector_metrics AS SELECT * FROM sector_dfT)&Úprocessed_dirÚpdÚread_parquetÚfinancial_pit_pathÚ	TimestampÚmaxÚdateÚ	isoformatÚexistsÚemptyr   r   ÚlenÚlocÚisinÚcopyÚupperÚtolistÚrangeÚextendrU   Ú	DataFrameÚrenamer7   ÚRuntimeErrorÚmergeÚto_datetimeÚapplyÚ
to_numericÚeqÚwhereÚ
to_parquetÚto_csvÚduckdbÚconnectÚdatabase_dirÚregisterÚexecute)ÚsettingsÚforcer!   Úfinancer   ÚcachedÚmasterÚ	financialr   ÚcodesÚstartÚframeÚcached_periodr#   ÚcolumnÚnumericÚbankÚsecurityÚ	insuranceÚ
connections                       r*   Úrefresh_financial_sector_datar¯   /   s6  € Ø×(Ñ(Ð+MÑM€KÜ�o‰o˜h×9Ñ9ÀOÐCTÔU€GÜ—L‘L ¨Ñ!9×!=Ñ!=Ó!?Ó@×EÑEÓG×QÑQÓS€MØ×ÑÔ¡EÜ—‘ Ó-ˆØ�|Š|¤¤B§L¡L°¸Ñ1H×1LÑ1LÓ1NÓ$O×$TÑ$TÓ$VÓ WÐ[hÒ hÜ,¬S°«[¸-ÈÐP[Ó\Ð\ä�_‰_˜X×3Ñ3Ð6OÑOÓP€FØ—
‘
˜6Ð"4Ñ5×:Ñ:¸EÀ5¸>ÓJò Mð ñ ç�tƒvð ð & mÑ4×8Ñ8¸¸Ð<¸sÑBÀYÈ}ÑE]×EaÑEaÐbdÐcdÐEe×EiÑEi×EoÑEoÓEqÑq€IˆjÑØ$&€DØ�jÑ!×(Ñ(Ó*€EÜ�qœ#˜e›* bÖ)ˆØ�‰”L  u¨U°R©ZÐ!8¸-ÓHÕIð *ä�L‰L˜Ó×%Ñ%Ø¨È}ØÐ6KØ4ÐA[Ø 6ÐJbØ >Ø$>Ø.ÐKjØ"@ÐQjñ	/Ð%ó 	€Eð ‡{‚{�j¨¯©Ñ5ð ×ÑÔÜ—_‘_ [Ó1ˆFØ—<’< O°v·~±~Ñ$EÜ #¤B§L¡L°¸Ñ1H×1LÑ1LÓ1NÓ$O×$TÑ$TÓ$VÓ W�àUÐVcÐUdð e$Ø$1 ?Ð2[Ð\iÐ[jð keðfð ô 1Ü˜V›°MÈ5Ø +°Wôð ô
 ØhÐivÐhwð xcð dó
ð 	
ð
 �O‰O˜E j°fˆOÓ=€EÜŸ^™^¨E°/Ñ,BÓC€Eˆ/ÑÜŸ>™>¨%°Ñ*>Ó?€Eˆ-ÑØ$)§M¢Mó ¡M˜&°Vð Dò 6Šv M€Gð ð ˜7‘^×)Ñ)¬"¯-©-ÀÐ)ÓI€Eˆ'�NØÐ#Ñ$×)Ñ)¨7°GÐ*<Ó=€DØÐ'Ñ(×+Ñ+¨GÓ4€HØÐ(Ñ)×,Ñ,¨WÓ5€IØ%*Ð+@Ñ%A×%GÑ%GÈÈeÐT`ÑNaÓ%b€EÐ
!Ñ"Ø"'Ð(@Ñ"A×"GÑ"GÈÓ"M€EÐ
ÑØ05·	±	¸(ÐDYÐ:YÑ0Z€E‡I�IˆhÐ,Ð,Ñ-Ø16·±¸9ÐF_Ð;_Ñ1`€E‡I�IˆiÐ-Ð-Ñ.Ø %Ð&@Ñ A× GÑ GÈÓ M€EÐ
ÑØ.3¯i©i¸ÐBaÐ8aÑ.b€E‡I�IˆhÐ*Ð*Ñ+Ø/4¯y©y¸ÐD]Ð9]Ñ/^€E‡I�IˆiÐ+Ð+Ñ,Ø	×Ñ�[¨ÐÔ.Ø	‡L�L�×'Ñ'Ð*HÑHÐPUÐ`k€LÔlÜ	�‰œ˜H×1Ñ1Ð4LÑLÓMÔ	NÐR\Ø×Ñ˜K¨Ô/Ø×ÑÐhÔi÷ 
Oô %¤S¨£Z°ÀÀkÓRÐRùò'÷  
OÐ	Nús   Í 	T Í
T Ó$T%Ô%T.)rO   z	list[str]r   r   Úreturnzlist[dict[str, object]])F)rŸ   r   r    r   r°   r   )Ú
__future__r   Údataclassesr   rK   Úpathlibr   Úurllib.parserE   Úurllib.requestrš   Úpandasr~   Úconfigr   rD   r   rU   r¯   r(   r)   r*   Ú<module>r¸      sQ   ðÝ "å !Û Ý Û Û ã Û å ò€ñ �$Ô÷ð ó ðó$õOSr)   