
    pi                        S SK rS SKrS SKJr  S SKJr  S SK	r	\" \
5      R                  5       R                  S   r\S-  r\" \5      \	R                   ;  a!  \	R                   R#                  \" \5      5        S SKJr  S SKJr  S rSS	\R.                  S
\4S jjrSS	\R.                  S\4S jjrSS
\S\4S jjr\S:X  a  \" SSS9r/ SQr\" \\   RA                  S5      5        \" \\   RC                  S5      5        \" S\"" \5      5        \" S\S   RG                  5       S\S   RI                  5       5        \" S5        \" \SS/   RK                  5       5        gg)    N)Path   src)load_eurusd)build_spread_featuresc                     [        5       R                  5       n U R                  U S   R                  R	                  5       S9R                  SSS9R                  SS9R                  S5      R                  SS	9nUS
   R                  5       US'   [        5       R                  5       nUR                  U/ SQ   SSS9nUR                  5       R                  SS	9nU$ )Ndatetime)dater
   F)as_index)closelast)r   Tdropr   eurusd_return_1d)r
   spread_2y_change_1dspread_10y_change_1d	spread_2y
spread_10yinner)onhow)r   copyassigndt	normalizegroupbyaggsort_valuesreset_index
pct_changer   mergedropna)pricesdaily_pxspreadsdfs       JC:\Users\paul_\OneDrive\fx_macro_intraday\src\models\rolling_beta_model.pybuild_daily_datasetr(      s    ]!F 	6*-00::<=	%	(	$	%	V		$	  $,G#4#?#?#AH #%**,G		
  
 
B 
	 	 d	 	+BI    x   r&   windowc                    U R                  5       n [        R                  " [        U 5      [        R                  5      n[        R                  " [        U 5      [        R                  5      n[        U[        U 5      5       H  nU R                  XA-
  U R                  5       nUSS/   nUS   n[        R                  " U5      n[        R                  " Xv5      R                  5       nUR                  R                  S[        R                  5      X$'   UR                  R                  S[        R                  5      X4'   M     X S'   X0S'   U $ )Nr   r   r   beta_2y_rawbeta_10y_raw)r   npfulllennanrangeilocsmadd_constantOLSfitparamsget)	r&   r+   beta_2ybeta_10yisampleXymodels	            r'   estimate_rolling_betasrB   3   s    	Bggc"grvv&Gwws2w'H63r7#A&++-)+ABC%&OOAq  "\\%%&;RVVD
ll&&'=rvvF $  }!~Ir)      smooth_spanc                 j   U R                  5       n U S   R                  USS9R                  5       U S'   U S   R                  USS9R                  5       U S'   U S   R                  SSS	9U S'   U S   R                  S
SS	9U S'   U S   R	                  S5      U S'   U S   R	                  S5      U S'   U $ )Nr-   F)spanadjustbeta_2y_smoothr.   beta_10y_smoothggQ?)lowerupperg{Gzg?   r;   r<   )r   ewmmeanclipshift)r&   rD   s     r'   smooth_clip_and_shift_betasrQ   J   s    	B m,00k%0PUUWB~.22E2RWWYB ./4454MB0166U$6OB '(..q1ByM)*003BzNIr)   c                     [        5       n[        X S9n[        X!S9nUS   US   -  US   US   -  -   US'   UR                  / SQS	9R	                  S
S9nU$ )N)r+   )rD   r;   r   r<   r   predicted_return_1d)r   r;   r<   rS   )subsetTr   )r(   rB   rQ   r"   r   )r+   rD   r&   model_dfs       r'   build_rolling_beta_modelrV   \   s    		B		2B	$R	AB 	9011
:233	4 
 yy
   ktk  Or)   __main__)r+   rD   )
r
   r   r   r   r   r-   r.   r;   r<   rS   
   z
Rows:zDate range:r
   toz
Beta summary:r;   r<   )r*   )rC   )r*   rC   )&pandaspdnumpyr/   statsmodels.apiapir5   pathlibr   sys__file__resolveparents	BASE_PATHSRC_PATHstrpathappendingestion.price_loaderr   features.yield_spreadsr   r(   	DataFrameintrB   rQ   rV   __name__r&   colsprintheadtailr1   minmaxdescribe r)   r'   <module>rv      sP       
N""$,,Q/	ux= HHOOCM" . 8Dr|| S .BLL s $S S . z	!"	=BD 
"T(--
	"T(--
	)SW	-F)4F1AB	
	"i$
%
.
.
01/ r)   