
    iS                        d dl Z d dlZd dlZd dlmZ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 d dlmZmZmZ d d	lmZ d
dlmZ d
dlmZ d
dlmZ  G d d      Z G d de      Z  G d de      Z! G d de      Z" G d d      Z# G d d      Z$ G d d      Z% G d de%      Z& G d de%      Z' G d  d!e%      Z( G d" d#e%      Z) G d$ d%      Z* G d& d'      Z+ G d( d)e+      Z,y)*    N)assert_allcloseassert_equal)datasets)add_constant)Holder)ConvergenceWarning)truncatedpoissontruncatednegbin)TruncatedLFPoissonTruncatedLFNegativeBinomialPHurdleCountModel)DATA   )RandHIE)results_truncated)results_truncated_stc                   x    e Zd Zd Zd Zd Zd Zd Zd Ze	j                  j                  edd	      d
        Zy)CheckResultsc                 r    t        | j                  j                  | j                  j                  dd       y )Nh㈵>atolrtol)r   res1paramsres2selfs    u/home/ubuntu/crypto_trading_bot/.venv/lib/python3.12/site-packages/statsmodels/discrete/tests/test_truncated_model.pytest_paramszCheckResults.test_params   s'    		(($))*:*:!	.    c                 r    t        | j                  j                  | j                  j                  dd       y )Nr   Hz>r   )r   r   llfr   r   s    r   test_llfzCheckResults.test_llf#   s     		tyy}}4dKr!   c                 z    t        | j                  j                         | j                  j                  dd       y )NMbP?r   r   )r   r   conf_intr   r   s    r   test_conf_intzCheckResults.test_conf_int&   s*    		**,dii.@.@!	.r!   c                 p    t        | j                  j                  | j                  j                  d       y )Nr'   r   )r   r   bser   r   s    r   test_bsezCheckResults.test_bse*   s    		tyy}}4@r!   c                 r    t        | j                  j                  | j                  j                  dd       y N{Gz?g-q=r   )r   r   aicr   r   s    r   test_aiczCheckResults.test_aic-        		tyy}}4eLr!   c                 r    t        | j                  j                  | j                  j                  dd       y r/   )r   r   bicr   r   s    r   test_biczCheckResults.test_bic0   r3   r!   zOccasional failureF)raisesreasonstrictc                 P   | j                   j                  }t        j                  t	        | j                   j
                              }t        j                         5  t        j                  dt               |j                  |dz  d      }d d d        j                  d   r[t        |j
                  | j                   j
                  dd	       t        |j                  | j                   j                  dd	       y t        j                  d
t               y # 1 sw Y   xY w)Nignore)categoryr0   r   )alphadisp	convergedr'   {Gzt?r   r   zL1 optimization failed)r   modelnponeslenr   warningscatch_warningssimplefilterr   fit_regularizedmle_retvalsr   r,   warnUserWarning)r   rB   r=   res_regs       r   test_fit_regularizedz!CheckResults.test_fit_regularized3   s     		DII,,-.$$& 	F!!(5GH++%*1+EG	F
 {+GNNDII,<,<!%D2GKK!%D2 MM2K@	F 	Fs   2DD%N)__name__
__module____qualname__r    r%   r)   r-   r2   r6   pytestmarkxfailAssertionErrorrN    r!   r   r   r      sV    .L.AMM [[&:5  AAr!   r   c                       e Zd Zed        Zy)TestTruncatedLFPoissonModelc                 H   t         j                  j                         }t        t	        j
                  |j                        d d d df   d      }t        |j                  |d      }|j                  dd      | _
        t               }|j                          || _        y )	N   Fprepend   
