{"generated_at":"2026-05-21T16:38:25.107174+00:00","generated_at_unix":1779381505,"version":"1.0.0","elapsed_seconds":2.09,"macro_context":{"macro_stress_score":49.7,"regime_label":"ELEVATED","cycle_phase":"EXPANSION-MID","expected_leaders":["XLK","XLF","XLE","XLI","XLB","XLC"]},"risk_appetite":{"score":40.2,"label":"RISK-OFF","components":4},"summary":{"n_sectors_analyzed":11,"n_rotating_in":1,"n_rotating_out":0,"top_3_leaders":[{"sym":"XLE","score":69.7},{"sym":"XLK","score":61.3},{"sym":"XLC","score":58.6}],"bottom_3_laggards":[{"sym":"XLI","score":28.3},{"sym":"XLY","score":25.5},{"sym":"XLB","score":25.5}],"leadership_alignment":{"expected_for_cycle":["XLK","XLF","XLE","XLI","XLB","XLC"],"actual_top_3":["XLE","XLK","XLC"],"matched":["XLK","XLE","XLC"],"missing_expected":["XLF","XLI","XLB"],"alignment_pct":50.0}},"sectors":[{"symbol":"XLE","name":"Energy","current_price":59.7,"cycle_fit_phases":["EXPANSION-MID","EXPANSION-LATE"],"in_current_cycle":true,"rotation_score":69.7,"score_components":{"rs_momentum":62.3,"money_flow":100,"breadth":55.4,"regime_fit":75,"sub_sector":37.0},"rs_1d_pct":0.23,"return_1d_pct":-0.16,"spy_return_1d_pct":-0.39,"rs_5d_pct":4.12,"return_5d_pct":2.82,"spy_return_5d_pct":-1.31,"rs_1m_pct":1.78,"return_1m_pct":5.6,"spy_return_1m_pct":3.82,"rs_3m_pct":1.69,"return_3m_pct":8.79,"spy_return_3m_pct":7.1,"rs_6m_pct":19.27,"return_6m_pct":31.13,"spy_return_6m_pct":11.86,"rs_slope_21d_pct_per_day":-0.0502,"rs_acceleration":0.000631,"rs_pct_rank_1y":84.1,"sma20":58.38,"sma50":58.4,"sma200":49.6,"pct_vs_sma20":2.27,"pct_vs_sma50":2.24,"pct_vs_sma200":20.38,"golden_cross_active":true,"death_cross_active":false,"chaikin_money_flow_20":0.2582,"obv_slope_10d":0.016842,"money_flow_index_14":58.4,"volume_surge_ratio":0.42,"sub_sector_check":{"sub_symbol":"XOP","sub_21d_pct":3.0,"sec_21d_pct":5.6,"leadership_spread":-2.6,"leader_confirms":false,"leader_diverges":true},"rotation_in_flags":["RS_ACCELERATING","BUYING_PRESSURE"],"rotation_out_flags":["SUB_SECTOR_FALLING"],"rotating_in":false,"rotating_out":false,"rank":1},{"symbol":"XLK","name":"Technology","current_price":176.72,"cycle_fit_phases":["EXPANSION-EARLY","EXPANSION-MID"],"in_current_cycle":true,"rotation_score":61.3,"score_components":{"rs_momentum":94.0,"money_flow":0,"breadth":69.5,"regime_fit":75,"sub_sector":79.5},"rs_1d_pct":0.15,"return_1d_pct":-0.24,"spy_return_1d_pct":-0.39,"rs_5d_pct":-0.24,"return_5d_pct":-1.55,"spy_return_5d_pct":-1.31,"rs_1m_pct":7.96,"return_1m_pct":11.78,"spy_return_1m_pct":3.82,"rs_3m_pct":18.34,"return_3m_pct":25.44,"spy_return_3m_pct":7.1,"rs_6m_pct":14.8,"return_6m_pct":26.67,"spy_return_6m_pct":11.86,"rs_slope_21d_pct_per_day":0.4814,"rs_acceleration":-0.000985,"rs_pct_rank_1y":98.8,"sma20":169.46,"sma50":152.63,"sma200":144.05,"pct_vs_sma20":4.28,"pct_vs_sma50":15.78,"pct_vs_sma200":22.68,"golden_cross_active":true,"death_cross_active":false,"chaikin_money_flow_20":0.4283,"obv_slope_10d":-0.005647,"money_flow_index_14":61.1,"volume_surge_ratio":0.46,"sub_sector_check":{"sub_symbol":"SMH","sub_21d_pct":17.68,"sec_21d_pct":11.78,"leadership_spread":5.9,"leader_confirms":true,"leader_diverges":false},"rotation_in_flags":["BUYING_PRESSURE","SUB_SECTOR_LEADING","MFI_BULLISH"],"rotation_out_flags":["RS_DECELERATING"],"rotating_in":true,"rotating_out":false,"rank":2},{"symbol":"XLC","name":"Communications","current_price":116.03,"cycle_fit_phases":["EXPANSION-EARLY","EXPANSION-MID"],"in_current_cycle":true,"rotation_score":58.6,"score_components":{"rs_momentum":29.3,"money_flow":100,"breadth":42.7,"regime_fit":75,"sub_sector":50},"rs_1d_pct":0.32,"return_1d_pct":-0.06,"spy_return_1d_pct":-0.39,"rs_5d_pct":0.38,"return_5d_pct":-0.92,"spy_return_5d_pct":-1.31,"rs_1m_pct":-5.39,"return_1m_pct":-1.57,"spy_return_1m_pct":3.82,"rs_3m_pct":-7.76,"return_3m_pct":-0.66,"spy_return_3m_pct":7.1,"rs_6m_pct":-8.09,"return_6m_pct":3.77,"spy_return_6m_pct":11.86,"rs_slope_21d_pct_per_day":-0.2302,"rs_acceleration":0.00041,"rs_pct_rank_1y":2.0,"sma20":116.27,"sma50":114.82,"sma200":115.18,"pct_vs_sma20":-0.21,"pct_vs_sma50":1.05,"pct_vs_sma200":0.74,"golden_cross_active":false,"death_cross_active":true,"chaikin_money_flow_20":-0.0921,"obv_slope_10d":0.016385,"money_flow_index_14":39.9,"volume_surge_ratio":0.57,"sub_sector_check":null,"rotation_in_flags":["RS_ACCELERATING"],"rotation_out_flags":["DISTRIBUTION"],"rotating_in":false,"rotating_out":false,"rank":3},{"symbol":"XLF","name":"Financials","current_price":51.44,"cycle_fit_phases":["EXPANSION-EARLY","EXPANSION-MID"],"in_current_cycle":true,"rotation_score":56.9,"score_components":{"rs_momentum":24.5,"money_flow":100,"breadth":39.8,"regime_fit":75,"sub_sector":53.1},"rs_1d_pct":-0.04,"return_1d_pct":-0.43,"spy_return_1d_pct":-0.39,"rs_5d_pct":1.6,"return_5d_pct":0.29,"spy_return_5d_pct":-1.31,"rs_1m_pct":-5.3,"return_1m_pct":-1.47,"spy_return_1m_pct":3.82,"rs_3m_pct":-9.1,"return_3m_pct":-2.0,"spy_return_3m_pct":7.1,"rs_6m_pct":-11.73,"return_6m_pct":0.14,"spy_return_6m_pct":11.86,"rs_slope_21d_pct_per_day":-0.2932,"rs_acceleration":0.000254,"rs_pct_rank_1y":2.4,"sma20":51.55,"sma50":50.76,"sma200":52.6,"pct_vs_sma20":-0.21,"pct_vs_sma50":1.34,"pct_vs_sma200":-2.2,"golden_cross_active":false,"death_cross_active":true,"chaikin_money_flow_20":-0.1895,"obv_slope_10d":0.006452,"money_flow_index_14":43.6,"volume_surge_ratio":0.36,"sub_sector_check":{"sub_symbol":"KRE","sub_21d_pct":-0.85,"sec_21d_pct":-1.47,"leadership_spread":0.62,"leader_confirms":true,"leader_diverges":false},"rotation_in_flags":["RS_ACCELERATING"],"rotation_out_flags":["DISTRIBUTION"],"rotating_in":false,"rotating_out":false,"rank":4},{"symbol":"XLRE","name":"Real Estate","current_price":44.25,"cycle_fit_phases":["EXPANSION-EARLY","CONTRACTION"],"in_current_cycle":false,"rotation_score":53.8,"score_components":{"rs_momentum":34.2,"money_flow":100,"breadth":45.2,"regime_fit":30,"sub_sector":50},"rs_1d_pct":-0.02,"return_1d_pct":-0.41,"spy_return_1d_pct":-0.39,"rs_5d_pct":2.08,"return_5d_pct":0.77,"spy_return_5d_pct":-1.31,"rs_1m_pct":-2.0,"return_1m_pct":1.82,"spy_return_1m_pct":3.82,"rs_3m_pct":-5.52,"return_3m_pct":1.58,"spy_return_3m_pct":7.1,"rs_6m_pct":-3.49,"return_6m_pct":8.38,"spy_return_6m_pct":11.86,"rs_slope_21d_pct_per_day":-0.2188,"rs_acceleration":5e-06,"rs_pct_rank_1y":16.3,"sma20":44.11,"sma50":42.94,"sma200":41.95,"pct_vs_sma20":0.31,"pct_vs_sma50":3.05,"pct_vs_sma200":5.48,"golden_cross_active":true,"death_cross_active":false,"chaikin_money_flow_20":0.0512,"obv_slope_10d":0.002086,"money_flow_index_14":41.2,"volume_surge_ratio":0.31,"sub_sector_check":null,"rotation_in_flags":["RS_ACCELERATING"],"rotation_out_flags":[],"rotating_in":false,"rotating_out":false,"rank":5},{"symbol":"XLP","name":"Consumer Staples","current_price":84.22,"cycle_fit_phases":["CONTRACTION","EXPANSION-LATE"],"in_current_cycle":false,"rotation_score":50.9,"score_components":{"rs_momentum":24.4,"money_flow":100,"breadth":45.4,"regime_fit":30,"sub_sector":50},"rs_1d_pct":-1.13,"return_1d_pct":-1.52,"spy_return_1d_pct":-0.39,"rs_5d_pct":0.42,"return_5d_pct":-0.89,"spy_return_5d_pct":-1.31,"rs_1m_pct":-1.25,"return_1m_pct":2.57,"spy_return_1m_pct":3.82,"rs_3m_pct":-11.27,"return_3m_pct":-4.17,"spy_return_3m_pct":7.1,"rs_6m_pct":-2.62,"return_6m_pct":9.24,"spy_return_6m_pct":11.86,"rs_slope_21d_pct_per_day":-0.0979,"rs_acceleration":0.000383,"rs_pct_rank_1y":10.3,"sma20":84.2,"sma50":83.05,"sma200":81.37,"pct_vs_sma20":0.03,"pct_vs_sma50":1.41,"pct_vs_sma200":3.5,"golden_cross_active":true,"death_cross_active":false,"chaikin_money_flow_20":0.0086,"obv_slope_10d":0.018712,"money_flow_index_14":57.0,"volume_surge_ratio":0.68,"sub_sector_check":null,"rotation_in_flags":["RS_ACCELERATING"],"rotation_out_flags":[],"rotating_in":false,"rotating_out":false,"rank":6},{"symbol":"XLU","name":"Utilities","current_price":44.88,"cycle_fit_phases":["CONTRACTION"],"in_current_cycle":false,"rotation_score":48.5,"score_components":{"rs_momentum":21.7,"money_flow":100,"breadth":37.7,"regime_fit":30,"sub_sector":50},"rs_1d_pct":1.23,"return_1d_pct":0.84,"spy_return_1d_pct":-0.39,"rs_5d_pct":1.27,"return_5d_pct":-0.03,"spy_return_5d_pct":-1.31,"rs_1m_pct":-3.79,"return_1m_pct":0.03,"spy_return_1m_pct":3.82,"rs_3m_pct":-10.22,"return_3m_pct":-3.12,"spy_return_3m_pct":7.1,"rs_6m_pct":-11.25,"return_6m_pct":0.62,"spy_return_6m_pct":11.86,"rs_slope_21d_pct_per_day":-0.4922,"rs_acceleration":0.000104,"rs_pct_rank_1y":3.2,"sma20":45.37,"sma50":45.8,"sma200":44.4,"pct_vs_sma20":-1.07,"pct_vs_sma50":-1.99,"pct_vs_sma200":1.09,"golden_cross_active":true,"death_cross_active":false,"chaikin_money_flow_20":-0.0809,"obv_slope_10d":0.014716,"money_flow_index_14":44.5,"volume_surge_ratio":0.33,"sub_sector_check":null,"rotation_in_flags":["RS_ACCELERATING"],"rotation_out_flags":["DISTRIBUTION"],"rotating_in":false,"rotating_out":false,"rank":7},{"symbol":"XLV","name":"Healthcare","current_price":147.4,"cycle_fit_phases":["CONTRACTION","EXPANSION-LATE"],"in_current_cycle":false,"rotation_score":47.9,"score_components":{"rs_momentum":24.6,"money_flow":100,"breadth":42.2,"regime_fit":30,"sub_sector":26.1},"rs_1d_pct":0.57,"return_1d_pct":0.18,"spy_return_1d_pct":-0.39,"rs_5d_pct":1.83,"return_5d_pct":0.53,"spy_return_5d_pct":-1.31,"rs_1m_pct":-3.13,"return_1m_pct":0.7,"spy_return_1m_pct":3.82,"rs_3m_pct":-13.11,"return_3m_pct":-6.01,"spy_return_3m_pct":7.1,"rs_6m_pct":-15.27,"return_6m_pct":-3.4,"spy_return_6m_pct":11.86,"rs_slope_21d_pct_per_day":-0.1505,"rs_acceleration":0.001053,"rs_pct_rank_1y":4.0,"sma20":145.2,"sma50":146.37,"sma200":147.82,"pct_vs_sma20":1.51,"pct_vs_sma50":0.7,"pct_vs_sma200":-0.28,"golden_cross_active":false,"death_cross_active":true,"chaikin_money_flow_20":0.0138,"obv_slope_10d":0.035068,"money_flow_index_14":57.0,"volume_surge_ratio":0.32,"sub_sector_check":{"sub_symbol":"XBI","sub_21d_pct":-4.09,"sec_21d_pct":0.7,"leadership_spread":-4.79,"leader_confirms":false,"leader_diverges":true},"rotation_in_flags":["RS_ACCELERATING"],"rotation_out_flags":["SUB_SECTOR_FALLING"],"rotating_in":false,"rotating_out":false,"rank":8},{"symbol":"XLI","name":"Industrials","current_price":169.29,"cycle_fit_phases":["EXPANSION-MID"],"in_current_cycle":true,"rotation_score":28.3,"score_components":{"rs_momentum":12.7,"money_flow":0,"breadth":41.4,"regime_fit":75,"sub_sector":50},"rs_1d_pct":-0.46,"return_1d_pct":-0.84,"spy_return_1d_pct":-0.39,"rs_5d_pct":-1.68,"return_5d_pct":-2.99,"spy_return_5d_pct":-1.31,"rs_1m_pct":-4.85,"return_1m_pct":-1.02,"spy_return_1m_pct":3.82,"rs_3m_pct":-11.58,"return_3m_pct":-4.48,"spy_return_3m_pct":7.1,"rs_6m_pct":1.11,"return_6m_pct":12.97,"spy_return_6m_pct":11.86,"rs_slope_21d_pct_per_day":-0.2899,"rs_acceleration":-0.000351,"rs_pct_rank_1y":19.0,"sma20":172.47,"sma50":169.13,"sma200":160.89,"pct_vs_sma20":-1.84,"pct_vs_sma50":0.1,"pct_vs_sma200":5.22,"golden_cross_active":true,"death_cross_active":false,"chaikin_money_flow_20":0.0124,"obv_slope_10d":-0.009795,"money_flow_index_14":38.5,"volume_surge_ratio":0.47,"sub_sector_check":null,"rotation_in_flags":[],"rotation_out_flags":["RS_DECELERATING"],"rotating_in":false,"rotating_out":false,"rank":9},{"symbol":"XLY","name":"Consumer Discretionary","current_price":117.45,"cycle_fit_phases":["EXPANSION-EARLY"],"in_current_cycle":false,"rotation_score":25.5,"score_components":{"rs_momentum":25.6,"money_flow":0,"breadth":41.6,"regime_fit":30,"sub_sector":50},"rs_1d_pct":-0.03,"return_1d_pct":-0.42,"spy_return_1d_pct":-0.39,"rs_5d_pct":0.28,"return_5d_pct":-1.03,"spy_return_5d_pct":-1.31,"rs_1m_pct":-5.07,"return_1m_pct":-1.24,"spy_return_1m_pct":3.82,"rs_3m_pct":-7.1,"return_3m_pct":0.0,"spy_return_3m_pct":7.1,"rs_6m_pct":-7.23,"return_6m_pct":4.63,"spy_return_6m_pct":11.86,"rs_slope_21d_pct_per_day":-0.2745,"rs_acceleration":-0.000163,"rs_pct_rank_1y":1.6,"sma20":118.07,"sma50":114.6,"sma200":117.35,"pct_vs_sma20":-0.53,"pct_vs_sma50":2.48,"pct_vs_sma200":0.09,"golden_cross_active":false,"death_cross_active":true,"chaikin_money_flow_20":-0.011,"obv_slope_10d":-0.049452,"money_flow_index_14":52.3,"volume_surge_ratio":0.38,"sub_sector_check":null,"rotation_in_flags":[],"rotation_out_flags":["RS_DECELERATING"],"rotating_in":false,"rotating_out":false,"rank":10},{"symbol":"XLB","name":"Materials","current_price":49.65,"cycle_fit_phases":["EXPANSION-MID","EXPANSION-LATE"],"in_current_cycle":true,"rotation_score":25.5,"score_components":{"rs_momentum":6.3,"money_flow":0,"breadth":37.0,"regime_fit":75,"sub_sector":50},"rs_1d_pct":0.24,"return_1d_pct":-0.14,"spy_return_1d_pct":-0.39,"rs_5d_pct":-2.6,"return_5d_pct":-3.91,"spy_return_5d_pct":-1.31,"rs_1m_pct":-8.03,"return_1m_pct":-4.21,"spy_return_1m_pct":3.82,"rs_3m_pct":-13.35,"return_3m_pct":-6.25,"spy_return_3m_pct":7.1,"rs_6m_pct":4.25,"return_6m_pct":16.11,"spy_return_6m_pct":11.86,"rs_slope_21d_pct_per_day":-0.3992,"rs_acceleration":-0.000229,"rs_pct_rank_1y":26.6,"sma20":51.18,"sma50":50.61,"sma200":47.49,"pct_vs_sma20":-2.98,"pct_vs_sma50":-1.89,"pct_vs_sma200":4.54,"golden_cross_active":true,"death_cross_active":false,"chaikin_money_flow_20":-0.1555,"obv_slope_10d":-0.04832,"money_flow_index_14":41.8,"volume_surge_ratio":0.32,"sub_sector_check":null,"rotation_in_flags":[],"rotation_out_flags":["RS_DECELERATING","DISTRIBUTION"],"rotating_in":false,"rotating_out":false,"rank":11}],"ratios":[{"label":"Financials/Utilities","current":1.146,"ret_5d_pct":0.33,"ret_21d_pct":-1.51,"ret_63d_pct":1.15,"sma20":1.1364,"sma50":1.1089,"sma200":1.1871,"pct_vs_sma20":0.85,"pct_vs_sma50":3.35,"pct_vs_sma200":-3.46,"z_score_1y":-0.771,"pct_rank_1y":24.6,"direction":"falling","above_sma50":true,"above_sma200":false,"interp_active":"Rate-cut/defensive pricing \u00b7 risk-off","numerator":"XLF","denominator":"XLU"},{"label":"Discretionary/Staples","current":1.3945,"ret_5d_pct":-0.14,"ret_21d_pct":-3.72,"ret_63d_pct":4.35,"sma20":1.4025,"sma50":1.3798,"sma200":1.445,"pct_vs_sma20":-0.57,"pct_vs_sma50":1.06,"pct_vs_sma200":-3.5,"z_score_1y":-0.326,"pct_rank_1y":43.7,"direction":"falling","above_sma50":true,"above_sma200":false,"interp_active":"Defensive consumer \u00b7 late-cycle","numerator":"XLY","denominator":"XLP"},{"label":"Tech/Energy","current":2.9599,"ret_5d_pct":-4.24,"ret_21d_pct":5.86,"ret_63d_pct":15.3,"sma20":2.9045,"sma50":2.6187,"sma200":2.9393,"pct_vs_sma20":1.91,"pct_vs_sma50":13.03,"pct_vs_sma200":0.7,"z_score_1y":0.096,"pct_rank_1y":43.7,"direction":"rising","above_sma50":true,"above_sma200":true,"interp_active":"Growth dominating \u00b7 low inflation","numerator":"XLK","denominator":"XLE"},{"label":"Small-Cap/Large-Cap","current":0.3792,"ret_5d_pct":-0.26,"ret_21d_pct":-2.46,"ret_63d_pct":-1.2,"sma20":0.3832,"sma50":0.3824,"sma200":0.3716,"pct_vs_sma20":-1.04,"pct_vs_sma50":-0.83,"pct_vs_sma200":2.03,"z_score_1y":0.908,"pct_rank_1y":73.4,"direction":"falling","above_sma50":false,"above_sma200":true,"interp_active":"Mega-cap concentration \u00b7 risk-off","numerator":"IWM","denominator":"SPY"},{"label":"Growth/Broad","current":0.9602,"ret_5d_pct":-0.19,"ret_21d_pct":4.24,"ret_63d_pct":8.74,"sma20":0.948,"sma50":0.919,"sma200":0.9046,"pct_vs_sma20":1.29,"pct_vs_sma50":4.48,"pct_vs_sma200":6.15,"z_score_1y":3.39,"pct_rank_1y":97.6,"direction":"rising","above_sma50":true,"above_sma200":true,"interp_active":"Growth premium expanding","numerator":"QQQ","denominator":"SPY"},{"label":"Semis/Tech","current":3.1752,"ret_5d_pct":-1.45,"ret_21d_pct":5.27,"ret_63d_pct":7.78,"sma20":3.1756,"sma50":3.029,"sma200":2.6323,"pct_vs_sma20":-0.01,"pct_vs_sma50":4.83,"pct_vs_sma200":20.62,"z_score_1y":1.906,"pct_rank_1y":96.0,"direction":"rising","above_sma50":true,"above_sma200":true,"interp_active":"Cycle leaders pulling tech up","numerator":"SMH","denominator":"XLK"},{"label":"Biotech/Healthcare","current":0.8934,"ret_5d_pct":-2.85,"ret_21d_pct":-4.76,"ret_63d_pct":12.28,"sma20":0.9128,"sma50":0.8874,"sma200":0.7877,"pct_vs_sma20":-2.12,"pct_vs_sma50":0.68,"pct_vs_sma200":13.42,"z_score_1y":1.475,"pct_rank_1y":89.7,"direction":"falling","above_sma50":true,"above_sma200":true,"interp_active":"Defensive healthcare leading","numerator":"XBI","denominator":"XLV"},{"label":"Regional/Broad Financials","current":1.3348,"ret_5d_pct":1.06,"ret_21d_pct":0.63,"ret_63d_pct":-2.56,"sma20":1.338,"sma50":1.3275,"sma200":1.2469,"pct_vs_sma20":-0.24,"pct_vs_sma50":0.54,"pct_vs_sma200":7.05,"z_score_1y":1.381,"pct_rank_1y":84.5,"direction":"rising","above_sma50":true,"above_sma200":true,"interp_active":"Credit-cycle expansion \u00b7 regional confidence","numerator":"KRE","denominator":"XLF"},{"label":"HY Credit/Treasuries","current":0.8525,"ret_5d_pct":0.63,"ret_21d_pct":1.16,"ret_63d_pct":2.18,"sma20":0.8466,"sma50":0.8402,"sma200":0.8373,"pct_vs_sma20":0.69,"pct_vs_sma50":1.46,"pct_vs_sma200":1.82,"z_score_1y":2.049,"pct_rank_1y":99.6,"direction":"rising","above_sma50":true,"above_sma200":true,"interp_active":"Credit risk appetite up \u00b7 risk-on","numerator":"HYG","denominator":"IEF"},{"label":"Long Bonds/Stocks","current":0.1133,"ret_5d_pct":-0.15,"ret_21d_pct":-7.07,"ret_63d_pct":-12.61,"sma20":0.1167,"sma50":0.1242,"sma200":0.13,"pct_vs_sma20":-2.88,"pct_vs_sma50":-8.73,"pct_vs_sma200":-12.83,"z_score_1y":-2.673,"pct_rank_1y":1.6,"direction":"falling","above_sma50":false,"above_sma200":false,"interp_active":"Stocks > bonds \u00b7 risk-on","numerator":"TLT","denominator":"SPY"},{"label":"Gold/Stocks","current":0.5613,"ret_5d_pct":-1.7,"ret_21d_pct":-8.29,"ret_63d_pct":-17.43,"sma20":0.5813,"sma50":0.6197,"sma200":0.5884,"pct_vs_sma20":-3.45,"pct_vs_sma50":-9.43,"pct_vs_sma200":-4.6,"z_score_1y":-0.145,"pct_rank_1y":45.2,"direction":"falling","above_sma50":false,"above_sma200":false,"interp_active":"Risk-on \u00b7 gold unloved","numerator":"GLD","denominator":"SPY"},{"label":"Commodities/Stocks","current":0.042,"ret_5d_pct":0.97,"ret_21d_pct":1.31,"ret_63d_pct":17.81,"sma20":0.0423,"sma50":0.0427,"sma200":0.0365,"pct_vs_sma20":-0.72,"pct_vs_sma50":-1.63,"pct_vs_sma200":15.31,"z_score_1y":1.612,"pct_rank_1y":86.1,"direction":"rising","above_sma50":false,"above_sma200":true,"interp_active":"Inflation regime \u00b7 real-asset leadership","numerator":"DBC","denominator":"SPY"},{"label":"Materials/Utilities","current":1.1062,"ret_5d_pct":-3.88,"ret_21d_pct":-4.24,"ret_63d_pct":-3.23,"sma20":1.1282,"sma50":1.1053,"sma200":1.0698,"pct_vs_sma20":-1.95,"pct_vs_sma50":0.07,"pct_vs_sma200":3.4,"z_score_1y":0.586,"pct_rank_1y":71.4,"direction":"falling","above_sma50":true,"above_sma200":true,"interp_active":"Cyclical weakness \u00b7 defensive","numerator":"XLB","denominator":"XLU"},{"label":"Oil/Stocks","current":0.1995,"ret_5d_pct":4.4,"ret_21d_pct":9.67,"ret_63d_pct":70.15,"sma20":0.1954,"sma50":0.1889,"sma200":0.1301,"pct_vs_sma20":2.11,"pct_vs_sma50":5.64,"pct_vs_sma200":53.38,"z_score_1y":2.218,"pct_rank_1y":95.6,"direction":"rising","above_sma50":true,"above_sma200":true,"interp_active":"Oil thrust \u00b7 supply or demand stress","numerator":"USO","denominator":"SPY"}],"rotation_alerts":{"rotating_in":[{"sym":"XLK","score":61.3,"flags":["BUYING_PRESSURE","SUB_SECTOR_LEADING","MFI_BULLISH"]}],"rotating_out":[]}}