Metadata-Version: 2.4
Name: jaymd96-index-inclusion
Version: 0.1.0
Summary: Stock index inclusion probability prediction
Project-URL: Homepage, https://github.com/jaymd96/jaymd96-index-inclusion
Project-URL: Repository, https://github.com/jaymd96/jaymd96-index-inclusion
Project-URL: Issues, https://github.com/jaymd96/jaymd96-index-inclusion/issues
Author-email: James <jaymd96@users.noreply.github.com>
License-Expression: MIT
License-File: LICENSE
Keywords: finance,inclusion,index,nasdaq,prediction,sp500
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Financial and Insurance Industry
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Office/Business :: Financial :: Investment
Classifier: Typing :: Typed
Requires-Python: >=3.10
Requires-Dist: jaymd-winnow
Requires-Dist: jaymd96-fmp
Requires-Dist: numpy>=1.24
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: ruff>=0.4; extra == 'dev'
Description-Content-Type: text/markdown

# jaymd96-index-inclusion

Stock index inclusion probability prediction. Screens stocks against eligibility rules for 7 major indices (S&P 500, S&P 400, S&P 600, NASDAQ-100, FTSE 100, DJIA, Russell 3000), scores candidates with heuristic signals, and optionally refines predictions with ML.

## Install

```bash
pip install jaymd96-index-inclusion
```

## Quick Start

```python
from index_inclusion import IndexInclusion

ii = IndexInclusion(fmp_api_key="your-key")

# Check a single stock
result = ii.check("PLTR", "SP500")
print(f"{result.ticker}: {result.probability:.1%} ({result.probability_label})")

# Find top candidates for an index
candidates = ii.candidates("SP500", top_n=10)
for c in candidates:
    print(f"{c.ticker}: {c.probability:.1%}")

# Backtest prediction accuracy
report = ii.backtest("SP500", start=2016, end=2025)
print(f"Precision@3: {report.precision_at_3:.1%}")

# Train ML models
ii.train("SP500", start=2016, end=2023)
candidates = ii.candidates("SP500")  # now uses ML calibration
```

## License

MIT
