
    Ij5#                       d dl mZ d dlmZ d dlmZmZ d dlmZ d dl	m
Z
mZ d dlmZ d,d-dZd.dZ ed           G d d                      Z ed           G d d                      Zddddd/d"Zdddd#d0d+ZdS )1    )annotations)	dataclass)DecimalROUND_HALF_UP)Any)CoinMarketContextMarketContextSnapshot)MarketConfluenceReport0.0001valuer   placesstrreturnc                n    t          |                     t          |          t                              S )N)rounding)r   quantizer   r   )r   r   s     I/home/agent/projects/CryptoTradingBot/Crypto_Agent/src/market/snapshot.py_qr      s&    u~~gfoo~FFGGG    partwholec                V    |dk    rt          d          S | |z  t          d          z  S )Nr   0100)r   )r   r   s     r   _pctr      s,    zzs||%<'%..((r   T)frozenc                      e Zd ZU dZded<   ded<   ded<   ded<   ded<   ded	<   ded
<   ded<   ded<   ded<   ded<   ded<   ded<   ded<   dZded<   dZded<   ddZdS )NormalizedCoinSnapshotzPhase-2 normalized per-coin market snapshot.

    This object is intentionally read-only and safe for reports/gates. Missing external
    data sources are represented explicitly with status fields instead of being guessed.
    r   coindict[str, Any]priceohlcvtrendmomentum
volatility	liquidityderivativesfundamentals	sentiment
event_riskregimerisk
confluenceFboollive_order_allowedmainnet_signed_actionr   c                   i d| j         d| j        d| j        d| j        d| j        d| j        d| j        d| j        d	| j        d
| j	        d| j
        d| j        d| j        d| j        d| j        d| j        S )Nr   r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r/   r0   )r   r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r/   r0   selfs    r   to_dictzNormalizedCoinSnapshot.to_dict.   s    
DI
TZ
 TZ
 TZ	

 
 $/
 
 4+
 D-
 
 $/
 dk
 DI
 $/
 !$"9
  $T%?!
 	
r   Nr   r    )__name__
__module____qualname____doc____annotations__r/   r0   r4    r   r   r   r      s           III    $$$$$"'''''
 
 
 
 
 
r   r   c                  R    e Zd ZU ded<   ded<   ded<   dZded<   dZded	<   ddZdS )NormalizedMarketSnapshotr   schema_versionmarket_regimez!dict[str, NormalizedCoinSnapshot]coinsFr.   r/   r0   r   r    c                |    | j         | j        | j        | j        d | j                                        D             dS )Nc                >    i | ]\  }}||                                 S r;   )r4   ).0r   snaps      r   
<dictcomp>z4NormalizedMarketSnapshot.to_dict.<locals>.<dictcomp>Q   s&    PPPztTdDLLNNPPPr   )r>   r?   r/   r0   r@   )r>   r?   r/   r0   r@   itemsr2   s    r   r4   z NormalizedMarketSnapshot.to_dictK   sH    "1!/"&"9%)%?PPTZ=M=M=O=OPPP
 
 	
r   Nr5   )r6   r7   r8   r:   r/   r0   r4   r;   r   r   r=   r=   C   sr         ,,,,$$$$$"'''''
 
 
 
 
 
r   r=   N)fundamentals_rowsentiment_rowevent_risk_rowctxr   confluence_rowr    r?   rG   dict[str, Any] | NonerH   rI   c                  | j         dk    r| j         n| j        }|dk    rt          | j        |          nt	          d          }| j        dk    r#|dk    rt          || j        z
  | j                  nt	          d          }| j        dk    r-| j        dk    r"t          | j        | j        z
  | j                  nt	          d          }	| j        | j        k    r|| j        k    rdn| j        | j        k     rdnd}
| j	        t	          d          k    rdn| j	        t	          d          k    rd	nd
}t	          d          |cxk    rt	          d          k    rn ndn|t	          d          k    rdnd}| j
        r!| j        | j        t	          d          k    rdnd}| j        t	          d          k    s| j        t	          d          k    rdnd}t          |                    d          pg           }| j        r|                    d           | j        t	          d          k     r|                    d           t'          | j                                        t-          |          t-          | j                  t-          | j                  t-          | j                  t-          |          ddddt-          | j        d          t-          | j        d          d|
t-          | j                  t-          | j                  |                    d d!          d"|t-          | j	                  |                    d#d!          d$|t-          | j                  t-          |          |                    d%d!          d&|| j        t-          | j                  nd'| j
        t-          | j        d          t-          | j        d          | j        t-          | j                  nd'| j        t-          | j                  nd'| j        t-          | j                  nd'| j        t-          | j                  nd'|                    d(d!          d)
