# Research Ingestion

> Absorb external research reports/papers into structured, retrievable hypothesis cues via FactorMiner's Report-to-Memory Absorption (RMA) service — an OHLCV-eligibility gate, a mechanism-family classifier, and research-path cues that feed factor generation prompts. Use to turn a report fragment into a research hypothesis before mining, not to mine factors directly. Triggers on "ingest research", "absorb this report", "is this idea OHLCV-representable", "research archetype", "hypothesis cue", "report-to-memory", "RMA".

- Skill: `minihellboy/research-ingestion` (Agent Skill)
- Install (CLI): `npx skillmds@latest add minihellboy/research-ingestion`
- Raw SKILL.md: https://api.skillmd.com/api/skills/minihellboy/research-ingestion/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: minihellboy (https://skillmd.com/u/minihellboy)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/minihellboy/research-ingestion

---


# Research Ingestion

This skill runs FactorMiner's Report-to-Memory Absorption (RMA) service — a scoped-down implementation of the RMA layer from XAlpha (arXiv:2607.08332): it screens external research fragments for OHLCV-representability, classifies the survivors into a broad mechanism family, and extracts reusable research-path hypothesis cues. It does not mine, generate, or backtest factors; it turns raw research text into structured input for `factor-mining`'s generation prompts.

## Why absorption instead of raw text

Feeding report text directly into a generation prompt lets ungrounded or OHLCV-infeasible claims (analyst EPS revisions, order-book microstructure, fundamentals) leak into hypothesis generation. RMA gates every fragment first, so only price/volume-representable mechanisms reach the mining loop.

## The A/B/C pipeline

| Layer | Question | Output |
|---|---|---|
| A (eligibility) | Can this mechanism be observed, inferred, or proxied from daily OHLCV bars alone? | KEEP/DROP + reason |
| B (mechanism family) | Which broad mechanism bucket does it belong to? | One of `factorminer.architecture.families.MECHANISM_FAMILIES` |
| C (archetype) | What's the reusable research cue? | A `ResearchArchetype` record with `research_paths` |

DROPped fragments (fundamentals, analyst estimates, order-book state, news/sentiment, macro releases) are discarded — they are not representable under the daily OHLCV factor contract.

## Workflow

### 1. Ingest a research note

```bash
factorminer ingest-research path/to/report_fragment.txt
```

Add `--mock` to run offline with the deterministic mock LLM provider (no API calls) — useful for smoke tests, never as a research result.

### 2. Read the classification

The command prints the KEEP/DROP verdict and reason. For a KEPT fragment it also prints the assigned mechanism family, fine-grained family, mechanism role, and research-path cues.

### 3. Hand off to mining

The resulting `ResearchArchetype` records are meant to be threaded into `PromptContextBuilder.build(..., research_archetypes=[...])` so `factor-mining`'s generation prompts carry the research-path text alongside memory and family context. Absorption itself never calls the mining loop — invoke `factor-mining` separately once you have archetypes worth exploring.

## Guardrails

- A-layer eligibility is a feasibility gate, not a quality signal — a KEPT fragment is not yet a validated hypothesis, only one that *could* become an OHLCV factor.
- Never present a `ResearchArchetype`'s `research_paths` as a factor formula; it is a hypothesis cue for `factor-mining`, not executable code.
- `--mock` classification is deterministic keyword heuristics, not real research judgment — never cite mock output as evidence.

## MCP alternative

When the FactorMiner MCP server is connected, `ingest_research_note` exposes the same workflow as a tool, returning the KEEP/DROP verdict and (for KEEP) the archetype record directly.

