
    iJ                        d Z ddlZddlZddlmZmZmZ ddlZ	ddl
Z
ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ ddlmZmZ ej8                  j;                  ej8                  j=                  e            Z dejB                  z   dz   Z" e	jF                  e ejB                  z   e"z         Z$dejB                  z   dz   Z% e	jF                  e ejB                  z   e%z         Z& ejN                         jP                  Z) e	jT                  ddd      e)_+        e)d   Z, ee)d         Z-d Z.d Z/d$dZ0d Z1d Z2d Z3e
jh                  jj                  d        Z6d Z7d Z8d Z9d Z:d  Z;d! Z<d" Z=d# Z>y)%zW
Tests for recursive least squares models

Author: Chad Fulton
License: Simplified-BSD
    N)assert_allcloseassert_equalassert_raises)norm)	macrodata)GLM)OLS)RecursiveLS)recursive_olsresiduals)add_constant)aicbicresultszresults_rls_R.csvzresults_rls_stata.csvz
1959-01-01z
2009-07-01QS)startendfreqcpim1c                     t        t        j                  t        j                        } | j	                         }t        t        t              }|j	                         }t        |j                  |j                         t        t        t        d   j                        } | j	                         }t        t        t        d         }|j	                         }t        |j                  |j                         y )Nr   )	r
   endogvaluesexogfitr	   r   paramsdtamodresmod_olsres_olss       t/home/ubuntu/crypto_trading_bot/.venv/lib/python3.12/site-packages/statsmodels/regression/tests/test_recursive_ls.py
test_endogr#   '   s    
ellDKK
0C
'')C %GkkmGCJJ/ eSY--
.C
'')C %T#GkkmGCJJ/    c            	      	   t        t        t        d         } | j                         }t	        t        t        d         }|j                         }t        |j                  |j                         t        |j                  |j                         t        |j                  j                  d   |j                         | j                  d d df   t        j                  | ddd d d d f   |j                  z  d      z
  }t        ||j                         |j                  |j                  |j                        }t        |j                   |       t        j                  |j"                  ddd f   |j                  j                  d   dz  z  d	z        | j$                  z  }t        j&                  t)        j*                  |j,                  d|dz  
            j                         }t        ||j.                         |j1                  dt        j2                  d            }t        ||j5                  t        j2                  d                   t        |j6                  |j6                         t        |j8                  |j8                         t        |j:                  |j:                         t        |j<                  |j<                         t        |j>                  |j>                         t        |j@                  |j@                         t        |jB                  |jB                         t        |jD                  |jD                         |jG                  d      }|jG                  d      }t        |jH                  |jH                         t        |jJ                  |jJ                  d       |jM                  d      }|jM                  d      }t        |jH                  |jH                         t        |jJ                  |jJ                  d       tO        ||jP                  |jR                        }t        ||jN                         tU        ||jP                  |jR                        }	t        |	|jT                         y )Nr   r   r   r   designaxisscale         ?   locr+   
   )r,   r,   r1   r'   )r1   r,   m1 = 0V瞯<atol)+r
   r   r   r   r	   r   r   bsefilter_resultsobs_covr+   npsumsmoothed_stateresidloglikellf_recursivestandardized_forecasts_errornobslogr   pdfresid_recursivellfforecastonespredictessssrcentered_tssuncentered_tssrsquared	mse_model	mse_resid	mse_totalt_test	statisticpvaluef_testr   nobs_effectivedf_modelr   )
r   r   r    r!   actualdesiredscale_alternativellf_alternative
actual_aic
actual_bics
             r"   test_olsr]   ;   sX   