d*t-          | j        d+          t-          | j        d+          t-          | j        d          t-          |	          ||                    d,d!          d-|pd.d/d0|pd1d/|                    d2d3          d4|pd5d/d'|                    d6d7          d8d9d9d:||                    d;d!          d<t-          | j                  | j        |                    d=d!          t          t@          !                    |                    d>|                    d?d@          |                    dA|                    dBd!                    |                    dBd!          |                    dCdD          |                    dg           dEF          S )GNr   r   bullishbearishneutral72
overheated45constructiveweakz0.35z2.50	tradeablehighlowz0.08okimpairedr   z0.001crowded_longblockers
stale_dataz0.75low_reliability)midmarkoracleprev_dayday_change_pcthyperliquid_candleSnapshotcollector_default_5mcollector_default_4hz0.01)sourceintervallookbackvolumeday_notional_volumetrend_scorez0.00)statesma_fastsma_slowscoremomentum_score)rm   rsirp   volatility_score)rm   atratr_pctrp   unknownliquidity_score)
rm   
spread_pctl2_availablebid_depth_notional_5ask_depth_notional_5buy_impact_1k_pctsell_impact_1k_pctbuy_impact_5k_pctsell_impact_5k_pctrp   hyperliquid_metaAndAssetCtxsz
0.00000001derivatives_score)rg   fundingpremiumopen_interestmark_oracle_basis_pctcrowding_staterp   coingecko_markets
not_loaded)rg   status)pending_news_and_tradingview_track_recordsentiment_scorez50.00)rg   r   rp   news_search_research_contextevent_risk_scorez70.00TF)rg   r   
risk_levelrp   research_onlyr/   r0   regime_score)r?   rp   
risk_score)reliability_scorer]   rp   r\   score_versionzconfluence_score.v1final_trade_scorefinal_scorerecommendationblock_new_entry)r   r   r   r   r\   )r   r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   )"r_   mark_pxr   rt   r   prev_day_px	oracle_pxrn   ro   rr   ry   rx   r   r   listgetr]   appendr   r   r   upperr   rj   day_ntl_vlmrz   r{   r|   r}   r~   r   r   dictfromkeys)rJ   rK   r?   rG   rH   rI   r_   ru   rc   r   trend_statemomentum_statevolatility_stateliquidity_stater   r\   s                   r   build_normalized_coin_snapshotr   U   sY   Wq[[#''ckC$'!GGd37C   GEH_WXEXEX]`cd]d]dT#/AAAjqrujvjvNPSP]`aPaPafifqtufufuDs}!<cmLLL  |C  DG  |H  |H"|cl::scl?R?R))eheqtw  uA  fA  fAXaXa  GPK%(Wwt}}%<%<\\TWT[_fgk_l_lTlTl..rxN&-foo&S&S&S&SGFOO&S&S&S&S&S{{cjmtu{m|m|c|c|Y_Y_  CH!.  D3>3MRUR`dklrdsdsRsRsdd  zDO'*{WX5F5F'F'F#+X_`gXhXhJhJh^^nwNN&&z228b99H
~ &%%%
wv..)***!X^^c77s{OO''3?++ 00
 
 3..V,,#%cov#>#>
 
 !3<((3<((#''v>>	
 
 $cg;;#''(8&AA
 
 &cg;;'{{#''(:FCC	
 
 %030J"S^,,,PY,$&s'?$H$H$&s'?$H$H>A>S>_C$9!:!:!:en@C@V@b"S%;"<"<"<hq>A>S>_C$9!:!:!:en@C@V@b"S%;"<"<"<hq#''(96BB
 
 5#+|44#+|44 16::%'(=%>%>,#''(;VDD
 
 &`4GS_)`)` 
A"#''(97CC$
 $

 " 
4"##''(:GDD!"'%*&
 &
 +#''??
 

 "$C$9!:!:.#''f==T]]84455	
 
 ,//AVWW!/!3!34GI[I[\ikqIrIr!s!s)--mVDD,001ACTUU&**:r::
 
_V V V Vr   )r(   r)   r*   snapshotr	   r-   r
   r(   r)   r*   c                                                    pi pi pi fdt          | j                                                  D             }t	          dj        |          S )Nc                    i | ]s\  }}|t          |d                              |i           j                            |                              |                              |                    tS )scores)r?   rG   rH   rI   )r   r   r?   )rC   r   rJ   r-   confluence_dictr*   r(   r)   s      r   rE   z4build_normalized_market_snapshot.<locals>.<dictcomp>   s       D# 	,S/(2K2O2OPTVX2Y2Yis  jB  Ua  Ue  Ue  fj  Uk  Uk  {D  {H  {H  IM  {N  {N  _i  _m  _m  nr  _s  _s  t  t  t  r   zmarket_snapshot.v1)r>   r?   r@   )r4   sortedcontextsrF   r=   r?   )r   r-   r(   r)   r*   r@   r   s    ```` @r    build_normalized_market_snapshotr      s     ((**O%2LRI!rJ        1 7 7 9 9::  E $3GWaWow|}}}}r   )r   )r   r   r   r   r   r   )r   r   r   r   r   r   )rJ   r   rK   r    r?   r   rG   rL   rH   rL   rI   rL   r   r   )r   r	   r-   r
   r(   rL   r)   rL   r*   rL   r   r=   )
__future__r   dataclassesr   decimalr   r   typingr   src.market.contextr   r	   src.market.confluencer
   r   r   r   r=   r   r   r;   r   r   <module>r      s   " " " " " " ! ! ! ! ! ! * * * * * * * *       G G G G G G G G 8 8 8 8 8 8H H H H H) ) ) ) $*
 *
 *
 *
 *
 *
 *
 *
Z $
 
 
 
 
 
 
 
" ]a  JN  x| h h h h h hV TX  }A  gk 	~ 	~ 	~ 	~ 	~ 	~ 	~ 	~r   