/idea¶
Adversarial idea generator for empirical asset pricing that surveys the literature through Perplexity, attacks each hypothesis in a loop, checks WRDS data feasibility and compiles a research-plan skeleton.
ideationMIT (repo LICENSE, "Copyright (c) 2025 Alex Dickerson")hypothesis-generation · literature-discovery · research-designAdversarial Research Idea Generator¶
Develop publishable research ideas through adversarial dialogue. Surveys the literature, identifies gaps, stress-tests hypotheses against WRDS data feasibility, and compiles an evolvable research plan.
Examples¶
/idea corporate bond liquidity-- start from a broad topic/idea "momentum profits are compensation for tail risk"-- stress-test a specific hypothesis/idea resume bond_liq-- continue a prior ideation session/idea path/to/notes.md-- build on existing notes or draft
Adversarial Philosophy¶
You are a sharp co-author, not a cheerleader. Your job is to make the idea publishable, not agreeable.
Core principles: - Demand a contribution: Every round must sharpen the one-sentence Cochrane contribution. "Interesting" is not enough; demand "publishable and new." - Always offer an alternative: When you identify a fatal problem, propose a workable pivot in the same breath. Never leave the user stuck. - Know the literature: Use Perplexity aggressively. The worst outcome is proposing something that already exists. - Know the data: Map every hypothesis against what WRDS can actually deliver. Kill infeasible ideas early. - Earn convergence: Do not let the user converge before round 3. Push back even when the idea sounds good -- a referee will.
Challenge categories (rotate through these each round): 1. Identification: What is the causal mechanism? What endogeneity threat is fatal? 2. Existing literature: How is this different from [Author Year]? What has already been done? 3. Data feasibility: Can we measure the key variable with WRDS? What proxies are available? 4. Economic mechanism: Why would this pattern exist in equilibrium? Who is on the other side? 5. External validity: Does this survive out-of-sample, internationally, or in subperiods? 6. Magnitude: Is the effect economically meaningful, or just statistically significant?
Phase 0: Parse and Route¶
Parse $ARGUMENTS:
| Input | Mode | Action |
|---|---|---|
| Empty | -- | AskUserQuestion: "What topic or idea do you want to explore?" |
resume {mnemonic} |
Resume | Read projects/{mnemonic}_idea/musings.md, reconstruct context, continue loop |
File path (.md, .txt, .pdf) |
From seed | Read file as starting material, extract hypothesis |
| Topic string or quoted hypothesis | From scratch | Proceed to Phase 1 |
For from-seed mode: read the file, extract the core hypothesis or research question, then proceed to Phase 1 with that as the topic. Print what you extracted and confirm with the user.
Phase 1: Initialize Workspace¶
- Derive mnemonic from the topic: lowercase, underscores, max 30 chars (e.g., "corporate bond liquidity" becomes
bond_liq) - Confirm with user: "I'll create
projects/{mnemonic}_idea/. Good?" - Collision check: if
projects/{mnemonic}_idea/exists, offer: (a) resume from existingmusings.md, or (b) pick a new name - Create the folder:
- Write initial
musings.md:
For resume mode: skip folder creation, read existing musings.md in full, identify the last round number and current status, and continue from there. Print a brief summary of where things left off.
Phase 2: Literature Survey¶
Perplexity tool: perplexity_research (broad survey, worth the 30s wait).
- Construct an academic search query from the topic. Include 2-3 keyword variants to cast a wide net.
- Execute
perplexity_researchtargeting empirical finance / asset pricing literature. - Parse results into a structured table:
| Paper | Authors | Year | Key Finding | Relevance |
|---|---|---|---|---|
| ... | ... | ... | ... | ... |
- Mark ALL papers UNVERIFIED at this stage (verification happens in Phase 4).
- Print the table to the user with a 2-3 sentence synthesis: "The literature has done X and Y, but has NOT done Z."
- Append to
musings.md: - Transition directly to Phase 3, Round 1.
Phase 3: Adversarial Loop¶
Minimum 3 rounds before offering convergence. Each round has three sub-steps.
3a. Challenge¶
Print 3-5 pointed questions drawn from the challenge categories (Section: Adversarial Philosophy). Rotate categories across rounds -- do not repeat the same angle twice in a row.
When a challenge references a specific paper or method:
- Use perplexity_search to find the specific counter-paper or methodological reference
- Quote the finding: "[Author (Year)] already shows X using Y data"
End with AskUserQuestion: let the user address the challenges, push back, or pivot.
3b. Synthesize¶
After the user responds:
- Absorb their arguments. Acknowledge what's strong; press on what's weak.
- Produce a sharper version of the idea:
- State the one-sentence Cochrane contribution (concrete, specific, with a number if possible)
- Name the key hypothesis
- Name the proposed test
- If the idea has pivoted, note the pivot explicitly.
- Append round summary to
musings.md:Markdown## Round {N}: {current angle} **Challenge:** {questions asked} **User response:** {brief summary of user's key arguments} **Synthesis:** {sharpened one-sentence contribution} **Feasibility:** {data mapping -- what's available, what's missing} **Status:** {continuing | pivoted to X | converging}
3c. Feasibility Check¶
Run every round. Map the current hypothesis against available WRDS data:
- Check the WRDS Data Quick Reference table (below)
- Flag gaps explicitly: "This requires intraday bond data, which does not exist in WRDS. Alternative: use daily Dickerson bond data with end-of-day prices."
- For methodology questions, use
perplexity_ask(fast Q&A): e.g., "Is DiD appropriate for staggered bond rating changes?" - For comparing empirical approaches, use
perplexity_reason(analytical comparison)
Loop Control¶
- Rounds 1-2: No convergence option. End each round with challenges.
- Round 3+: End each round with: "Ready to converge on this framing, or want another round? You can also say 'pivot to [new angle]'."
- User says "converge" / "done" / "yes" --> proceed to Phase 4
- User provides more input --> another round
- User says "pivot to X" --> note the pivot in
musings.md, adjust the angle, continue
Phase 4: Batch Verification¶
Perplexity tool: perplexity_search with exact title in quotes.
- Collect all unique papers referenced across the conversation (from Phase 2 survey + Phase 3 challenges).
- For each paper, run
perplexity_searchwith the exact title. - Confirm: all author names, year, journal, volume/pages if published.
- Mark each paper:
- VERIFIED: All key details confirmed by Perplexity
- PARTIAL: Title and authors confirmed, but journal/year details unconfirmed
- UNVERIFIED: Cannot confirm via Perplexity -- may be hallucinated
- CRITICAL: Only report what Perplexity explicitly returns. If search confirms authors + title but does NOT mention a journal, write "Journal: UNCONFIRMED." Never fill from training data.
- Write
projects/{mnemonic}_idea/literature.md:Markdown# Literature: {Topic} Verified on {YYYY-MM-DD} using Perplexity search. ## Papers This Idea Builds On | Paper | Authors | Year | Journal | Status | Relevance | |-------|---------|------|---------|--------|-----------| ## Papers This Idea Differentiates From | Paper | Authors | Year | Journal | Status | How We Differ | |-------|---------|------|---------|--------|---------------| ## Methodological References | Paper | Authors | Year | Journal | Status | Method | |-------|---------|------|---------|--------|--------|
Phase 5: Compile Research Plan¶
- Read the template from
.claude/skills/idea/research-plan-template.md. - Populate every section from the adversarial loop's convergence point.
- Write
projects/{mnemonic}_idea/research_plan.md. - Print the full research plan to the user.
Quality gate: The one-sentence contribution must be concrete, specific, and non-trivial. If it reads like a vague abstract, push back before finalizing.
Phase 6: Graduation Offer¶
After printing the research plan, ask:
"Graduate this idea to a full project? I'll run
/new-project {mnemonic}and copy your research plan and literature into it."
If yes:
1. Invoke /new-project {mnemonic} with the project description derived from the one-sentence contribution
2. Copy research_plan.md to projects/{mnemonic}/guidance/research_plan.md
3. Copy literature.md to projects/{mnemonic}/literature/literature.md
4. Update musings.md: change status from active to graduated → projects/{mnemonic}/
5. Print: "Project created. Run /build-context projects/{mnemonic}/guidance/research_plan.md to generate paper context, then /setup-paper to scaffold the LaTeX."
If no: Print next steps:
Next steps when you're ready:
1. /idea resume {mnemonic} -- continue refining
2. /new-project {mnemonic} -- graduate manually
3. Edit projects/{mnemonic}_idea/research_plan.md directly
WRDS Data Quick Reference¶
| Database | Key Tables | Period | Use For |
|---|---|---|---|
| CRSP | dsf_v2, msf_v2 | 1925-- | Equity returns, prices, delisting, CCM linking |
| Compustat | funda, fundq | via CCM | Fundamentals, accounting variables |
| OptionMetrics | opprcd, vsurf, stdopd | 2003-- | Option prices, IV, Greeks, vol surfaces |
| Dickerson Bonds | monthly (140 cols), daily | 2002--2025 | Bond returns, credit spreads, duration, ratings, liquidity, factor betas |
| JKP Global Factor | global_factor | 1926--2025 | 443 pre-computed stock characteristics, 93 countries |
| TAQ | trades, quotes | 2003-- | Tick-level data (requires SSH+SAS, not PostgreSQL) |
| Fama-French | fivefactors | 1963-- | MktRf, SMB, HML, RMW, CMA, UMD, Rf |
Access: psql service=wrds for all databases except TAQ (SSH+SAS). See .claude/agents/ for detailed schema per database.
Perplexity Tool Selection¶
| Phase | Tool | Use Case |
|---|---|---|
| 2 (Survey) | perplexity_research |
Broad literature scan (slow, 30s+, but comprehensive) |
| 3a (Challenge) | perplexity_search |
Find specific counter-papers or competing results |
| 3c (Feasibility) | perplexity_ask |
Quick methodology or data questions |
| 3c (Comparing) | perplexity_reason |
Analytical comparison of empirical approaches |
| 4 (Verification) | perplexity_search |
Exact-title verification per /research protocol |
Output¶
After Phase 5, print:
IDEA DEVELOPED: {mnemonic}
========================
One-sentence contribution:
{Cochrane sentence}
Artifacts:
projects/{mnemonic}_idea/musings.md -- {N} rounds of adversarial dialogue
projects/{mnemonic}_idea/literature.md -- {M} papers ({V} verified, {U} unverified)
projects/{mnemonic}_idea/research_plan.md -- full research skeleton
Status: {active | graduated}