
    ޿i                    <    d Z ddlmZ 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ddZy)u+  
Regime classifier — port fedele V15 _determine_regime_multitf.

Extracted from V15 monolith into a pure function so V16 can call
it from the TechSnapshot builder without dragging the router state.

Output regimes:
  - TRENDING       : strong, TF allowed on pullbacks
  - TRENDING_SOFT  : moderate, MR allowed (TF skipped)
  - BREAKOUT       : volatility spike, SKIP both Brains
  - RANGING        : neither, MR-on-extremes only

The caller passes the relevant tech fields explicitly (no dict),
keeping this function side-effect-free and unit-testable.
    )annotationsc                   | dk  r|dk(  r
|dk\  rddg fS | dkD  r|dk(  r
|dk\  rddg fS |d	kD  r|rd
dg fS |dkD  r
|dk\  rddg fS |dkD  r
|dk\  rddg fS |dk\  r"|r|dk(  r
| dkD  rddg fS |r|dk(  r
| dk  rddg fS g }| dk  r|dk(  r|j                  d| dd|        | dkD  r|dk(  r|j                  d| dd|        |dkD  r|dk\  r|j                  d|dd|        |s|r|dk\  r|j                  d | d!| d|        d"d#|fS )$u   
    Returns (regime, reason, near_trending_diagnostics).

    near_trending_diagnostics: list of human-readable strings describing
    "why this is RANGING but close to TRENDING" — useful for log analytics
    during calibration.
       BEARISH_EXPANSION   TRENDINGz%H1 strong bearish (RSI<30+exp+mat>=3)F   BULLISH_EXPANSIONz%H1 strong bullish (RSI>70+exp+mat>=3)g       @BREAKOUTzVolatility breakoutg?zATR+maturity confirm (ATR>1.3)g?TRENDING_SOFTz&ATR moderate (1.1-1.3) - routing to MR2   zStruct bull: HH+HL confirmed H1zStruct bear: LH+LL confirmed H1(   zbearish: RSI_H1=z.0fz<40+EXP mat=<   zbullish: RSI_H1=z>60+EXP mat=g      ?   zATR=z.2fz mat=zstruct: bull=z bear=RANGINGzMulti-TF neutral)append)rsi_h1market_structuretrend_maturity	atr_ratio	vol_spikeh1_struct_bullh1_struct_bearnears           &/home/work/apex_v16/analysis/regime.pydetermine_regimer      s   " {'+>>>UVCVBBFF{'+>>>UVCVBBFF 390"44 3>Q.;R??3>Q. H"LL .2EE&SU+@"DD.2EE&SU+@"DD D{'+>>&vcl,~>NOP{'+>>&vcl,~>NOP3>Q.d9S/~.>?@.n.AN+6.1A~FVW	
 ($..    N)r   floatr   strr   intr   r   r   boolr   r!   r   r!   returnztuple[str, str, list[str]])__doc__
__future__r   r    r   r   <module>r&      s`     #4/4/4/ 4/ 	4/
 4/ 4/ 4/  4/r   