---
title: ledger-market-sentiment
canonical_url: "https://www.modelscope.cn/datasets/artefactory/ledger-market-sentiment"
md_url: "https://www.modelscope.cn/datasets/artefactory/ledger-market-sentiment.md"
repository: artefactory/ledger-market-sentiment
last_updated: 2026-07-17
license: cc-by-4.0
storage_size: "767 MB"
downloads: 113
stars: 0
---

# ledger-market-sentiment

> ledger-market-sentiment - artefactory 在 ModelScope 开源的数据集。LEDGER Market Sentiment Prediction Data

artefactory/ledger-market-sentiment 是 ModelScope 魔搭社区上的数据集，存储大小 767 MB，采用 cc-by-4.0 许可。

- **Repository**: artefactory/ledger-market-sentiment
- **License**: cc-by-4.0
- **Storage size**: 767 MB
- **Downloads**: 113
- **Stars**: 0
- **Last updated**: 2026-07-17

Source: https://www.modelscope.cn/datasets/artefactory/ledger-market-sentiment

---

# LEDGER Market Sentiment Prediction Data

Data used for the market sentiment prediction case study in the LEDGER paper,
linking CEO-letter rhetoric to EPS surprises and post-publication market reactions.

## Dataset Description

This dataset supports research on whether the rhetoric in corporate annual report
CEO letters carries signal about future fundamentals and market reaction. It covers
six highly liquid industries (specialty chemicals, auto parts, packaged foods, oil &
gas E&P, oil & gas equipment & services, and mortgage REITs) spanning fiscal years
2017–2022.

## Configs

| Config | Rows | Description |
|--------|------|-------------|
| `letters` | 464 | CEO/chairman letters extracted from annual reports, with sentiment labels |
| `eps_surprise` | 13,489 | Earnings per share surprise data (consensus vs. reported) |
| `stock_prices` | 422,888 | Daily stock prices with rolling return windows (t-90 to t+90) |
| `industry_indicators` | 12,525 | Aggregate industry-level daily indicators |

## Schema

### `letters`

| Column | Type | Description |
|--------|------|-------------|
| `ticker` | string | Stock ticker symbol |
| `exchange` | string | Stock exchange (NYSE, NASDAQ, LSE, AMEX) |
| `industry` | string | Industry classification |
| `year` | int | Fiscal year of the annual report |
| `letter_number` | int | Letter index within the report (1-based) |
| `title` | string | Letter heading (e.g. "Chairman's Statement") |
| `start_page` | int | First page in the source report |
| `end_page` | int | Last page in the source report |
| `sentiment` | string | Overall sentiment label: `positive`, `negative`, or null |
| `text` | string | Full letter text (Markdown) |
| `source_report` | string | Path to the source OCR'd report |

### `eps_surprise`

| Column | Type | Description |
|--------|------|-------------|
| `ticker` | string | Stock ticker symbol |
| `earnings_date` | datetime | Earnings announcement date (UTC) |
| `eps_estimate` | float | Consensus analyst EPS estimate |
| `reported_eps` | float | Actual reported EPS (null for future dates) |
| `surprise_pct` | float | Surprise percentage: (actual - estimate) / estimate × 100 |

### `stock_prices`

| Column | Type | Description |
|--------|------|-------------|
| `ticker` | string | Stock ticker symbol |
| `Date` | date | Trading date |
| `Open` | float | Opening price |
| `High` | float | Daily high |
| `Low` | float | Daily low |
| `Close` | float | Closing price |
| `Volume` | float | Trading volume |
| `Volume_ATS` | float | Alternative trading system volume (normalized) |
| `returns` | float | Daily return |
| `Volatility` | float | Rolling volatility |
| `return_t-90` … `return_t90` | float | Rolling returns from t-90 to t+90 trading days |

### `industry_indicators`

| Column | Type | Description |
|--------|------|-------------|
| `industry` | string | Industry name |
| `Date` | date | Trading date |
| `returns` | float | Equal-weighted industry return |
| `volumes` | float | Normalized aggregate volume |
| `volatility` | float | Industry volatility |
| `returns_vw` | float | Value-weighted industry return |
| `volumes_vw` | float | Value-weighted aggregate volume |
| `volatility_vw` | float | Value-weighted volatility |
| `return_t-90_vw` … `return_t42_vw` | float | Value-weighted rolling returns (t-90 to t+42) |

## Usage

```python
from datasets import load_dataset

# Load CEO letters with sentiment
letters = load_dataset("artefactory/LEDGER-market-sentiment", "letters")

# Load EPS surprises
eps = load_dataset("artefactory/LEDGER-market-sentiment", "eps_surprise")

# Load daily stock prices
prices = load_dataset("artefactory/LEDGER-market-sentiment", "stock_prices")

# Load industry indicators
indicators = load_dataset("artefactory/LEDGER-market-sentiment", "industry_indicators")

# Example: filter to positive-sentiment letters
positive_letters = letters["train"].filter(lambda x: x["sentiment"] == "positive")
```

## Industries Covered

1. Basic Materials / Specialty Chemicals
2. Consumer Cyclical / Auto Parts
3. Consumer Defensive / Packaged Foods
4. Energy / Oil & Gas E&P
5. Energy / Oil & Gas Equipment & Services
6. Real Estate / REIT - Mortgage


## Citation key

If you use LEDGER datasets and / or code ressources, please consider citing our work with:

```
@misc{moslonka2026ledgerlongcontextbenchmarkcorporate,
      title={LEDGER: A Long-Context Benchmark of Corporate Annual Reports for Grounded Financial Retrieval and Extraction}, 
      author={Charles Moslonka and Amaury de Vitry and Arthur Garnier and Hicham Randrianarivo and Emmanuel Malherbe},
      year={2026},
      eprint={2606.13100},
      archivePrefix={arXiv},
      primaryClass={cs.CL},
      url={https://arxiv.org/abs/2606.13100}, 
}
```

## License

Code: MIT | Data: CC-BY-4.0

## Links

- **Collection**: [artefactory/ledger](https://huggingface.co/collections/artefactory/ledger)
- **Code**: [github.com/artefactory/LEDGER](https://github.com/artefactory/LEDGER)
- **ArXiv** [https://arxiv.org/abs/2606.13100](https://arxiv.org/abs/2606.13100)