eSY
'C
'')C%T#GkkmG CJJ/CGGW[[) C&&..t4gmmD YYq!t_rvvHaA!3!33!  F FGMM*
 oognnGMMoBGC%%w/
 	00AB7$$,,T2c9: 		
 ((	  ff$$!3Dc3IJ	ce  OW[[1 \\"RWWZ%8\9FFGOOBGGG,<=> CGGW[[)CGGW[[)C$$g&:&:;C&&(>(>?CLL'"2"23 CMM7#4#45CMM7#4#45CMM7#4#45 ZZ!FnnX&GF$$g&7&78FMM7>>>ZZ!FnnX&GF$$g&7&78FMM7>>> _c&8&8#,,GJJ,_c&8&8#,,GJJ,r$   c           	         t         j                  }t        t         ddg         }t        |||       }|j	                         }t        ||      }| |j	                         }n|j                  |       }t        |j                  |j                         t        |j                  |j                  d       t        |j                  j                  d   |j                         t        |j                  dz
  |j                         |j                  d d df   t!        j"                  |d	dd d d d f   |j$                  z  d
      z
  }t        ||j&                  d       |j)                  |j                  |j                        }t        |j*                  |       t!        j"                  |j,                  ddd f   |j                  j                  d   dz  z  dz        |j.                  z  }	t!        j0                  t3        j4                  |j6                  d|	dz              j#                         }
t        |
|j8                         | Wt!        j:                  d      }|j=                  d|      }t        ||j?                  t!        j:                  d                   n2t!        j:                  d      }tA        tB        |j<                  d|       |jE                  d      }|jE                  d      }t        |jF                  |jF                         t        |jH                  |jH                  d       |jK                  d      }|jK                  d      }t        |jF                  |jF                         t        |jH                  |jH                         tM        |
|jN                  |j                        }t        ||jL                         y )Nunempr   constraintsư>r5   r&   r,   r   r'   r(   gHz>r*   r-   r.   r/   )r,      r1   r1   r2   )r1   rc   )r.   rc   r1   r3   r4   )(r   inflr   r
   r   r   fit_constrainedr   r   r7   r8   r9   r+   r   rV   r   r:   r;   r<   resid_responser>   r?   r@   rA   rB   r   rC   rD   rE   rG   rF   rH   r   NotImplementedErrorrQ   rR   rS   rT   r   rU   )ra   r   r   r   r   mod_glmres_glmrW   rX   rY   rZ   r'   r[   s                r"   test_glmrj      s
    HHEWdO,-D
eT{
;C
'')C%G++-))k)B CJJ/CGGW[[t4 C&&..t4gmmD !7#3#34 YYq!t_rvvHaA!3!33!  F FG22>
 oognnGMMoBGC%%w/
 	00AB7$$,,T2c9: 		
 ((	  ff$$!3Dc3IJ	ce  OW[[1 $b00@ AB$)3<<FK ZZ!FnnX&GF$$g&7&78FMM7>>>ZZ!FnnX&GF$$g&7&78FMM7>>2 _c&8&8#,,GJJ,r$   c                      t        d       y )Nm1 + unemp = 1r`   )rj    r$   r"   test_glm_constrainedrn      s    )*r$   c                      t        t        t              } | j                         }t	        t        t              }|j                         }t        |j                  |j                         y N)r
   r   r   filterr	   r   r   r   r   s       r"   test_filterrr      sD    
eT
"C
**,C %GkkmGCJJ/r$   c                     t        t        t              } | j                         }t	        | j
                  d       t        |j                  j                  d d ddf   j                  t        j                  d d ddg   d       t        |j                  j                  d d d	d
f   j                  t        j                  dd ddg          t        |j                  j                  d d dd f   j                  t        j                  dd  ddg          t        t        t              }|j                         }t        |j                  |j                         y )Nr   r.   r1      beta1beta2h㈵>rtol	                  )r
   r   r   r   r   start_paramsr   recursive_coefficientsfilteredT	results_Rilocr	   r   r   s       r"   test_estimatesr      s#   
eT
"C
'')C !!1%
 ""++AqtG466rGW-.
 ""++AqtG466qgw/0 ""++ArsF355rsWg./ %GkkmGCJJ/r$   c                    t        t        ddg         }t        t        |      }|j	                         }	 ddlm}  |        |j                         }|j                  dg      }|j                  g d      }|j                         }dD ]  }|j                  |      } t        t        |j                  d	       |j                         }t        t        j                  |j                        }|j	                         }|j                         }|j                         }|j                         }y # t        $ r Y w xY w)
Nr   popr   )register_matplotlib_converters)	variables)r   r   r   ){Gz?皙?alpharh|?)r   r   r
   r   r   pandas.plottingr   ImportErrorplot_recursive_coefficient
