gL iYddlZddlZddlmZmZmZmZddlm Z dZ dZ dZ dZdZdZej"j%d ej&d j)d j)d ed dd ed dd j+dgej"j%dddgdZdZdZdZej"j%dgddZdZej"j%ddeededdgd d!e"gd#eej<gdzd$gdzgd%d!gd&eej<gdzd'gdzgd(d!ggd)Zd*Z d+Z!ej"j%d,gd-d.ggd/d0ggd1Z"d2Z#d3Z$d4Z%ej"j%d5eej<d6d7gd0d.ej<d8d6gfeej<d6d7gd0d0ej<d8d6gfeej<d6d7gd.d.ej<d8d9gfeej<d6d7gd.d0ej<d8d9gfed6ej<d7gd0d.d:ej<d6gfed6ej<d7gd0d0d8ej<d6gfed6ej<d7gd.d.d:ej<d9gfed6ej<d7gd.d0d8ej<d9gfeej<d6ej<ej<d7ej<gd0d.ej<d;ej<ej<d6ej<gfeej<d6ej<ej<d7ej<gd0d0ej<d8ej<ej<d6ej<gfeej<d6ej<ej<d7ej<gd.d.ej<d;ej<ej<d9ej<gfeej<d6ej<ej<d7ej<gd.d0ej<d8ej<ej<d9ej<gfed6ej<d7dgfed6ej<d7d= 0span must satisfy: span >= 1#halflife must satisfy: halflife > 0r"alpha must satisfy: 0 < alpha <= 1)r)r)rangerpytestraises ValueError)frame_or_seriescmsgrs rtest_constructorr4sa!%%A#J3KCLt#DCTt4  EC z - c z -# sT"# z - # -C z - d  )C z - s  0C z - 1  /C ]]:S 1  EN  1##      sT; F.) F; G G6 G % G, G8.F8;GGG G),G58H cd}tjt|5tt dj t jddddy#1swYyxYw)Nztimes must be datetime64 dtype.r$rtimes)r.r/r0rr-rraranger3s r!test_ewma_times_not_datetime_typer:>sL ,C z -1uQx299Q<0111s 8AA(cd}tjt|5tt dj t jdjddddy#1swYyxYw)Nz,times must be the same length as the object.r$rr datetime64[ns]r6 r.r/r0rr-rrr8astyper9s rtest_ewma_times_not_same_lengthr?Ds\ 8C z -JuQx299Q<#6#67G#HIJJJs AA..A7cd}tjt|5tt dj dt jdjddddy#1swYyxYw)Nz/halflife must be a timedelta convertible objectr$rr r<r r7r=r9s r#test_ewma_halflife_not_correct_typerBJs^ ;C z -VuQxaryy|/B/BCS/TUVVVs AA//A8cd}tjt|5tt dj |dddy#1swYyxYw)NzKhalflife can only be a timedelta convertible argument if times is not None.r$rr)r.r/r0rr-r)halflife_with_timesr3s r test_ewma_halflife_without_timesrEPsE WC z -;uQx&9:;;;s %A  Ar7 z datetime64[D]r<2000DfreqperiodsUTC min_periodsr c*|}tjd}tj|ddd<td|i}|j |||j }|j d|j }t j||y)N$@r Ar rMr7?)r rM)rr8rrrrtmassert_frame_equal)rDr7rMr datarresultexpecteds r"test_ewma_with_times_equal_spacingrXVs}#H 99T?DD1I C; B VVX;eV L Q Q SFvvs v<AACH&(+rc*|}d}tgdj|j|}tjd}t |}|j ||j}t gd}tj||y)Nz23 days)z 2020-01-01z2020-01-10T00:04:05z2020-02-23T05:00:23rA)gE(?g *M?) r tz_localizeas_unitrr8rrrrSrT) tz_aware_fixtureunittzr r7rUrrVrWs r%test_ewma_with_times_variable_spacingraisz BHRS R  99Q @g@gG@varg2@)g=Զm5@gˁj۶@@g@m[D@ggܶmH@c :ttdtddtdddd|}d }tjt| 5|j d d }dddt |}tj||y#1swY1xYw)Nr rFr rzr{z1Support for axis=1 in DataFrame.ewm is deprecatedr$r r )raxis)rr-rSassert_produces_warning FutureWarningrrqrT)funcrWfloat_numpy_dtyperr3erVs rtest_float_dtype_ewmarsN  !Hq"%B*:;CT B >C # #M =& FF1F %& WQ  F&(+ &&s BBcttjdtdddd}t j t d5|jd d d dddy#1swYyxYw) NrOrGrHrFrI)rPtime_colztimes must be datetime64r$z1 dayrrrQ)rrr8rr.r/r0rrs rtest_times_string_col_raisesrsb iio:f3PR+ST B z)C DB QjABBBs A''A0cttdjdd}tjt d5|j dddy#1swYyxYw)Nr Frrmz sum is notr$)rr-rr.r/rwsum)rUs r(test_ewm_sum_adjust_false_notimplementedrsM %(   Ae  4D *, ?  s AA$zexpected_data, ignore)rO@g@g&@F)rOrrg)@Tctddtjdg}|jd|j }t|}t j ||y)NrFrr )rrn)rrrrrrSri) expected_dataignorerUrVrWs r test_ewm_sumrsP 2q"&&"% &D XXC6X 2 6 6 8Fm$H68,rcttjd}d|d<|jddj j }tj |dz dksJy)Nir rdF)rrmg{Gz?)rrzerosrrrabs)valsrVs rtest_ewma_adjustrs\ "((4. !DDG XX3uX - 2 2 4 8 8 :F 66&1*  $$ $rctgd}|rtgd}n tgd}|jd||j}tj||y)N)rR@g@g @)rRg?gʍ"k @gY;@)rRgRTU?gS@g @rrrmrn)rrrrSri)rmrnsrWrVs rtest_ewma_casesrsU #$A 89=> UUs6YU ? D D FF68,rc  tdgtjgdzzdgz}|jdj }t j |tdgt|zttjgdzdgztjgdzzdgz}|jdj }t j |ttjgdzdgdzzy)NrRrr r r )rrrrrrSrilen)rrVs rtest_ewma_nan_handlingrsux!|#se+,A UUqU\   F663%#a&.#9:x!|se#rvvhl2cU:;A UUqU\   F66266(Q,#*B#CDrzs, adjust, ignore_na, wrRg@Y@gVUUUUU?gUUUUUU?gqq?gj/?gI@gqq?g| %?cz|j|jt|jz j}|j d||j }t j|||dur8|j d|j }t j||yy)NrrFr)multiplycumsumrffillrrrSri)rrmrnwrWrVs rtest_ewma_nan_handling_casesrsT 1 $$&)9)9);;BBDH UUs6YU ? D D FF68,E3v.335 vx0rcLtjjdjd}tjdd}tj ||<t |}|jdj}|jdj}|jd j}|jd j}tj||tj||tj||y) Nr rr(gVR?rgƷC?r g_!@rgXlWY?r) rrandom default_rngstandard_normalr8rrrrrSri)arrlocsrabr2ds rtest_ewm_alphars ))   " 2 23 7C 99R DCIs A '(--/A %&++-A $%**,A ~&++-A1a 1a 1a rctjjdjd}tjdd}tj ||<t |}d}tjt|5|jdddd|jd |jd d }tjt|5|jd dddtjt|5|jd dddtjt|5|jd ddd|jd |jd d}tjt|5|jddddtjt|5|jd ddd|jd d}tjt|5|jddddtjt|5|jd ddd|jd |jdtjt|5|jddddy#1swY?xYw#1swYxYw#1swYxYw#1swYxYw#1swYOxYw#1swY&xYw#1swYxYw#1swYxYw#1swYyxYw)Nr rrrr(r$gr r[rdr*rg?rRg?r+rr,r) rrrrr8rrr.r/r0r)rrrr3s rtest_ewm_domain_checksrst ))   " 2 23 7C 99R DCIs A ,C z - $EEcENEEcEN (C z - 4 z - 3 z - 3EEsEOEEsEO /C z - t z - sEE3E .C z - D z - CEEEEEE z - C;   slKKK*K7$LL$LL*4L6KK'*K47LLLL'*L36L?method)rr}r~ctgtj}|jd}t ||}t j ||y)Nr{rZ)rrfloat64rrqrSassert_almost_equal)rrrrVs rtest_ew_empty_seriesrs@ "BJJ 'D ((1+C !WS& ! #F64(rr name)rr~r}cPtjjdjd}tj|ddtj|ddt |}t |jdd|}|ddjjsJ|ddjjrJt |jd||}|dk(rF|ddjjsJ|ddjjrHJ|ddjjsJ|ddjjrJt t tjd||}tj|t d t t d gjd| |}|dk(r!tj|t d gn.tj|t tjgt t tjdjd |}|jtj k(sJy) Nr 2rFrrMrrr{rrR)rMr)rrrrrrrqrisnaallanyobjectrSrir8r|r)rMrrrrVresult2s rtest_ew_min_periodsrs? ))   " 2 22 6CvvCHCIs A9WQUUrqU14 8 :F #2;    ! ! ## #bc{!%%'' ' BWQUUr{U;T B DF v~cr{!%%'''"#;##%))+++cr{!%%'''"#;##%))+++VWV&)--"+-NPT U WF66 #:;KWVSE]&&r{&CT J LF v~ vvse}5 vvrvvh'78@gfRYYr]+//R/8$?AG ==BJJ && &rcovcorrc^ttjjdj dt d}|ddtjjdj dz}tj |ddtj |jddt|jdd ||}tj|jdd jsJtj|jd djrJy) Nr rindex0rFrrrr)rrrrrr-rilocrqrisnanvaluesrr)rrPrrVs rtest_ewm_corr_covrsryy$$Q'77;59MA !" %%a(88<C z -  %%s4C-C!C!C*c|jdj}|jdj}tj||d}t j t |5|jdd dddt j t |5|jd d dddt j t |5|jd dd dddd }t j t |5|jdddy#1swYxYw#1swYxYw#1swYXxYw#1swYyxYw)NgH+@r rOrr#r$rrr'r)rr )rrr rrrs rtest_ewma_halflife_argr^s ) *//1A D !&&(A1a DC z -) R () z -) sR () z -2 sb 12 =C z - ))))22s04D6+E"EE6D?E EE#c"|}d}tjt|5|jdddd}tjt|5|jdddddtjt|5|jdddddtjt|5|jdddddy#1swYxYw#1swYxYw#1swYYxYw#1swYyxYw) Nrr$r#rOr r&)rrr")r.r/r0r)rrr3s rtest_ewm_alpha_argrnsA =C z -  EC z -# $c"# z -$ 4s#$ z -( t3'((##$$((s/C!C- C9D!C*-C69DDrcBt|jdd|}|jtddfdf}|jj d|_t|djdd||d}t j||dy)NrFrrrMr F) check_names)rqrlocslicer droplevelrSri)rrrVrWs rtest_ewm_pairwise_cov_corrr~s =WUYYBAY6 = ?F ZZta(!+ ,F<<))!,FLBwuQx|||;TB58LH68?rc|}tdgddd}|djt|d<|jdd}t ||d}||||}|rdd gngd}||j |gj d jt}t|j|k(sJtj||yy) Nr r rZrrr2r2r numeric_onlyrrTdrop) rr>rrrqagg reset_indexfloatlistcolumnsrSrT) arithmetic_win_operatorsrkernelrroprVrrWs rtest_numeric_only_framers %F !11- .BgnnV$BsG &&aQ& 'C fd #B ~. ,3*/g;??F8,88d8CJJ5QH$$%000 fh/rruse_argctgdddd}|djt|d<|r|fnd}|jdd}t ||}||d |i}|rd d gngd}||jt } |r| fnd} | jdd} t | |} | | d |i} t j|| y) Nr r rZr rZrr2ror rrrr)rr>rrrqrrSrT)rrrrrkrrrVrdf2arg2ewm2op2rWs r test_numeric_only_corr_cov_framer s 3 4BgnnV$BsG2%C &&aQ& 'C f B  0< 0F)sCjoG W+  U #CC6"D 77q7 )D $ CD4|4H&(+rr|c|}tdg|}|jdd}t||d}|tjd|r<|t ur4d|d}tj t|5|| dddy|| }|j|gjd jt} tj|| y#1swYyxYw) Nr r{r rz No op to testExponentialMovingWindow. does not implement numeric_onlyr$rTr)rrrqr.skiprr/rwrrr>rrSri) rrr|rrerrr3rVrWs rtest_numeric_only_seriesrs&F !E "C ''qa' (C fd #B z O$(0PQ ]].c : * L ) * *.77F8$00d0;BB5I vx0  * *s 3 CC$ctgd|}|r|fnd}|jdd}t||}|r;|tur3d|d}t j t | 5||d |idddy||d |i} |jt} |r| fnd} | jdd} t| |} | | d |i}tj| |y#1swYyxYw) Nrr{ror r rr r r$r) rrrqrr.r/rwr>rrSri)rrrr|rerkrrr3rVser2rrrrWs r!test_numeric_only_corr_cov_seriesrs % (C3&C ''qa' (C f B(0PQ ]].c : 0  /, / 0 0S4|4zz% !wrxxQAx.dF#8<8 vx0 0 0s ! CC):numpyrr.pandasrrrrpandas._testing_testingrSrr4r:r?rBrEmark parametrizer8r>r\rXrarfrjrurxr-rrrrrrrrrrrrrrrrrrrrrrrrr intrrrrorrrs`   (V1 J V ;   " _-445EF6R06R0<'EF- -% -E BFFC' (   VV/# 6   BFFC' (   VV/# 6   BFFC' (   VV/3D F   BFFC' (   VV/3D F   C' (   -rvvs ;   C' (  '"&&# 6   C' (   -rvv8I K   C' (  '"&&3D F   BFFC? @   VV5rvvrvvsBFF S   BFFC? @   VV/"&&"&&#rvv N   BFFC? @  0"    BFFC? @  *"    C- .  0*    C- .  0*    C- .  0AK    C- .  0A"   sDGP 1QGP 1 ! &R#9:);)A/!78&'90&'R%1 22 2 2%152354%1  2  !78-9- !78/9/   ( %1@2@0"FE?3T5M2,34,(3-0111&FE?3T5M23-011341r