truncationnewton  methodmaxiter)r   randhieloadr   rC   asarrayexogr   endogfitr   r   truncated_poissonr   clsdatarh   modr   s        r   setup_classz'TestTruncatedLFPoissonModel.setup_classI   s|    $$&BJJtyy1!RaR%8%H Ta@77(C78y r!   NrO   rP   rQ   classmethodrp   rV   r!   r   rX   rX   H        r!   rX   c                       e Zd Zed        Zy)TestZeroTruncatedLFPoissonModelc                 F   t         j                  j                         }t        t	        j
                  |j                        d d d df   d      }t        |j                  |d      }|j                  d      | _
        t               }|j                          || _        y )NrZ   Fr[   r   r^   ra   rd   )r   re   rf   r   rC   rg   rh   r   ri   rj   r   r   zero_truncated_poissonr   rl   s        r   rp   z+TestZeroTruncatedLFPoissonModel.setup_classU   sz    $$&BJJtyy1!RaR%8%H Ta@7737'y##%r!   Nrq   rV   r!   r   ru   ru   T   rs   r!   ru   c                   "    e Zd Zed        Zd Zy)TestZeroTruncatedNBPModelc                 F   t         j                  j                         }t        t	        j
                  |j                        d d d df   d      }t        |j                  |d      }|j                  d      | _
        t               }|j                          || _        y )N   Fr[   r   r^   ra   rw   )r   re   rf   r   rC   rg   rh   r   ri   rj   r   r   zero_truncted_nbpr   rl   s        r   rp   z%TestZeroTruncatedNBPModel.setup_classa   sz    $$&BJJtyy1!RaR%8%H*4::tJ7737'y r!   c                      y NrV   r   s    r   r)   z'TestZeroTruncatedNBPModel.test_conf_intk   s    r!   N)rO   rP   rQ   rr   rp   r)   rV   r!   r   rz   rz   `   s     r!   rz   c                   .    e Zd Zed        Zd Zd Zd Zy)TestTruncatedLFPoisson_predictc                    ddg| _         t        j                  j                  d       d}t        j                  |df      }d|d |dz  df<   |j                  | j                         }t        j                  |d|j                        | _	        t        | j                  |d      }|j                  d	d
      | _        y )Nr         ?{         r   sizer^   bfgs  rb   )expected_paramsrC   randomseedrD   dotr	   rvsshaperi   r   rj   resrm   nobsrh   mu_truerB   s        r   rp   z*TestTruncatedLFPoisson_predict.setup_classp   s     #h
		swway!XdAgXq[((3../$((!'--H	"399dqA))64)8r!   c                     t        | j                  j                         j                         | j                  j                         dd       y N皙?r   r   r   predictmeanri   r   s    r   	test_meanz(TestTruncatedLFPoisson_predict.test_mean|   4    ((*//14::??3D!	.r!   c                     | j                   j                  d      j                         }t        || j                  j                         dd       y )Nvarwhichr   r   r   r   r   r   ri   r   _dispersion_factorr   vs     r   test_varz'TestTruncatedLFPoisson_predict.test_var   >    HH5)..04::>>+$TBr!   c                     | j                   }|j                  d      }t        j                  t	        j
                  d      |j                  d      d d d f   d      }t        ||dd       y )Nprobr      	mean-mainr   绽|=rA   )r   r   r	   pmfrC   aranger   r   r   prpr2s       r   test_predict_probz0TestTruncatedLFPoisson_predict.test_predict_prob   s]    hh[[v[&""IIaL#++K+8DA1FCe%8r!   NrO   rP   rQ   rr   rp   r   r   r   rV   r!   r   r   r   o   s$    	9 	9.@9r!   r   c                   .    e Zd Zed        Zd Zd Zd Zy)TestTruncatedNBP_predictc                    g d| _         t        j                  j                  d       d}t        j                  |df      }d|d |dz  df<   t        j
                  |j                  | j                   d d             }t        j                  || j                   d   dd|j                        | _
        t        | j                  |dd	      }|j                  d
dd      | _        y )N)r   r   r   i  r   r   r   r   r   )r_   pnmr   )rc   rd   maxfun)r   rC   r   r   rD   expr   r
   r   r   ri   r   rj   r   r   s        r   rp   z$TestTruncatedNBP_predict.setup_class   s    +
		twway!XdAgXq[&&#"5"5cr":;<#''S((,aH	,SYY89Q@))4d)Cr!   c                     t        | j                  j                         j                         | j                  j                         dd       y r   r   r   s    r   r   z"TestTruncatedNBP_predict.test_mean   r   r!   c                     | j                   j                  d      j                         }t        || j                  j                         dd       y )Nr   r   g?r0   r   r   r   s     r   r   z!TestTruncatedNBP_predict.test_var   r   r!   c                     | j                   }|j                  d      }t        j                  t	        j
                  d      |j                  d      d d d f   |j                  d   dd      }t        ||dd	       y )
Nr   r      r   r   r   r   r   rA   )r   r   r
   r   rC   r   r   r   r   s       r   r   z*TestTruncatedNBP_predict.test_predict_prob   sl    hh[[v[&!!IIbMKKkK*1d73SZZ^QK 	Ce%8r!   Nr   rV   r!   r   r   r      s&    D D.@9r!   r   c                       e Zd Zd Zd Zy)CheckTruncatedSTc                    | j                   }| j                  }t        |j                  |j                  d       t        |j
                  |j                  d       |j                  }|j                  j                  j                  d   }t        |j                  d | |j                  d | d       t        |j                  d | |d |df   d       t        |j                  d | |d |df   dd	       t        |j                  d | |d |d
f   dd	       t        |j                   |j"                         t        |j$                  |j&                  d   d       t        |j(                  |j&                  d   d       |j                  j*                  j                  d   }t        |j                  j*                  dk  j-                         d       t        |j.                  |t1        |j                        z
         y )N:0yE>r   gh㈵>r   r   r+   r   Mb@?rA   r|   r#   r   r   )r   r   r   r$   llllnullll_0params_tablerB   rh   r   r   r,   tvaluespvaluesr   df_modeldf_mr1   icrr5   ri   sumdf_residrE   )r   r   r   pt2kr   s         r   
test_basiczCheckTruncatedST.test_basic   s   yyyy$''5TYYT:JJOO!!!$BQRatD!c"1"a%jt<Ra(#bqb!e*4dKRa(#bqb!e*4dKT]]DII.$((2,T:$((2,T:zz%%a(djj&&*//115T]]D3t{{+;$;<r!   c                 v   | j                   }| j                  }|j                  j                  }|j	                  dd      }t        |j                  |d   d       t        |j                  |d   dd	
       |j                         d   }t        |d   |d   dd	
       t        |d   |d   dd	
       |j                  j                  j                  d      }|j                  j                  }|j	                  |d      }t        |j                  |d   d       t        |j                  |d   dd	
       |j                         d   }t        |d   |d   dd	
       t        |d   |d   dd	
       |j                  j                  }	 |j	                  d      }|tt        |j                  |d   d       t        |j                  |d   dd	
       |j                         d   }t        |d   |d   dd	
       t        |d   |d   dd	
       |j                  j                  j                  d      }|j                  j                  }|j                  j                   dz   }|j"                  d   |j                  j                   z   }|j	                  dd      }t        |j                  || |d ddf   d       t        |j                  || |d ddf   dd	
       |j                         || }t        |d d df   |d ddf   dd	
       t        |d d df   |d ddf   dd	
       |j                  j                  j                  d      }|j$                  j                  }|j"                  d   dz
  }|j	                  dd      }t        |j                  d | |d ddf   d       t        |j                  d | |d ddf   dd	
       |j                         d | }t        |d d df   |d ddf   dd	
       t        |d d df   |d ddf   dd	
       y # t        $ r d }Y w xY w)Nr   T)r   averager   g-C6
?r   r   r   r   rA   rZ   r   r]   r   )r   r   r   z	prob-baseg-C6J?)r   r   margins_meanstableget_predictionr   	predictedser(   rB   rh   r   margins_atmeans
margins_cmNotImplementedErrormargins_cprr_   r   
margins_pr)	r   r   r   rdfpredciex	start_idxr   s	            r   test_predictzCheckTruncatedST.test_predict   s   yyyy   &&""d"CAT:Qd?]]_Q1s1vDu=1s1vDu= ZZ__!!!$""((""2["9AT:Qd?]]_Q1s1vDu=1s1vDu= oo##	&&t&4D DNNCF>DGGSV$UC#BBqE3q65ABqE3q65A ZZ__!!!$$$JJ))A-	IIaL4::000""">y3S"a[tL	!,c#2#q&k!	/]]_Yq)1a4#crc1f+DuE1a4#crc1f+DuE ZZ__!!!$oo##IIaL1""d"Cr*CQKdCS"a[!	/]]_Ra 1a4#crc1f+DuE1a4#crc1f+DuEC # 	D	s   P) )P87P8NrO   rP   rQ   r   r   rV   r!   r   r   r      s    =,<Fr!   r   c                   "    e Zd Zed        Zd Zy)TestTruncatedLFPoissonStc                     t         d   }g d}t         |   }t        ||      j                  dd      | _        t        j
                  | _        t        ||t         d         }|j                  dd      | _        y Ndocvisagettotchrconstr   ,  rb   r   )offset)r   r   rj   r   
results_tsresults_trunc_poissonr   
res_offsetrm   ri   
exog_namesrh   
mod_offsets        r   rp   z$TestTruncatedLFPoissonSt.setup_class  sq    X0
J%eT266f?B 7 D33'tDLI
#vsCr!   c                 0   | j                   }| j                  }t        j                  |j                        }t        j                  |j                        }t        |dd  |dd  d       t        |d   |d   dz
  d       |j                         }|j                         }t        ||d       |j                  j                  d d }|j                  j                  d d }|j                  |d      }|j                  ||d      }t        ||d       y 	Nr   r   r   r   r]   F)	transform)r   r   
r   r   rC   rg   r   r   r   rB   rh   r   	r   r   resoparamsoparams1pred1predor   offss	            r   test_offsetz$TestTruncatedLFPoissonSt.test_offset  s    yy**T[[)**T[[)WQR[t<
GAJN>u40ZZ__Ra zz  !$R51R>u40r!   NrO   rP   rQ   rr   rp   r  rV   r!   r   r   r     s    	D 	D1r!   r   c                   "    e Zd Zed        Zd Zy)TestTruncatedNegBinStc                     t         d   }g d}t         |   }t        ||      j                  dd      | _        t        j
                  | _        t        ||t         d         }|j                  dd      | _        y r   )r   r   rj   r   r   results_trunc_negbinr   r   r   s        r   rp   z!TestTruncatedNegBinSt.setup_class0  sv    X0
J/t<@@IL A N221%9=fG
#vsCr!   c                 0   | j                   }| j                  }t        j                  |j                        }t        j                  |j                        }t        |dd  |dd  d       t        |d   |d   dz
  d       |j                         }|j                         }t        ||d       |j                  j                  d d }|j                  j                  d d }|j                  |d      }|j                  ||d      }t        ||d       y r   r   r   s	            r   r  z!TestTruncatedNegBinSt.test_offset=  s    yy**T[[)**T[[)WQR[t<
GAJN>u40ZZ__Ra zz  !$R51R>u40r!   Nr  rV   r!   r   r  r  .  s    
D 
D1r!   r  c                       e Zd Zed        Zy)TestTruncatedLFPoisson1Stc                     t         d   }g d}t         |   }t        ||d      j                  dd      | _        t        j
                  | _        y )Nr   r   r   r^   r   r   rb   )r   r   rj   r   r   results_trunc_poisson1r   rm   ri   r   rh   s       r   rp   z%TestTruncatedLFPoisson1St.setup_classS  sM    X0
J%4Acc- 	 44r!   Nrq   rV   r!   r   r  r  Q  s    5 5r!   r  c                       e Zd Zed        Zy)TestTruncatedNegBin1Stc                     t         d   }g d}t         |   }t        ||d      j                  dd      | _        t        j
                  | _        y )Nr   r   r   r^   r`   r   rb   )r   r   rj   r   r   results_trunc_negbin1r   r  s       r   rp   z"TestTruncatedNegBin1St.setup_class`  sM    X0
