stock-screener

安装量: 47
排名: #15808

安装

npx skills add https://github.com/dkyazzentwatwa/chatgpt-skills --skill stock-screener
Stock Screener
Filter stocks by financial metrics and perform comparative analysis.
Features
Multi-Metric Filtering
P/E, P/B, market cap, dividend yield, etc.
Custom Screens
Save and reuse filter combinations
Comparative Analysis
Side-by-side stock comparison
Sector Analysis
Group and analyze by sector
Ranking
Score and rank stocks by criteria
Export
CSV, JSON, formatted reports Quick Start from stock_screener import StockScreener screener = StockScreener ( )

Load stock data

screener . load_csv ( "stocks.csv" )

Apply filters

results

screener . filter ( pe_ratio = ( 0 , 20 ) , market_cap_min = 1e9 , dividend_yield_min = 2.0 ) print ( results ) CLI Usage

Basic screening

python stock_screener.py --input stocks.csv --pe-max 20 --div-min 2.0

Multiple filters

python stock_screener.py --input stocks.csv --pe 5 25 --pb-max 3 --cap-min 1B

Sector filter

python stock_screener.py --input stocks.csv --sector Technology --pe-max 30

Rank by metric

python stock_screener.py --input stocks.csv --rank-by dividend_yield --top 20

Compare specific stocks

python stock_screener.py --input stocks.csv --compare AAPL MSFT GOOGL

Export results

python stock_screener.py --input stocks.csv --pe-max 15 --output screened.csv Input Format Stock CSV symbol , name , sector , price , pe_ratio , pb_ratio , market_cap , dividend_yield , eps , revenue_growth , profit_margin AAPL , Apple Inc , Technology , 175.50 , 28.5 , 45.2 , 2.8e12 , 0.5 , 6.16 , 8.5 , 25.3 MSFT , Microsoft , Technology , 380.00 , 35.2 , 12.8 , 2.8e12 , 0.8 , 10.79 , 12.3 , 36.7 JNJ , Johnson & Johnson , Healthcare , 155.00 , 15.2 , 5.8 , 3.8e11 , 2.9 , 10.20 , 5.2 , 22.1 API Reference StockScreener Class class StockScreener : def init ( self )

Data Loading

def load_csv ( self , filepath : str ) -

'StockScreener' def load_dataframe ( self , df : pd . DataFrame ) -

'StockScreener'

Filtering

def filter ( self , ** criteria ) -

pd . DataFrame def filter_by_sector ( self , sectors : List [ str ] ) -

'StockScreener' def filter_by_metric ( self , metric : str , min_val : float = None , max_val : float = None ) -

'StockScreener'

Screening Presets

def value_screen ( self ) -

pd . DataFrame def growth_screen ( self ) -

pd . DataFrame def dividend_screen ( self ) -

pd . DataFrame def quality_screen ( self ) -

pd . DataFrame def custom_screen ( self , criteria : Dict ) -

pd . DataFrame

Analysis

def compare ( self , symbols : List [ str ] ) -

pd . DataFrame def rank_by ( self , metric : str , ascending : bool = True ) -

pd . DataFrame def sector_summary ( self ) -

pd . DataFrame def metric_distribution ( self , metric : str ) -

Dict

Scoring

def score_stocks ( self , weights : Dict [ str , float ] = None ) -

pd . DataFrame def percentile_rank ( self , metrics : List [ str ] ) -

pd . DataFrame

Export

def to_csv ( self , filepath : str ) -

str def to_json ( self , filepath : str ) -

str def summary_report ( self ) -

str Filtering Criteria Valuation Metrics screener . filter ( pe_ratio = ( 5 , 20 ) ,

P/E between 5 and 20

pb_ratio_max

3.0 ,

P/B ratio under 3

ps_ratio_max

5.0 ,

Price/Sales under 5

peg_ratio_max

1.5

PEG ratio under 1.5

) Size Metrics screener . filter ( market_cap_min = 1e9 ,

Min $1B market cap

market_cap_max

10e9 ,

Max $10B (mid-cap)

revenue_min

500e6

Min $500M revenue

) Income Metrics screener . filter ( dividend_yield_min = 2.0 ,

Min 2% dividend

dividend_yield_max

8.0 ,

Max 8% (avoid yield traps)

payout_ratio_max

75

Sustainable payout

) Growth Metrics screener . filter ( revenue_growth_min = 10 ,

Min 10% revenue growth

earnings_growth_min

15 ,

Min 15% earnings growth

eps_growth_min

10

Min 10% EPS growth

) Quality Metrics screener . filter ( profit_margin_min = 15 ,

Min 15% profit margin

roe_min

15 ,

Min 15% return on equity

debt_to_equity_max

1.0 ,

Max 1.0 D/E ratio

current_ratio_min

1.5

Min 1.5 current ratio

) Preset Screens Value Screen results = screener . value_screen ( )

