
    c$i                        d Z ddlmZ ddlmZ ddlmZ ddlZ	ddl
mZmZ  ee                                          j        d         Zedz  dz  ZddZddZddZedk    r e             dS dS )a  Static matplotlib pie chart of SPX 11 GICS sectors.

Use this when you need a PNG (e.g. for a slide deck or PDF report).
For interactive use, the web dashboard at web/sectors.html is richer.

Reuses SECTORS / _live_trailing_pe from web.generate_sectors_data so
weights and reference forward P/Es stay in one place.

Outputs:
  - output/sector_breakdown/spx_sector_pie.png
  - output/sector_breakdown/spx_sector_table.csv
    )annotations)PathN   )SECTORS_live_trailing_peoutputsector_breakdownreturnpd.DataFramec                 l   g } t           D ]n}t          |d                   }|                     |d         |d         |d         ||d         d                    d |d         D                       d           ot	          j        |                               dd	
                              d          S )Netfsector
weight_pct
forward_pez | c              3      K   | ]	\  }}|V  
d S )N ).0name_pcts      M/home/raptorx-1/project/yardeni/sentiment_indicator/web/sectors_pie_export.py	<genexpr>zbuild_table.<locals>.<genexpr>'   s&      (P(P*$(P(P(P(P(P(P    
industries)r   r   r   trailing_per   r   F)	ascendingT)drop)r   r   appendjoinpd	DataFramesort_valuesreset_index)rowssr   s      r   build_tabler%      s    D 
 
'%11H+xo*o#jj(P(P,(P(P(PPP 		
 		
 		
 		
 <)),%)HHTTZ^T___r   dfout_pathr   Nonec                   t          j        d          \  }}t          j        d          j        d t	          |                    }|                    | d         d |ddd dd	d
ddd	dd	  	        \  }}}d |                                 D             }|                    ||ddddddddi	  	         |                    ddd           t          j	                     t          j
        |dd           t          j        |           d S )N)   	   )figsizetab20r   Z   Fc                    | dk    r| ddndS )Ng      @z.1f% r   )ps    r   <lambda>zplot_pie.<locals>.<lambda>7   s    cQ+++++r r   g
ףp=
?whiteg333333?)	edgecolor	linewidth
   bold)fontsizecolorweight)labelscolors
startanglecounterclockautopctpctdistance
wedgeprops	textpropsc           
     f    g | ].\  }}|d          dd|d         dd|d         dd|d	         d/S )
r   z<24sz  r   z<5sz	  weight r   z>5.1fz%   fwd P/E r   r   )r   _rs      r   
<listcomp>zplot_pie.<locals>.<listcomp>=   si       Aq X;pppqxpppaopppYZ[gYhppp  r   z.GICS Sector  /  ETF  /  weight  /  forward P/Ezcenter left)gRQ?g      ?   family	monospace)titlelocbbox_to_anchorr9   title_fontsizeframeonpropzS&P 500 - GICS Sector Weights & Forward P/E
(weights: 2026-Q1 SPX snapshot;  trailing P/E live from yfinance;  fwd P/E from Yardeni / FactSet 2026-Q1 public releases)      )r9   pad   tight)dpibbox_inches)pltsubplotsget_cmapr=   lenpieiterrowslegend	set_titletight_layoutsavefigclose)	r&   r'   figaxpalettewedges_texts
_autotextslegend_labelss	            r   plot_pierj   -   sT   l7+++GCl7##*9SWW95G!#
<99!(s;;!GvFF "( 
" 
"FFJ KKMM  M II>"$  
 
 
 LL	B      Kcw7777IcNNNNNr   c                 "   t                               dd           t                      } t           dz  }|                     |d           t           dz  }t	          | |           t          d           t          d           t          d           | g d	                                         }g d
|_        t          |                    dd                      t                       t          d|            t          d|            d S )NT)parentsexist_okzspx_sector_table.csvF)indexzspx_sector_pie.pngzd====================================================================================================z)S&P 500 - GICS Sectors (2026-Q1 snapshot))r   r   r   r   r   )r   r   zweight%trailing_PE
forward_PEc                
    | dS )Nz.2fr   )xs    r   r3   zmain.<locals>.<lambda>g   s
    ZZ r   )rn   float_formatzsaved: )	OUT_DIRmkdirr%   to_csvrj   printcopycolumns	to_string)r&   csv_pathpng_pathshows       r   mainr~   X   s   MM$M...	B//HIIheI$$$--HR	)	
5666	)JJJKPPRRDLLLDL	$..u3G3G.
H
HIII	GGG	
H

	
H

r   __main__)r
   r   )r&   r   r'   r   r
   r(   )r
   r(   )__doc__
__future__r   pathlibr   matplotlib.pyplotpyplotrX   pandasr   generate_sectors_datar   r   __file__resolverl   	REPO_ROOTrt   r%   rj   r~   __name__r   r   r   <module>r      s    # " " " " "                 = = = = = = = = DNN""$$,Q/	
h
!3
3` ` ` `"( ( ( (V       * zDFFFFF r   