/** * Journal quality scorer — non-outcome trade discipline metric. * * Scores each journal entry on how well it was *justified*, not whether * it made money. The five components are weighted to reward the same * habits a discretionary trader's playbook teaches: * * verifiability (30%) did the entry name a direction and a price target? * evidence (25%) did it cite sources / thesis / indicators? * specificity (20%) symbol, tags — not vague vibes? * novelty (15%) not the 4th identical revenge-trade this week? * review (10%) did the user write a post-trade note? * * The total is on a 0–5 scale, presented in the portfolio footer so the * agent and the user can see the discipline curve over time. * * Pure function — no I/O, no clock, deterministic given inputs. Used at * append time (TradeLog) and at render time (TradingPortfolio). */ import type { TradeLogEntry, QualityScore } from './trade-log.js'; /** * Score one journal entry against the prior history (used for novelty). * `history` should contain entries chronologically before `entry`. */ export declare function scoreEntry(entry: TradeLogEntry, history?: TradeLogEntry[]): QualityScore; export interface AggregateScore { count: number; averageTotal: number; averageVerifiability: number; averageEvidence: number; averageSpecificity: number; averageNovelty: number; averageReview: number; } /** * Average the qualityScore fields across a set of entries — used by the * portfolio footer to show "your last 10 trades scored 3.2 / 5 on average". * * Entries without a persisted qualityScore are skipped (back-compat with * pre-v3.20 trades). Returns null when there's nothing scored to average. */ export declare function aggregateScores(entries: TradeLogEntry[]): AggregateScore | null;