Finds undervalued stocks:

- P/E < 15

- P/B < 2

- Dividend yield > 2%

- Profit margin > 10%

Growth Screen results = screener . growth_screen ( )

Finds growth stocks:

- Revenue growth > 15%

- Earnings growth > 20%

- PEG ratio < 2

Dividend Screen results = screener . dividend_screen ( )

Finds dividend stocks:

- Dividend yield 2-8%

- Payout ratio < 75%

- 5+ years dividend history

Quality Screen results = screener . quality_screen ( )

Finds high-quality stocks:

- ROE > 15%

- Profit margin > 15%

- D/E < 0.5

- Current ratio > 2

Stock Comparison comparison = screener . compare ( [ "AAPL" , "MSFT" , "GOOGL" ] )

Returns:

AAPL MSFT GOOGL

price 175.50 380.00 140.00

pe_ratio 28.50 35.20 25.30

market_cap 2.8T 2.8T 1.7T

dividend_yield 0.50 0.80 0.00

profit_margin 25.30 36.70 22.50

...

Ranking and Scoring Rank by Single Metric

Top 20 by dividend yield

top_dividend

screener . rank_by ( "dividend_yield" , ascending = False ) . head ( 20 ) Composite Scoring

Score stocks with custom weights

scores

screener . score_stocks ( { "pe_ratio" : - 0.2 ,

Lower is better

"dividend_yield" : 0.3 ,

Higher is better

"profit_margin" : 0.3 ,

Higher is better

"revenue_growth" : 0.2

Higher is better

} )

Returns stocks ranked by composite score

Percentile Ranking

See where each stock ranks on multiple metrics

ranked

screener . percentile_rank ( [ "pe_ratio" , "dividend_yield" , "profit_margin" ] )

Returns percentile (0-100) for each metric

Sector Analysis sector_stats = screener . sector_summary ( )

Returns:

sector | count | avg_pe | avg_div | avg_margin

Technology | 45 | 28.5 | 1.2 | 22.3

Healthcare | 32 | 18.2 | 2.1 | 18.7

Financials | 28 | 12.5 | 3.2 | 25.1

Example Workflows Find Undervalued Dividend Stocks screener = StockScreener ( ) screener . load_csv ( "sp500.csv" )

Apply filters

results

screener . filter ( pe_ratio = ( 5 , 15 ) , dividend_yield_min = 3.0 , payout_ratio_max = 70 , profit_margin_min = 10 )

Rank by dividend yield

top

results . sort_values ( "dividend_yield" , ascending = False ) . head ( 10 ) print ( top [ [ "symbol" , "name" , "pe_ratio" , "dividend_yield" , "payout_ratio" ] ] ) Growth at Reasonable Price (GARP) results = screener . filter ( revenue_growth_min = 15 , earnings_growth_min = 15 , peg_ratio_max = 1.5 , pe_ratio_max = 25 ) Sector Comparison

Filter to technology sector

tech

screener . filter_by_sector ( [ "Technology" ] ) . filter ( market_cap_min = 10e9 , profit_margin_min = 15 )

Compare top tech stocks

comparison

screener . compare ( tech [ "symbol" ] . head ( 5 ) . tolist ( ) ) Output Format CSV Export screener . filter ( pe_ratio_max = 20 ) . to_csv ( "value_stocks.csv" ) JSON Export screener . filter ( dividend_yield_min = 3 ) . to_json ( "dividend_stocks.json" ) Summary Report report = screener . summary_report ( )

Returns formatted text summary of screening results

Dependencies pandas>=2.0.0 numpy>=1.24.0

返回排行榜