J/4Ac3c/ 	 33r!   Nrq   rV   r!   r   r  r  ^  s    4 4r!   r  c                   (    e Zd Zed        Zd Zd Zy)TestHurdlePoissonRc                     t         d   }g d}t         |   }t        ||      j                  dd      | _        t        j
                  | _        y )Nr   )r   r   r   r`   r   rb   )r   r   rj   r   	results_thurdle_poissonr   r  s       r   rp   zTestHurdlePoissonR.setup_classm  sK    X0
J#E4044H=@ 5 B++r!   c                 v   | j                   }| j                  }t        |j                  |j                  d       |j
                  }t        |j                  |d d df   d       t        |j                  |d d df   d       t        |j                  |d d df   dd	       t        |j                  |d d d
f   dd	       t        |j                  |j                         t        |j                  |j                  |j                  z
         t        |j                  |j                  d       t!        j"                  t!        j$                  d
d      t!        j$                  d
      f      }|j&                  |d d d f   |f   }t        t!        j(                  |j+                               |dd	       y )Nr   r   r   r   r+   r   r   r   rA   r|   r#      -C6?)r   r   r   r$   loglikr   r   r,   r   r   r   r   df_residualr   df_nullr1   rC   concatenater   vcovrg   
cov_params)r   r   r   r   idxr  s         r   r   zTestHurdlePoissonR.test_basicv  s?   yyyy$++D9SAYT:#ad)$7c!Q$idFc!Q$idFT]]D$4$45T]]DLL43C3C$CD$((6 nnbii1oryy|<=yyQWs*+

4??#45t!	.r!   c                 H   | j                   }| j                  }|j                  j                  j	                  dd      }|j
                  j                  |      }t        j                  |       }d|z
  }t        ||j                  dd       |j
                  j                  j                  ||j                  d d       }t        ||j                  dd       |j                  j                  |d	      }t        ||j                  dd       |j                  j                  |d
	      d   |z  }	t        j                  |      |	d<   t        |	d d |j                   dd       t        ||z  |j"                  dd       |j                  |      }
t        |
|j"                  dd       |j                  |d	      }t        ||j                  dd       |j                  |d	      }t        ||j"                  d|j                   d   z
  z  dd       |j                  |d	      }	|j                  |d	      }t        |	d|z
  z  |j                  dd       |j                  |d
	      d   }t        |d d |j                   dd       d}|j                  j                  d | }|j                  |d
t        j$                  d            }|j'                  |d
t        j$                  d            }t        ||j(                  dd       |j                  d
t        j$                  d            }|j'                  d
t        j$                  d      d      }t        |j	                  d      |j(                  dd       dD ]b  }|j                  ||	      }|j'                  ||	      }t        ||j(                  dd       |j+                         j,                  |dfk(  rbJ  |j.                  d d }t        j0                  g d      }t        ||dd       y )Nr   T)keepdimsr   r   rA   rZ   r   r   r   r'   gư>gƠ>r#   mean-nonzero	prob-mainz
prob-truncr   r]   r|   r   y_valuesr   )r   r'  r   )r   r   r%  	prob-zerolinear)g	mgI;ԿgJhgBz9)?gn)Ci)r   r   rB   rh   r   results_zeror   rC   r   r   predict_zero_prob_nonzeror   results_countpredict_mean_mainsqueezepredict_probpredict_meanr   r   r   summary_framer   resid_pearsonrg   )r   r   r   r   mu1	prob_zeroprob_nzprob_nz_	mean_main	prob_mainmmmmnzptprobsk_exex5p1ap1bp2ap2br   p3ap3bresid_p1resid_p2s                             r   r   zTestHurdlePoissonR.test_predict  s   yyyyZZ__!!!d!3''+FFC4L	i-!2!2DI$$**88dkk"1oN$"3"3$TJ&&..r.E		4#9#9!	. &&..r.@CgM	zz),	!	"1t'8'8t$O	G+T->->!	. LL4,,4dC\\"K\0D22DIll2^l4T..!d6G6G6J2JK!	.LL;L7	\\"L\1	QV,d.?.?!	.Rv.q1bq	4#4#44dK jjooet$ll3fryy|lD!!#Vbiil!KS]]UC ll"))A,l?!!1*. " 0S]]UK O 	:E,,s%,0C%%c%7CCUG$$&,,q	999		: %%bq)::   	(DAr!   N)rO   rP   rQ   rr   rp   r   r   rV   r!   r   r  r  k  s     , ,.*ABr!   r  c                       e Zd Zd Zd Zy)CheckHurdlePredictc                    | j                   }| j                  }|j                  |j                  k(  sJ |j                  |j                  k(  sJ |j                  j
                  |j
                  k(  sJ t        |j                  j                        |j                  k(  sJ |j                  j                  |j                  k(  sJ |j                          y r   )
r   r   r   r   rB   k_extrarE   r   k_paramssummary)r   r   r   s      r   r   zCheckHurdlePredict.test_basic  s    yyyy}}---}}---zz!!T\\1114::(()T]]:::zz$$777 	r!   c                    | j                   }|j                  j                  }|j                  j                  }|j	                  d      j                         }t        ||j                         d       |dkD  }||   j                         }|j	                  d      j                         }t        ||d       |j	                  ||   d      j                         }t        ||d	       |j                  j	                  d      j                         }	t        |	|d	       t        |	|d
       |j	                  d      j                         }
t        |
|j                  j                         d       |j                  j	                  d      j                         }
t        |
|j                  |dkD     j                         d       t        j                  |j                  t                    t        |      z  }|j	                  d      j                  d      }t        ||dd       |j                         }t        |j                   j                  d      |d       	 |j#                          |j	                  d      j                  d      }t        ||d   d
       t        ||d   d       y # t$        $ r Y Ow xY w)Nr   r   r0   r   r   r$  g?)rh   r   r   r  r   r   r@   rA   r   r(  )r   rB   ri   rh   r   r   r   r-  residr   rC   bincountastypeintrE   get_diagnosticprobs_predicted
plot_probsImportError)r   r   ri   rh   	pred_meanmask_nzmean_nzpred_mean_nzpred_mean_nnzpred_mean_nzmpred_varfreq	pred_probdia_hnb
pred_prob0s                  r   r   zCheckHurdlePredict.test_predict  sN   yy

  zzLLvL.335		5::<d;!).%%'||.|9>>@gD9 $w-+9 % ;;?46 	wT:**222@EEGwT:}4@ <<e<,113$**.."2>%%--E-:??A$**UQY"7";";"=DI {{5<<,-E
:LLvL.33A6		4e$?%%'//44Q7O	  \\\499!<

DG$7
IaLu=  		s   +J? ?	K
KNr   rV   r!   r   rJ  rJ    s    *>r!   rJ  c                       e Zd Zed        Zy)TestHurdleNegbinSimulatedc           
         d}t        j                  t        j                  |      t        j                  dd|      f      }t        j                  |      |dz  z  }t        ||dd      }t        j                  g d      }|j                  |dt        j                  d      	      }|j                  d
      }|j                  d   }t        j                  |t        j                  |      f      }t         j                  j                  d      }	|	j                  |d
f      }
t        j                  ||
k  d
      }t        ||dd      }|j                  d      | _        d}t        |dd||dz
  |d
z
  g d      | _        y )Ni  r   r|   negbin)distzerodist)gٿr   r   r   r   r   r   2   r&  r   i\c:)axisr   rw   rZ   r  r   )zm_constzm_x1zm_alphar   x1r=   )r   rM  r   r  r   rL  r   )rC   column_stackrD   linspacer   r   arrayr   cumsumr   r   default_rngargminrj   r   r   r   )rm   r   rh   y_fakero   p_dgpr>  cdfnrnguri   mod_hnbr  s                 r   rp   z%TestHurdleNegbinSimulated.setup_class  sK    r{{1a/FGH4TAX. vt(XN67E"))B-Hll1oIIaLoosBGGAJ/0 ii##I.JJ1v		#'*"5$(08E;;s;+!VaK!	r!   Nrq   rV   r!   r   rd  rd    s    " "r!   rd  )-rF   numpyrC   rR   numpy.testingr   r   statsmodelsr   statsmodels.tools.toolsr   statsmodels.tools.testingr   statsmodels.tools.sm_exceptionsr   "statsmodels.distributions.discreter	   r
   $statsmodels.discrete.truncated_modelr   r   r   5statsmodels.sandbox.regression.tests.test_gmm_poissonr   results.results_discreter   resultsr   r  r   r   r   rX   ru   rz   r   r   r   r   r  r  r  r  rJ  rd  rV   r!   r   <module>r     s       7   0 ,  G - 3 7'A 'AT	, 		l 	 9 9D"9 "9JTF TFn1/ 1B 1,  1F
5 0 
5
4- 
4aB aBH9> 9>x% 2 %r!   