
    	`j3                     n    d dl Zd dlmc mZ d dlZd dlZ	d dl
mZmZ d dlmZmZmZmZ d Zd Zd Zd Zy)    N)LagCorrelationConfig	Transform)WalkForwardConfigevaluate_adaptive_lagevaluate_fixed_lag"moving_block_bootstrap_correlationc           	      n    t        j                  | t        j                  dt        |       d            S )Nz
2020-01-01D)periodsfreq)index)pdSeries
date_rangelen)valuess    N/Users/jameslopez/projects/TradingBot25/tests/test_adaptive_lag_walkforward.py_seriesr      s%    99V2==s6{Y\#]^^    c            
         t         j                  j                  d      } d\  }}}}| j                  |      }t        j                  |t         j
                        }t        ||      D ])  }||k  r|n|}|||z
     | j                  d      z   ||<   + t        |      t        |      }
}	t        dddd	t        j                  
      }t        |d|
j                  d         }t        |	|
|      }t        |	|
dt        j                  d|
j                  d         }|j                  }|j                   }d}||kD  }|st#        j$                  d|fd||f      dt'        j(                         v st#        j*                  |      rt#        j,                  |      ndt#        j,                  |      t#        j,                  |      t#        j,                  |      dz  }dd|iz  }t/        t#        j0                  |            d x}x}x}}|j                  }|j                   }|j                  }|j                   }d}||z   }||kD  }|s*t#        j$                  d|fd||f      dt'        j(                         v st#        j*                  |      rt#        j,                  |      ndt#        j,                  |      t#        j,                  |      dt'        j(                         v st#        j*                  |      rt#        j,                  |      ndt#        j,                  |      t#        j,                  |      t#        j,                  |      dz  }dd|iz  }t/        t#        j0                  |            d x}x}x}x}x}x}}|j2                  d   }|j4                  }|j2                  d   } ||      }|j6                  } |       }|sdt#        j,                  |      t#        j,                  |      t#        j,                  |      t#        j,                  |      t#        j,                  |      t#        j,                  |      d z  } t/        t#        j0                  |             d x}x}x}x}x}}y )!N   )i  iX     <   sizeg?)scale   F         )min_lagmax_lagwindowmin_observations	transform   ,  	estimatorevaluation_stridestart_atr   )lagr%   strider+   g      ?>zO%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.summary
}.correlation
} > %(py7)sadaptivepy0py2py4py7assert %(py9)spy9g333333?)z%(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.summary
}.correlation
} > (%(py10)s
{%(py10)s = %(py8)s
{%(py8)s = %(py6)s.summary
}.correlation
} + %(py12)s)fixed)r3   r4   r5   py6py8py10py12zassert %(py15)spy15
matures_atevaluated_atzvassert %(py11)s
{%(py11)s = %(py9)s
{%(py9)s = %(py7)s
{%(py7)s = %(py3)s
{%(py3)s = %(py1)s.ge
}(%(py5)s)
}.all
}()
})py1py3py5r6   r8   py11)nprandomdefault_rngnormalfullnanranger   r   r   LEVELSr   r   r   r   summarycorrelation
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationrecordsgeall)!rngnchange	first_lag
second_lagsource_valuestarget_valuespositionr,   sourcetargetr)   configr1   r9   @py_assert1@py_assert3@py_assert6@py_assert5@py_format8@py_format10@py_assert7@py_assert9@py_assert11@py_assert13@py_format14@py_format16@py_assert0@py_assert2@py_assert4@py_assert8@py_assert10@py_format12s!                                    r   Ctest_adaptive_walkforward_beats_wrong_fixed_lag_after_regime_changerw      s'   
))


"C'9$Avy*JJAJ&MGGArvv&M*a(#f,i*"/3"?#**SW*BX"Xh ) ]+W]-CFF$BsSIL\L\I aRXR^R^_bRcdF$VVV<Hvv2AQAQZ[flfrfrsvfwxE.''.$.'$....'$......8...8......'...$.......J''J%--J-*C*CJdJ*Cd*JJ'*JJJJJ'*JJJJJJJ8JJJ8JJJJJJ'JJJJJJ%JJJ%JJJ-JJJ*CJJJdJJJJJJJJL)T),,TX-=-=n-MT,-MNTNRRTRTTTTT)TTT,TTT-MTTTNTTTRTTTTTTTTTTTr   c                     t         j                  j                  d      } t        | j	                  d            }t        t         j
                  t        j                  dt         j                        |j                         d d f         }t        t        dddd	
      d|j                  d         }t        |||      }|j                  d   }d|j                  |j                  |kD  <   d|j                  |j                  |kD  <   t        |||      }t        j                  j!                  |j"                  |j"                  d   |k     |j"                  |j"                  d   |k            y )N	   i   r   (   ir   2      x   )r!   r"   r#   r$   
   r'   r(   i  i@B ir?   )rE   rF   rG   r   rH   r_rI   rJ   to_numpyr   r   r   r   locr   testingassert_frame_equalrW   )rZ   rb   rc   rd   beforecutoffafters          r   ;test_walkforward_uses_only_past_data_at_each_selection_timer   '   s(   
))


"CSZZSZ)*FRUU2772rvv.0A$30GGHIF&r2c\_`c"F #666:F\\#F(1FJJv||f$%(2FJJv||f$%!&&&9EJJ!!v~~l3v=>emmL1V;<r   c                  p   t         j                  j                  d      } t        | j	                  d            }t        t         j
                  t        j                  dt         j                        |j                         d d f         }t        ||dt        j                  d      }t        |j                  d   |j                  d	   d
