+
    pi                        ^ RI t^ RIt^ RIHt ^ RIHt ^ RI	t	]! ]
4      P                  4       P                  ^,          t]R,          t]! ]4      ]	P                   9  d"   ]	P                   P#                  ]! ]4      4       ^ RIHt ^ RIHt R tRR R lltRR	 R
 lltRR R llt]R8X  d   ]! ^x^R7      t. ROt]! ]],          P=                  ^
4      4       ]! ]],          P?                  ^
4      4       ]! R] ! ]4      4       ]! R]R,          PC                  4       R]R,          PE                  4       4       ]! R4       ]! ]RR.,          PG                  4       4       R# R# )    N)Pathsrc)load_eurusd)build_spread_featuresc                     \        4       P                  4       p V P                  V R ,          P                  P	                  4       R7      P                  RRR7      P                  RR7      P                  R4      P                  RR7      pVR,          P                  4       VR	&   \        4       P                  4       pVP                  V. RO,          RR
R7      pVP                  4       P                  RR7      pV# )datetime)dater	   F)as_indexclose)r   Tdropeurusd_return_1dinner)onhow)r   last)r	   spread_2y_change_1dspread_10y_change_1d	spread_2y
spread_10y)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    c                D    V ^8  d   QhR\         P                  R\        /# )   r%   windowpd	DataFrameint)formats   "r&   __annotate__r1   3   s      r|| S r(   c                    V P                  4       p \        P                  ! \        V 4      \        P                  4      p\        P                  ! \        V 4      \        P                  4      p\        V\        V 4      4       F  pV P                  WA,
          V P                  4       pVR R.,          pVR,          p\        P                  ! V4      p\        P                  ! Wv4      P                  4       pVP                  P                  R \        P                  4      W$&   VP                  P                  R\        P                  4      W4&   K  	  W R&   W0R&   V # )r   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_betasrH   3   s    	Bggc"grvv&Gwws2w'H63r7#A&++-)+ABC%&OOAq  "\\%%&;RVVD
ll&&'=rvvF $  }!~Ir(   c                D    V ^8  d   QhR\         P                  R\        /# )r*   r%   smooth_spanr,   )r0   s   "r&   r1   r1   J   s      BLL s r(   c                    V P                  4       p V R ,          P                  VRR7      P                  4       V R&   V R,          P                  VRR7      P                  4       V R&   V R,          P                  RRR7      V R&   V R,          P                  RRR7      V R&   V R,          P	                  ^4      V R	&   V R,          P	                  ^4      V R
&   V # )r3   F)spanadjustbeta_2y_smoothr4   beta_10y_smoothgQ?)lowerupperg?rA   rB   gg{Gz)r   ewmmeanclipshift)r%   rJ   s   &&r&   smooth_clip_and_shift_betasrV   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                0    V ^8  d   QhR\         R\         /# )r*   r+   rJ   )r/   )r0   s   "r&   r1   r1   \   s      S S r(   c                     \        4       p\        W R 7      p\        W!R7      pVR,          VR,          ,          VR,          VR,          ,          ,           VR&   VP                  . R
OR7      P	                  RR	7      pV# ))r+   )rJ   rA   r   rB   r   predicted_return_1d)subsetTr   )r   rA   rB   rY   )r'   rH   rV   r!   r   )r+   rJ   r%   model_dfs   &&  r&   build_rolling_beta_modelr\   \   s    		B		2B	$R	AB 	9011
:233	4 
 yy
   ktk  Or(   __main__)r+   rJ   r	   rA   rB   z
Rows:zDate range:toz
Beta summary:)x   )   )r_   r`   )
r	   r   r   r   r   r3   r4   rA   rB   rY   )$pandasr-   numpyr5   statsmodels.apiapir;   pathlibr   sys__file__resolveparents	BASE_PATHSRC_PATHstrpathappendingestion.price_loaderr   features.yield_spreadsr   r'   rH   rV   r\   __name__r%   colsprintheadtailr7   minmaxdescribe r(   r&   <module>rz      s       
N""$,,Q/	ux= HHOOCM" . 8D.$. z	!"	=BD 
"T(--
	"T(--
	)SW	-F)4F1AB	
	"i$
%
.
.
01/ r(   