plot_cusumr   
ValueErrorplot_cusum_squaresr   )close_figuresr   r   r   r   figr   s          r"   
test_plotsr     s,   T5M*+D
eT
"C
'')CB&( 
(
(
*C 
(
(D6
(
:C 
(
(3C
(
DC ..
C  *nn5n)* *cnnE: 
 
 
"C ellDKK
0C
'')C 
(
(
*C ..
C 
 
 
"CE  s   D4 4	E ?E c                      t        j                  dt              } | j                         }t	        j                  dt              }|j                         }t        |j                  |j                         y )Nzcpi ~ m1)data)r
   from_formular   r   r	   r   r   r   s       r"   test_from_formular   M  sP    

"
":C
8C
'')C z4GkkmGCJJ/r$   c                     t        t        t              } | j                         }t	        |j
                  dd j                  t        j                  d d d          t	        |j
                  dd j                  t        j                  dd d          t	        |j
                  d	d  j                  t        j                  d
d  d          t	        |j
                  dd  t        j                  dd  d   dd       t        t        t              }|j                         }t        |      d   dd  }t	        |j
                  dd  |       y )Nr.   r1   rt   	rec_residrz   r{   r|   r}   r~   r   rc   rrrw   r6   ry      )r
   r   r   r   r   rD   r   r   r   results_statar	   r   )r   r   r    r!   desired_resid_recursives        r"   test_resid_recursiver   X  s   
eT
"C
'')C C''"-//1CK1PQC''"-//"1Ek1RSC'',..	rs0CK0PQ AB!3!3AB!7!=Dt
 %GkkmG4W=a@DC''+-DEr$   c           	         ddl m} t        j                  j	                  d      }|j                         }t        d|j                  d         D ]!  }||xx   dd||dz
     z  z   ||   z   z  cc<   #  ||dd  dd	
      j                         }t        j                  t        d      5  t        |       d d d        y # 1 sw Y   y xY w)Nr   )ARIMA   r,   r   g?r{   )r,   r   r   c)ordertrendz!res a regression results instancematch)statsmodels.tsa.arima.modelr   r:   randomstandard_normalcopyrangeshaper   pytestraises	TypeErrorr   )reset_randomstater   eyir   s         r"   %test_recursive_olsresiduals_bad_inputr   m  s    1
		!!#&A	A1aggaj! ,	!cAa!eHn$qt++,
"#is
3
7
7
9C	y(K	L $s#$ $ $s   *B??Cc                     t        t        t              } | j                         }|j                  }|j
                  t        j                  |j                  |d  d      z  }||j                  |   z  }|t        j                  |j                  |dz   d  d      z  }|dd  }t        |t        j                  dd  d   dd       t        t        t              }|j                         }t        |      d   dd  }t        |j
                  |d	       |j                  d
dt        j                  |dz   |j                               }t        j                  dd  ddg   j"                  }t        ||d	       |j                  d
dt        j                  ||j                               }t        |      d   }t        ||       t%        t&        |j(                  d       y )Nr,   )ddofrc   cusumrb   rw   r   rx   皙?r   r   pointslwuwr   r   r   )r
   r   r   r   nobs_diffuser   r:   stdrD   r   r   r   r	   r   _cusum_significance_boundsarangerA   r   r   r   "_cusum_squares_significance_bounds)	r   r   dr   r    r!   desired_cusumactual_boundsdesired_boundss	            r"   
test_cusumr   y  s   
eT
"C
'')C 	AIIs22126Q??E	S  ##E	RVVC''A0q99E!"IEE=--ab1':DQ %GkkmG*73B7;MCII}48
 22299QUCHH#= 3 M #''+T4L9;;NM>= 22299Q#9 3 M ,G4R8NM>2 *cDDERr$   c            	         t        t        t        d      } t        j                  t
              5  | j                         }d d d        t        j                  |j                        }t        |j                  dd  t        j                  dd  d   dd       t        |j                  t        j                  dd  d   d       t        |j                  t        j                  dd  d   d       |j!                  d	d
t#        j$                  |dz   |j&                  dz               }t        j                  dd  ddg   j(                  }t        ||d       |j+                  d	t#        j$                  |dz   |j&                  dz               }t        j                  dd  ddg   j(                  }t        ||d       y # 1 sw Y   xY w)Nrc   )loglikelihood_burnr   rw   r   r   r5   cusum2r   r   r,   r   r   r   )r   r   lwwuwwr   )r
   r   r   r   warnsUserWarningr   maxr   r   r   rD   r   r   r   cusum_squaresr   r:   r   rA   r   r   )r   r   r   r   r   s        r"   
