# LunarCrush Social Data - Versor Investments Historical Universe

Bulk historical delivery for Versor Investments LP, prepared 2026-07-07 per the ticker list (`TickerDf.csv`, 3,065 US tickers) sent by Shreyash Nayak on 2026-07-06.

Social data only, per your workflow: you bring the pricing, we bring the crowd. 24 months of daily history for the full universe.

## Files

| File | Contents |
|---|---|
| `versor_universe_social_daily_24mo.parquet` | Daily social time series, 2024-07-01 → 2026-07-07. 1,869,924 rows, 3,054 tickers, ~21 MB. |
| `coverage_audit.csv` | Per-ticker audit: rows delivered, first/last dates, listing status as of 2026-07-07, successor symbol where the ticker was renamed/acquired, and whether proprietary scores are present. |

Format: Apache Parquet, zstd compression, UTF-8. One row per ticker per day. `time` is Unix epoch seconds (UTC, day-bucket open).

## Schema (12 columns)

| Column | Type | Description |
|---|---|---|
| `symbol` | string | Ticker as it appears in your `TickerDf.csv` |
| `time` | int64 | Bucket open time, Unix seconds UTC |
| `contributors_active` | int | Unique authors with any post or interaction that day |
| `contributors_created` | int | Unique authors who created at least one new post |
| `interactions` | int | Total interactions on tracked posts (likes + comments + reposts + views, deduped) |
| `posts_active` | int | Posts receiving any new interaction that day |
| `posts_created` | int | New posts created that day |
| `sentiment` | float (0-100) | Volume-weighted sentiment score |
| `spam` | int | Posts/contributors filtered as spam (excluded from active counts) |
| `alt_rank` | float | AltRank - proprietary composite rank (lower = more notable) |
| `galaxy_score` | float (0-100) | Galaxy Score - proprietary composite health score |
| `social_dominance` | float (%) | Share of social attention vs the rest of the equities universe |

Sources: X (Twitter), TikTok, Reddit, YouTube, Instagram + 10,000+ news sites. Per-network splits of every metric are available via the API (`/topic/{net}:{sym}` endpoints) if you want Reddit-only, X-only, etc.

## Coverage summary (all 3,065 requested tickers audited)

Your file is a full historical universe, so many tickers no longer trade. Every ticker was individually classified (corporate-action research + verification):

| Listing status (as of 2026-07-07) | Tickers | With data delivered |
|---|---|---|
| Actively listed | 2,226 | 2,226 (100%) |
| Acquired / taken private | 517 | 511 |
| Renamed (see successor mapping) | 146 | 143 |
| Merged | 104 | 102 |
| Bankrupt | 59 | 59 |
| Delisted (other) | 13 | 13 |
| **Total** | **3,065** | **3,054** |

- **2,157 tickers** carry the proprietary scores (AltRank, Galaxy Score) in addition to the core social metrics; the remainder carry the core social metrics (interactions, posts, contributors, sentiment, dominance).
- **Dead tickers** carry social history up to (and often beyond) their corporate-action date. Rows after a ticker stopped trading reflect residual keyword-level chatter and should be masked by your point-in-time universe membership. Where a company lives on under a new symbol, `coverage_audit.csv` gives the successor (`successor_symbol`), and 422 of those successors are in our tracked universe - pull them under the current symbol for continuous history.
- **11 tickers returned no data** (all delisted micro-caps with negligible social footprint): AFAM, FCEA, GNCMA, IILG, NYLD.A, NYLDA, RSPP, SPNC, TLMR, VASC, WCIC.
- Dot-class tickers (BF.B, LGF.B, etc.) are covered; both the dotted and undotted spellings in your file map to the same series.
- Longer history (back to 2020) and hourly granularity are available on request.

## Reading the data

```python
import pandas as pd
df = pd.read_parquet('versor_universe_social_daily_24mo.parquet')
df['date'] = pd.to_datetime(df['time'], unit='s', utc=True).dt.date
```

DuckDB: `SELECT * FROM read_parquet('versor_universe_social_daily_24mo.parquet') WHERE symbol='AAPL' ORDER BY time;`

## Live access

The same schema is served in real time by the API your team is already provisioned for:

- Daily/hourly time series: `GET https://lunarcrush.com/api4/public/stocks/{symbol}/time-series/v2?bucket=day&interval=all`
- API keys: https://lunarcrush.com/en/developers/keys (anyone @versorinvest.com)
- Docs: https://lunarcrush.com/developers/api/endpoints

Rows are refreshed continuously; a same-day row updates intraday until the day closes. For point-in-time backtest hygiene, treat day T as final at T+1 00:00 UTC.

Questions: joe@lunarcrush.com (CEO) or dan@lunarcrush.com (CTO).
