
    Uj                     0    S r SSKrSSKJs  Jr  SSKrS r	g)u   
Тесты _compute_structural_breaks: проверяет, что std считается от доходностей, не от цен.
    Nc                     SSK Jn   Sn[        R                  " U[        S9nSUS-  -   [        R
                  R                  S5      R                  SSU5      -   nU " USS	9nUR                  oQ4oeU:H  ow(       d  [        R                  " S
U4SXV45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  n[        R                  " SU SUR                   35      S-   SU0-  n	[!        [        R"                  " U	5      5      eS=n=pv[        R$                  n[        R&                  of" U5      o" U
5      o(       Gd  [        R                  " S5      S-   S[        R                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OS[        R                  " U5      S[        R                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OS[        R                  " U5      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U
5      [        R                  " U5      S.-  n[!        [        R"                  " U5      5      eS=n=n=p[        R$                  n[        R(                  of" U5      n
SoU:*  o" U5      o(       Gd  [        R                  " SU4SX45      S[        R                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OS[        R                  " U5      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U
5      [        R                  " U5      S.-  n[        R                  " S5      S-   S[        R                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OS[        R                  " U5      U[        R                  " U5      S.-  n[!        [        R"                  " U5      5      eS=n=n=n
=n=p[        R*                  n[        R(                  odSS nU" U5      nU" U5      nSnUU:  nU(       Gd  [        R                  " SU4S UU45      S[        R                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OS[        R                  " U5      S[        R                  " 5       ;   d  [        R                  " [        5      (       a  [        R                  " [        5      OS[        R                  " U5      [        R                  " U5      [        R                  " U5      [        R                  " U5      [        R                  " U5      S!.-  n[        R                  " S"5      S#-   S$U0-  n[!        [        R"                  " U5      5      eS=n=n=n=n=n=nng)%u-  
Проверяет, что волатильность считается от доходностей (np.diff),
а не от цен. Если бы считалось от цен — std был бы огромным
на трендовых данных, и breaks были бы в основном 0.
r   )_compute_structural_breaksd   )dtypeg      ?*   g?
   )window)==)z-%(py2)s
{%(py2)s = %(py0)s.shape
} == %(py5)sbreaks)py0py2py5z
Expected (z,), got z
>assert %(py7)spy7NzAll values must be finitez
>assert %(py10)s
{%(py10)s = %(py2)s
{%(py2)s = %(py0)s.all
}(%(py8)s
{%(py8)s = %(py5)s
{%(py5)s = %(py3)s.isfinite
}(%(py6)s)
})
}np)r   r   py3r   py6py8py10g      ?)<=)zJ%(py8)s
{%(py8)s = %(py5)s
{%(py5)s = %(py3)s.abs
}(%(py6)s)
} <= %(py11)s)r   r   r   r   py11z!Breaks must be clipped to [-1, 1]zJ
>assert %(py15)s
{%(py15)s = %(py2)s
{%(py2)s = %(py0)s.all
}(%(py13)s)
})r   r   py13py15(   )<)z%(py11)s
{%(py11)s = %(py2)s
{%(py2)s = %(py0)s.mean
}(%(py9)s
{%(py9)s = %(py5)s
{%(py5)s = %(py3)s.abs
}(%(py7)s)
})
} < %(py14)s)r   r   r   r   r   py9r   py14z'On steady trend, breaks should be smallz
>assert %(py16)spy16)models.expertsr   r   arangefloatrandomdefault_rngnormalshape
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_saferepr_format_assertmsgAssertionError_format_explanationallisfiniteabsmean)r   ntcloser   @py_assert1@py_assert4@py_assert3@py_format6@py_format8@py_assert7@py_assert9@py_format11@py_assert10@py_assert14@py_format12@py_format16@py_assert6@py_assert8@py_assert13@py_assert12@py_format15@py_format17s                          =/home/ai/projects/AI_Strategy/tests/test_structural_breaks.py.test_structural_breaks_uses_returns_not_pricesrH      s    : 	A
		!5!A!c'MBII11"5<<QQGGE'b9F<<G4G4GGGG<GGGGGG6GGGG6GGG<GGG4GGGG:aS!GGGGGGGG66C"++C+f%C6%&C&CC(CCCCCCC2CCCC2CCC6CCCCCC"CCCC"CCC+CCCCCCfCCCCfCCC%CCC&CCCCCC66M"&&M&.MCMC'M6M(M(MMM.MMMMMM"MMMM"MMM&MMMMMMMMMMMMM.MMMCMMMM*MMMMMMM2MMMM2MMM6MMM(MMMMMMM77X266X+X6+&X7&'X#X'#-XXXX'#XXXXXX2XXXX2XXX7XXXXXX2XXXX2XXX6XXX+XXX&XXX'XXX#XXXX/XXXXXXXXX    )
__doc__builtinsr'   _pytest.assertion.rewrite	assertionrewriter%   numpyr   rH    rI   rG   <module>rQ      s      YrI   