
    pj+                       U d Z ddlmZ ddlZddlmZ ddlmZ  ee      j                         j                  d   Zedz  dz  d	z  Zd
ddg ddddgedz  ddddddgdddgedz  dddddd gd!d"gddd#d$d%d&d'gd(d)d*ged+z  dd,d-d.d/d0gd1d2d3ged4z  dd5d6d7g d8d9g d:ed;z  ed<z  d=d>d?d@dAdBgdCdDgedEz  ddFZdGedH<   dLdIZdMdJZ	 dN	 	 	 	 	 dOdKZy)Pz
Strategy summaries for the Best Ideas command center UI.

Static copy + optional metrics from ``RenTech/data/logs/*_meta.json``.
    )annotationsN)Path)Any   RenTechdatalogsz
lit4 + vrpz SPY options (Theta margin + MTM)zLiterature four (S055, S057, S059, S089) plus 4-regime VRP on SPY Theta chains. One margin simulation: overlapping sleeves, daily MTM on open legs.)zKVRP: no PMCC, VIX-scale R2 contracts, term-structure gate, overlap slices=2z?Lit sleeves: one position at a time per spec, bid/ask executionz5Headline risk: max_drawdown_frac_mtm on combined bookzRpython -m RenTech.strategy_stack.diverse_theta_strategies_v1.evaluate_theta_marginz0RenTech/data/logs/lit_stack_vrp_margin_daily.csvz0RenTech/data/logs/lit_stack_vrp_margin_meta.jsonzlit_stack_vrp_margin_meta.json)tokenrolesummaryrulesrunner	artifacts	meta_pathvxx_regime_stackzVXX regime stack (6 sleeves)zDynamic VXX Regime Strategy Stack: six regime strategies summed on one capital base (contango, steep contango, backwardation, etc.).z0Approach B: sum daily_pnl_mtm_usd across sleevesz=Preload chains for MTM; combine-only rebuild from sleeve CSVsz3RenTech/strategy_stack/run_vxx_regime_mtm_report.pyzQRenTech/data/logs/vxx_regime_mtm_2016_2026_dynamic_vxx_regime_stack_daily_mtm.csvzMRenTech/data/logs/vxx_regime_mtm_2016_2026_dynamic_vxx_regime_stack_meta.jsonz;vxx_regime_mtm_2016_2026_dynamic_vxx_regime_stack_meta.jsonvxx_long_callzVXX tail hedgez\Long OTM VXX calls sized to ~5% of stacked-book PnL contribution (not full 1% audit sizing).z10% OTM callsu/   Combined via fund weight × quarterly NAV scalez1RenTech/strategy_stack/run_vxx_long_call_daily.pyz2RenTech/data/logs/vxx_long_call_standard_daily.csvmacro_awzMacro all-weather optionsut   Eight ETF option sleeves (TLT, USO, DBC, GLD, …) equal-weight in combine. Low equity beta complement to SPY theta.zEqual-weight portfolio curvez!Theta 15:45 chunks per underlyingz4RenTech/strategy_stack/macro_aw_options_portfolio.pyz9RenTech/data/logs/macro_aw_options_portfolio_eq_daily.csvz:RenTech/data/logs/macro_aw_options_portfolio_eq_trades.csvz'macro_aw_options_portfolio_eq_meta.jsonsector_momentumzSPDR sector rotationuK   12−1 month momentum on SPDR sectors; hold top-3 names, monthly rebalance.zRank by trailing momentumzLong sector ETFs, no shortz6RenTech/strategy_stack/run_sector_momentum_standard.pyz4RenTech/data/logs/sector_momentum_standard_daily.csvz9RenTech/data/logs/sector_momentum_standard_rebalances.csvz"sector_momentum_standard_meta.jsontactical_awz!Tactical all-weather (macro ETFs)u   Bridgewater-style static weights on SPY/TLT/IEF/GLD/DBC with per-sleeve trend + momentum gates. Production variant: TLT/IEF baseline ×0.7 (bond70 sweep winner).)uD   Invest baseline weight when close > SMA(200) and 12−1 momentum > 0z7Else cash at ~4% annual yield; weights execute next dayz%bond_baseline_mult=0.7 on TLT and IEFz;RenTech/strategy_stack/run_tactical_all_weather_standard.py)z0RenTech/data/logs/tactical_aw_standard_daily.csvz6RenTech/data/logs/tactical_aw_standard_allocations.csvz5RenTech/data/logs/tactical_aw_variant_sweep_best.jsonztactical_aw_standard_meta.jsonz#tactical_aw_variant_sweep_best.json)r
   r   r   r   r   r   r   config_pathtsmomzManaged futures / TSMOMz8-asset time-series momentum (SPY, EFA, EEM, TLT, IEF, GLD, DBC, UUP). 3/6/12m signal blend, vol-normalized, monthly rebalance. Low SPY beta.zLong/short by trend signzVol targeting per assetz3RenTech/strategy_stack/run_tsmom_managed_futures.pyz1RenTech/data/logs/tsmom_managed_futures_daily.csvztsmom_managed_futures_meta.json)	spy_theta
vxx_regimer   r   r   r   r   zdict[str, dict[str, Any]]STRATEGY_DEFINITIONSc                    | | j                         sy 	 t        j                  | j                  d            }t	        |t
              r|S d S # t        j                  $ r Y y w xY w)Nzutf-8)encoding)is_filejsonloads	read_text
isinstancedictJSONDecodeError)pathraws     </opt/rentech/trading_bot/RenTech/monitor/strategy_catalog.py
_read_jsonr'   }   s\    |4<<>jj9: d+s55 s   6A A A$#A$c                   | sy i }| j                  d      }|t        |      |d<   | j                  d      }|t        |      |d<   | j                  d      xs | j                  d      }|t        |      |d<   | j                  d      }|"| j                  d      t        | d         dz  }|t        |      |d<   | j                  d      s| j                  d	      r0t        | j                  d      xs | j                  d	            |d<   | j                  d
      s| j                  d      r0t        | j                  d
      xs | j                  d            |d
<   |xs d S )Ntotal_return_pctcagr_pctsharpeportfolio_sharpe_daily_mtmmax_drawdown_pctmax_drawdown_frac_mtm      Y@start	first_dayendlast_day)getfloatstr)metaouttrcagrshdds         r&   _normalize_standalone_metar=      sL   C	$	%B	~"')88JD+J	(		Etxx(DEB	~b	H	$	%B	zdhh67C4/01E9	~"')xxDHH[1488G,E0EFGxx$((:.%@DHHZ,@AE
;$    c                   |xs i }| j                  d      xs i | j                  d      xs i }| j                  d      xs g }d}|j                  d      r=|j                  d       d|j                  dd       d	|j                  d
d       d|z   }g }t        j                         fdd      }|D ]  }t        j                  |i       }|j                  |i       }	t	        t        |j                  d                  }
t        |j                  d            }|r|xs i j                  d      nd}|!|rdt        |      v r|j                  d|      }|j                  ||	j                  d      xs |j                  d|      |j                  d|      |j                  dd      |j                  dd      t        |j                  d      xs g       |j                  dd      t        |j                  d      xs g       t        |         t        |         dz  ||r|xs i j                  d      nd|
|	j                  d      |	j                  d       |	j                  d!      |	j                  d"      |	j                  d#      |	j                  d$      d%d&        d'|| j                  d(      | j                  d)      | j                  d*      d+| j                  d,      | j                  d-      | j                  d.      | j                  d/      | j                  d0      | j                  d1      d2||d3d4d5S )6z
    Build ordered strategy cards for the command center.

    Merges static definitions, standalone backtest meta, and in-fund attribution.
    fund_weightssleevesyearlyu   Fund-mode 2.2× gross, quarterly NAV-sized sleeves. Daily sleeve PnL scales from $100k standalone backtests: notional = weight × fund_scale × quarter-open NAV.combine_modeu    · fund_scale=
fund_scalez2.2u    · nav_rebalance=fund_nav_rebalance	quarterlyz. c                :    t        j                  | d            S )Nr   )r5   r4   )kr@   s    r&   <lambda>z*build_strategy_summaries.<locals>.<lambda>   s    eL,,Q23 r>   T)keyreverser   r   configNbond_baseline_multlabelr
   r    r   r   r   r   r/   best_variantnotional_usdmean_notional_usdtotal_pnl_usdreturn_on_start_capital_pctpct_of_fund_pnlpnl_today_usd)rQ   rR   rS   rT   rU   rV   )idrN   r
   r   r   r   r   r   weight
weight_pctrL   variant_name
standalonein_fundu1   Best Ideas — 7-sleeve fund (reference backtest)
start_dateend_datedate)r0   r2   as_ofr)   r*   r+   r-   fund_nav_usdcapital_usd)r)   r*   r+   r-   ra   rb   a  cd /Users/robzingale/trading_bot && PYTHONUNBUFFERED=1 .venv/bin/python RenTech/strategy_stack/combine_best_ideas_stack.py --start 2016-01-04 --end 2026-04-02 --capital 100000 --mtm --fund-mode --fund-scale 2.2 --with-vxx-long-call --with-macro-aw --with-sector-momentum --with-tactical-aw --with-tsmom --lit-mtm-daily RenTech/data/logs/lit_stack_vrp_margin_daily.csv --out-prefix RenTech/data/logs/best_ideas_stack_10ddzcd /Users/robzingale/trading_bot && PYTHONUNBUFFERED=1 .venv/bin/python -m RenTech.monitor.build_command_center_snapshot --ibkr)
book_title
book_blurbwindowheadlinerB   
strategiesregenerate_combineregenerate_snapshot)
r4   sortedkeysr   r=   r'   r6   appendlistr5   )	portfoliocombine_metarA   rB   rd   rg   rk   rJ   defnslr7   cfg_rawrL   r@   s                @r&   build_strategy_summariesrs      s<     %2L==06BLmmI&,"G]]8$*F	? 
 '/0 1&**<?@ A)--.BKPQQSU  	 (*J3D
  !
#''R0[[b!)*TXXk5J*KLTXXm4529'-R$$X.t>g*>#g,*N[[73FBDHHWc,B'3/,88Ir2dhhw/526((8R0!$((;"7"=2>S 12#L$56> GNB 3 3N CTX"$&FF>$:)+0C)D%'VVO%<3566:W3X')vv.?'@%'VVO%<	
!
H J ]]<0==,]]6*
 !*.@ A!j1mmH- ).@ A%MM.9$==7
  CW;   r>   )r$   zPath | Nonereturndict[str, Any] | None)r7   ru   rt   ru   )N)rn   dict[str, Any]ro   ru   rt   rv   )__doc__
__future__r   r   pathlibr   typingr   __file__resolveparents_REPOLOGSr   __annotations__r'   r=   rs    r>   r&   <module>r      s  
 #   X ((+y6!F* 2R

 g>>
 <<#( $.? ?K
 H_[
 YY!& ! q!#TUEJK +7 12UVHGH
 EE  #&`-/KLJBG
 @@ 3P

 P

 <<CC', )U -.GHGIJ==k3 / k\6 +/dd'd dr>   