# Combined Data & Metadata Endpoints ## 1. Full Single Series — `/series/full` **URL:** `GET https://data.financialresearch.gov/hf/v1/series/full` Returns both timeseries data and all metadata for one series in a single call. ### Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `mnemonic` | string | **Yes** | Series identifier | | `start_date` | string | No | Start date `YYYY-MM-DD` | | `end_date` | string | No | End date `YYYY-MM-DD` | | `periodicity` | string | No | Resample frequency | | `how` | string | No | Aggregation: `last`, `first`, `mean`, `median`, `sum` | | `remove_nulls` | string | No | `true` to remove nulls | | `time_format` | string | No | `date` or `ms` | ### Response ```json { "FPF-ALLQHF_NAV_SUM": { "timeseries": { "aggregation": [["2013-03-31", 1143832916], ...], "disclosure_edits": [...] }, "metadata": { ... } } } ``` ### Examples ```python import requests import pandas as pd BASE = "https://data.financialresearch.gov/hf/v1" resp = requests.get(f"{BASE}/series/full", params={ "mnemonic": "FPF-ALLQHF_NAV_SUM", "start_date": "2018-01-01" }) result = resp.json() mnemonic = "FPF-ALLQHF_NAV_SUM" # Extract timeseries ts = result[mnemonic]["timeseries"]["aggregation"] df = pd.DataFrame(ts, columns=["date", "nav_sum"]) # Extract metadata meta = result[mnemonic]["metadata"] print(meta["description"]["name"]) print(meta["schedule"]["observation_frequency"]) ``` --- ## 2. Multiple Series Full — `/series/multifull` **URL:** `GET https://data.financialresearch.gov/hf/v1/series/multifull` Returns data + metadata for multiple series in one request. Response is keyed by mnemonic, same structure as `/series/full`. ### Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `mnemonics` | string | **Yes** | Comma-separated mnemonics, no spaces | | `start_date` | string | No | Start date `YYYY-MM-DD` | | `end_date` | string | No | End date `YYYY-MM-DD` | | `periodicity` | string | No | Resample frequency | | `how` | string | No | Aggregation method | | `remove_nulls` | string | No | `true` to remove nulls | | `time_format` | string | No | `date` or `ms` | ### Examples ```python # Fetch multiple leverage series at once resp = requests.get(f"{BASE}/series/multifull", params={ "mnemonics": "FPF-ALLQHF_LEVERAGERATIO_GAVWMEAN,FPF-STRATEGY_EQUITY_LEVERAGERATIO_GAVWMEAN,FPF-STRATEGY_CREDIT_LEVERAGERATIO_GAVWMEAN", "start_date": "2015-01-01", "remove_nulls": "true" }) results = resp.json() # Build a combined DataFrame frames = [] for mne, data in results.items(): ts = data["timeseries"]["aggregation"] df = pd.DataFrame(ts, columns=["date", mne]) df["date"] = pd.to_datetime(df["date"]) df = df.set_index("date") frames.append(df) combined = pd.concat(frames, axis=1) ``` --- ## 3. Full Dataset — `/series/dataset` **URL:** `GET https://data.financialresearch.gov/hf/v1/series/dataset` Without parameters: returns basic info about all datasets. With `dataset=`: returns all series in that dataset with full data. > **Warning:** Dataset responses can be very large. Use `start_date` to limit the data range for performance. ### Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `dataset` | string | No | Dataset key: `fpf`, `tff`, `scoos`, `ficc` | | `vintage` | string | No | `p` (preliminary), `f` (final), `a` (as of). Default: all | | `start_date` | string | No | Start date `YYYY-MM-DD` | | `end_date` | string | No | End date `YYYY-MM-DD` | | `periodicity` | string | No | Resample frequency | | `how` | string | No | Aggregation method | | `remove_nulls` | string | No | `true` to remove nulls | | `time_format` | string | No | `date` or `ms` | ### Examples ```python # List all available datasets resp = requests.get(f"{BASE}/series/dataset") datasets = resp.json() # {"ficc": {"long_name": "...", "short_name": "..."}, "fpf": {...}, ...} # Download full FPF dataset (recent data only) resp = requests.get(f"{BASE}/series/dataset", params={ "dataset": "fpf", "start_date": "2020-01-01" }) fpf_data = resp.json() # fpf_data["short_name"], fpf_data["long_name"] # fpf_data["timeseries"]["FPF-ALLQHF_NAV_SUM"]["timeseries"]["aggregation"] # Annual data with custom periodicity resp = requests.get(f"{BASE}/series/dataset", params={ "dataset": "fpf", "start_date": "2015-01-01", "end_date": "2024-12-31", "periodicity": "A", "how": "last" }) # Only final vintage resp = requests.get(f"{BASE}/series/dataset", params={ "dataset": "ficc", "vintage": "f" }) ``` --- ## 4. Category Data — `/categories` **URL:** `GET https://data.financialresearch.gov/hf/v1/categories` Returns a **CSV file** with all series data for a given category. ### Parameters | Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `category` | string | **Yes** | Category key | ### Available Categories | Key | Description | |-----|-------------| | `complexity` | Open positions, strategy distribution, asset class exposure | | `counterparties` | Counterparty concentration and prime broker lending | | `leverage` | Leverage ratios, borrowing, gross notional exposure | | `liquidity` | Financing maturity, investor redemption terms, portfolio liquidity | | `risk_management` | Stress test results | | `size` | Industry size (AUM, fund count, net/gross assets) | ### Examples ```python # Download leverage category as CSV resp = requests.get(f"{BASE}/categories", params={"category": "leverage"}) # Response is CSV text import io df = pd.read_csv(io.StringIO(resp.text)) # Also accessible via direct URL: # https://data.financialresearch.gov/hf/v1/categories?category=leverage ```