Beta Regime Screener¶
Screen NASDAQ stocks for market regime based on relative strength analysis.
Screener Functions¶
beta_regime
¶
Beta regime screener for NASDAQ stocks.
Screens stocks for risk-on/risk-off regime based on Mike McGlone's methodology: - Relative strength ratio vs benchmark (e.g., SPY) - Ratio compared to its 200-day (or 40-week) moving average - Above MA = risk-on, Below MA = risk-off
BetaRegimeResult
dataclass
¶
Result from beta regime screening.
Attributes:
| Name | Type | Description |
|---|---|---|
ticker |
str
|
Stock symbol. |
company_name |
str
|
Full company name or ticker if unavailable. |
benchmark |
str
|
Benchmark ticker used for comparison. |
regime |
Literal['risk-on', 'risk-off', 'insufficient-data']
|
Current regime status ("risk-on", "risk-off", or "insufficient-data"). |
relative_strength |
float
|
Asset price / benchmark price ratio. |
ma_value |
float
|
Moving average of relative strength ratio. |
pct_from_ma |
float
|
Percentage distance from moving average. |
beta |
float
|
Rolling beta coefficient vs benchmark. |
close_price |
float
|
Current asset closing price. |
benchmark_price |
float
|
Current benchmark closing price. |
interval |
str
|
Candle interval used ("1d", "1wk", "1mo"). |
ma_period |
int
|
Moving average period used for regime detection. |
Source code in src/stockcharts/screener/beta_regime.py
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | |
screen_beta_regime(tickers=None, benchmark='SPY', interval='1d', ma_period=200, beta_window=60, regime_filter='all', min_price=None, max_price=None, min_volume=None, lookback=None, start=None, end=None, batch_size=50, verbose=True)
¶
Screen stocks for beta regime status.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
tickers
|
list[str] | None
|
List of ticker symbols (if None, uses all NASDAQ). |
None
|
benchmark
|
str
|
Benchmark ticker for comparison (default: "SPY"). Can be any valid yfinance ticker (SPY, QQQ, BTC-USD, etc.). |
'SPY'
|
interval
|
str
|
Candle interval - "1d", "1wk", "1mo" (default: "1d"). |
'1d'
|
ma_period
|
int
|
Moving average period for regime detection. Default: 200 for daily, auto-adjusts to 40 for weekly if 200 is passed. |
200
|
beta_window
|
int
|
Rolling window for beta calculation (default: 60). |
60
|
regime_filter
|
Literal['risk-on', 'risk-off', 'all']
|
Filter results by regime - "risk-on", "risk-off", or "all". |
'all'
|
min_price
|
float | None
|
Minimum stock price filter. |
None
|
max_price
|
float | None
|
Maximum stock price filter. |
None
|
min_volume
|
float | None
|
Minimum average daily volume filter. |
None
|
lookback
|
str | None
|
Historical period (e.g., "1y", "2y", "5y"). Should be longer than ma_period to ensure sufficient data. |
None
|
start
|
str | None
|
Start date YYYY-MM-DD (overrides lookback if end also provided). |
None
|
end
|
str | None
|
End date YYYY-MM-DD. |
None
|
batch_size
|
int | None
|
Tickers per batch for parallel download (default: 50). Set to None for sequential mode. |
50
|
verbose
|
bool
|
Print progress messages (default: True). |
True
|
Returns:
| Type | Description |
|---|---|
list[BetaRegimeResult]
|
List of BetaRegimeResult objects. |
Source code in src/stockcharts/screener/beta_regime.py
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 | |
save_results_to_csv(results, filename='beta_regime_results.csv')
¶
Save screening results to CSV file.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
results
|
list[BetaRegimeResult]
|
List of BetaRegimeResult objects to save. |
required |
filename
|
str
|
Output CSV file path. |
'beta_regime_results.csv'
|
Returns:
| Type | Description |
|---|---|
None
|
None. Prints status message and writes file to disk. |
Source code in src/stockcharts/screener/beta_regime.py
513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 | |