dd      }t        |j                  d   |j                  d	   d
dd      }|j                  }|j                  }d}||kD  }	|	st!        j"                  d|	fd||f      dt%        j&                         v st!        j(                  |      rt!        j*                  |      ndt!        j*                  |      t!        j*                  |      t!        j*                  |      dz  }
dd|
iz  }t-        t!        j.                  |            d x}x}x}	}||k(  }|st!        j"                  d|fd||f      dt%        j&                         v st!        j(                  |      rt!        j*                  |      nddt%        j&                         v st!        j(                  |      rt!        j*                  |      nddz  }dd|iz  }t-        t!        j.                  |            d }|d   }d}||kD  }|slt!        j"                  d|fd||f      t!        j*                  |      t!        j*                  |      dz  }dd |iz  }t-        t!        j.                  |            d x}x}}y )!N   i  r   r   i   )r,   r%   r-   source_valuetarget_valuer~   d      )block_length	resamplesseedgGz?r.   r0   resultr2   r7   r8   )==)z%(py0)s == %(py2)sinterval_oneinterval_two)r3   r4   zassert %(py4)sr5   r   )z%(py1)s > %(py4)s)rA   r5   zassert %(py6)sr:   )rE   rF   rG   r   rH   r   rI   rJ   r   r   r   rL   r   rW   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   )rZ   rb   rc   r   r   r   re   rf   rg   rh   ri   rj   @py_format3@py_format5rq   rr   @py_format7s                    r   .test_fixed_lag_and_bootstrap_are_deterministicr   =   s)   
))


"CSZZSZ)*FRUU2772rvv.0A$30GGHIFB)BRBR[\]F5fnn^6TV\VdVdesVt  DF  RU  \^  _L5fnn^6TV\VdVdesVt  DF  RU  \^  _L>>,>%%,,%,,,,%,,,,,,6,,,6,,,>,,,%,,,,,,,,,,<''''<<''''''<'''<''''''<'''<'''''''?!T!?T!!!!?T!!!?!!!T!!!!!!!r   )builtinsrQ   _pytest.assertion.rewrite	assertionrewriterO   numpyrE   pandasr   #strategies.adaptive_lag_correlationr   r   #strategies.adaptive_lag_walkforwardr   r   r   r   r   rw   r   r    r   r   <module>r      s3         O _U,,"r   