dexter-kabu-jp: The Japanese Stock Analyst That Checks Its Own Work

A terminal-native AI research desk for JPX data, valuation models, and a separate evaluator loop that helps keep finance answers grounded.

9 min read • View on GitHub • More from raditrejp

A wide editorial scene shows a lone terminal desk with two separate figures working side by side. One figure writes market analysis on stacked pages while a smaller second figure stamps the pages with a checklist, explaining the project’s actor-critic design.
The core idea is not just analysis. It is analysis with a built-in second opinion.
Key Takeaways

The Agent That Grades Its Own Research

Most finance copilots optimize for speed. This one optimizes for a second opinion. In dexter-kabu-jp, the agent does the work first, then a separate evaluator scores the result in a different LLM context with no tools attached.

That separation matters. Tool access can make an agent look smarter than it is. A critic without tools has to inspect the answer itself, which is the closest thing this repo has to a built-in compliance check.

The system’s most important move is structural, not numerical. It asks one model to work and another to judge.

実はClaude公式プラグインである finance Agentsの中にある/dcf-modelは ラジ株ナビがOSSしたDexter-kabu-jpにもあるんだよ😍 ClaudeのDCFは構造がむちゃくちゃ優秀✨️ だけどね WACC設定の現実性はDexter-kabu-jpが優秀‼️ (セクター調整済み)。 これは検証結果📝 https://t.co/uNOcn57jCj https://t.co/1i1J85qNc1

ラジトレ🏥高配当×個別株×インデックス投資家, Community member · @Raditre_FX on X

Why Japanese Equity Research Needs a Different Stack

A generic market agent can fetch prices. It usually cannot speak the local language of Japanese equity work: JPX data, disclosure docs, short selling data, margin trading, and the provider mix around JQuants and Radikabu Navi.

That changes the product shape. The repo is not just a data access layer. It is a workflow that assumes the user wants to move from raw market signals to valuation, critique, and follow-up without leaving the terminal.

DimensionGeneric finance tooldexter-kabu-jp
Data focusBroad market coverageJapan-first market sources and JPX workflows
WorkflowFetch data, answer onceGather data, reason, critique, refine
VerificationUsually implicitExplicit evaluator pass with no tools
MemoryOften ephemeralTemporal decay memory for recent context
ExtensibilityAPIs and scriptsSkills registry with override precedence
InterfaceWeb app or notebookTerminal-native research desk

How the Skills Registry Turns Models Into Modules

The cleanest way to read the codebase is to stop thinking about tools and start thinking about skills. DCF, Monte Carlo, and Altman Z'' are packaged as discoverable workflows, not loose helper functions.

That matters because it lets the project override behavior at the project level. The registry prefers project skills over built-ins, which means a team can tune its own valuation logic without rewriting the engine.

// Conceptual precedence in the skill registry
const loadedSkill = projectSkills[name] ?? builtinSkills[name];

if (!loadedSkill) {
  throw new Error(`Unknown skill: ${name}`);
}

return loadedSkill;

Memory That Fades on Purpose

The memory system is not trying to preserve everything. It tries to preserve the right things. Recent market conditions and fresh user intent matter more than stale context, so the agent’s attention decays the way an analyst’s notebook does during a live session.

A close-up illustration shows a layered memory ledger with fresh notes at the top, recent user preferences in the middle, and faded older entries at the bottom. Arrows and crossed-out marks show how older context loses weight while recent context stays vivid.
The memory model favors recency without erasing the past. That is a better fit for fast-moving markets than flat recall.

That is a subtle but important design choice. The system is not pretending all context is equal. It is encoding analyst behavior into the retrieval layer.

The Terminal Is Not a Frontend Here. It Is the Product

The TUI is not a compromise. It is how the system stays legible while the agent is thinking, calling tools, and emitting intermediate events. The async generator pattern matters because it turns a black box into a live research stream.

For this kind of workflow, that is better than a polished dashboard. A terminal session can show the sequence of thought, the tool calls, and the evaluation step in one place, which is exactly what a finance user needs when trust is the bottleneck.

What It Competes With, and What It Refuses to Be

The easiest comparison is with libraries like yfinance and pandas-datareader. Those are excellent for data extraction, but they are not trying to run a research workflow with critique, memory, and domain-specific skills.

That is the key distinction. dexter-kabu-jp is not just a better scraper. It is a more opinionated way to do analysis.

ToolStrengthGap relative to dexter-kabu-jp
yfinanceQuick access to broad market dataNo embedded evaluation loop or research workflow
pandas-datareaderConvenient DataFrame ingestionNot tuned for JP-specific analyst tasks
Generic chat agentNatural language interactionWeak on verification and repeatable finance structure
JPX utility scriptsNiche data handlingUsually lack orchestration and critique

A Personal Research Desk, Not a Prompt Wrapper

The architectural through line is clear. Actor, critic, skills, memory, and terminal UI all point toward the same goal: make finance AI behave less like autocomplete and more like a disciplined junior analyst.

That is why the project feels promising even in an early state. It does not just answer questions about Japanese stocks. It tries to make those answers more trustworthy, more reusable, and more grounded in the actual workflow of research.