test_statar     s   
eTa
8C	k	" ggiCc445AAB!3!3AB!7!=Dt CII}11!"5g>TJC%%}'9'9!"'=h'GdS22299QUCHHqL#A 3 M #''+T4L9;;NM>= ::299QUCHHqL9 ; M #''+UEN;==NM>=- s   GGc                     t         d   } t        t         ddg         }t        | |d      }|j                         }g d}t	        |j
                  |       g d}t        j                  |j                        }t	        |d   |d   d	
       t	        |dd  |dd  d
       d}t        j                  |j                  ddd f   |j                  j                  d   dz  z  dz        |j                  z  }t        j                  t        j                   |j"                  d|dz              j                         }t	        ||       y )Nrd   r   r_   rl   r`   )҆ٲIg礻F^/?) ?UO¢$A?r   r   r   r5   r,   -C6?~I/or&   r-   r.   r/   r   r   r
   r   r   r   r:   asarrayr7   r;   r@   r8   r9   rA   rB   r   rC   rD   )r   r   r   r   rX   r7   rY   rZ   s           r"   test_constraints_statar     s9   KET7O,-D
eT/?
@C
'')C DGCJJ( 9G
**SWW
CCFGAJT2CGWQR[t4 !G
 	00AB7$$,,T2c9: 		
 ((	  ff$$!3Dc3IJ	ce  OW-r$   c                     t         d   } t        t         g d         }ddg}t        | ||      }|j                         }g d}t	        |j
                  |d       g d	}t        j                  |j                        }t	        |d
   |d
   d       t	        |dd |dd d       d}t        j                  |j                  d
dd f   |j                  j                  d   dz  z  dz        |j                  z  }t        j                  t        j                   |j"                  d
|dz              j                         }t	        ||       y )Nrd   )r   r_   r   rl   zcpi = 0r`   )r   r   r   r   g|=r5   )r   r   r   r   r   r   r,   r   r   r   r&   r-   r.   r/   r   )	r   r   ra   r   r   rX   r7   rY   rZ   s	            r"   test_multiple_constraintsr     sH   KE234D 	K
 eT{
;C
'')C GGCJJe4 <G
**SWW
CCFGAJT2C"Iwq}48 !G
 	00AB7$$,,T2c9: 		
 ((	  ff$$!3Dc3IJ	ce  OW-r$   c                  z   t        g dg d      } t        j                  t        d      5  | j	                  ddi      5  | j                          d d d        d d d        t        j                  t        d      5  | j                  ddi       d d d        y # 1 sw Y   IxY w# 1 sw Y   MxY w# 1 sw Y   y xY w)N)r   r,   r   r,   )r,   r,   r,   r,   z2Linear constraints on coefficients should be givenr   constr   )r
   r   r   r   
fix_paramsr   re   )r   s    r"   test_fix_paramsr     s    
lL
1C	R
  ^^WcN+ 	GGI	 
R
 , 	WcN+, ,	 	 , ,s/   B% BB%<B1B"	B%%B.1B:rp   )?__doc__osnumpyr:   numpy.testingr   r   r   pandaspdr   scipy.statsr   statsmodels.datasetsr   statsmodels.genmod.apir   #statsmodels.regression.linear_modelr	   #statsmodels.regression.recursive_lsr
   statsmodels.stats.diagnosticr   statsmodels.toolsr   statsmodels.tools.eval_measuresr   r   pathdirnameabspath__file__current_pathsepresults_R_pathread_csvr   results_stata_pathr   load_pandasr   r   
date_rangeindexr   r   r#   r]   rj   rn   rr   r   mark
matplotlibr   r   r   r   r   r   r   r   r   rm   r$   r"   <module>r     sl   
  F F    * & 3 ; ? * 4wwrwwx89RVV#&99BKKrvv->?	'*AA L26614FFGi""BMM,TJ	E
CI0(T-nX-|+00< ,# ,#^0F*	$-S`>8#.L(.V,r$   