@if (predictionMode) { } @else {
D DOHA RESEARCH DSE · MULTI-AGENT DOSSIER
@if (loadingAnalysis() && analysis()) {
{{ language() === 'bn' ? 'নতুন প্রতিবেদন তৈরি হচ্ছে' : 'Building a fresh report' }} {{ jobMessage() || (language() === 'bn' ? 'এজেন্টরা প্রমাণ পর্যালোচনা করছে…' : 'Agents are reviewing the evidence…') }}
} @if (loadingAnalysis() && !analysis()) {
D

MULTI-AGENT RESEARCH IN PROGRESS

{{ language() === 'bn' ? 'প্রমাণ থেকে বিনিয়োগ সিদ্ধান্ত তৈরি হচ্ছে' : 'Turning evidence into an investment decision' }}

{{ jobMessage() || (language() === 'bn' ? 'ডিএসই তথ্য লোড হচ্ছে…' : 'Loading verified DSE evidence…') }}

} @if (errorMessage() && !analysis()) {
!

REPORT NOT AVAILABLE

{{ language() === 'bn' ? 'এই কোম্পানির বিশ্লেষণ এখনও প্রস্তুত নয়' : 'No completed dossier for this company yet' }}

{{ errorMessage() }}

} @if (analysis(); as report) {
{{ report.sector || 'DSE Equity' }} {{ report.analysis_date | date: 'mediumDate' }} @if (report.ai_research) { AI GROUNDED }

INVESTMENT RESEARCH DOSSIER

{{ report.company_name }}

{{ report.symbol }} Dhaka Stock Exchange Generated {{ report.generated_at | date: 'medium' }}
{{ language() === 'bn' ? 'চূড়ান্ত অবস্থান' : 'FINAL POSITION' }} {{ finalDecision(report) }} {{ hasAgentEvidence(report) ? 'Portfolio Manager · final multi-agent authority' : report.ai_research ? copy(report.ai_research.trader_report.action) : copy(report.score_label) }}
@if (report.ai_research; as ai) {
AI {{ language() === 'bn' ? 'স্কোরের পেছনের সম্পূর্ণ বিশ্লেষণ' : 'THE FULL ANALYSIS BEHIND THE SCORE' }} {{ language() === 'bn' ? 'কোম্পানির ১০-ধাপের বিশ্লেষণ দেখুন' : 'Read the 10-question company analysis' }} {{ copy(report.headline) }} {{ language() === 'bn' ? 'বিশ্লেষণ খুলুন' : 'Open analysis' }}

AI COMPANY ANALYSIS · {{ ai.provider }} / {{ ai.model }}

{{ copy(report.in_depth_title) }}

{{ copy(report.in_depth_snippet) }}

Data as of {{ report.analysis_date | date: 'mediumDate' }}
@for (section of report.report_sections; track section.key; let index = $index) {
{{ (index + 1).toString().padStart(2, '0') }}

{{ copy(section.title) }}

{{ copy(section.summary) }}

@for (paragraph of section.body; track $index) {

{{ copy(paragraph) }}

} @if (section.key === 'valuation') {
VALUE TODAY{{ copy(report.valuation.verdict_label) }}
CURRENT{{ formatTaka(report.valuation.current_price) }}
ROUGH ESTIMATE{{ formatTaka(report.valuation.rough_estimate) }}
FAIR RANGE{{ formatTaka(report.valuation.fair_range_low) }}–{{ formatTaka(report.valuation.fair_range_high) }}
} @if (section.bullets.length) {
    @for (bullet of section.bullets; track bullet.en) {
  • {{ copy(bullet) }}
  • }
}
}

Grounded structured analysis. Generated from date-bounded DSE evidence and validated against a fixed ten-question format. {{ copy(report.disclaimer) }}

}
{{ language() === 'bn' ? 'সর্বশেষ মূল্য' : 'Latest price' }} {{ formatTaka(report.market.latest_price) }} @if (report.market.change_percent !== null) { {{ report.market.change_percent > 0 ? '▲' : report.market.change_percent < 0 ? '▼' : '•' }} {{ signedPercent(report.market.change_percent) }} today }
{{ language() === 'bn' ? 'পূর্ববর্তী ক্লোজ' : 'Previous close' }} {{ formatTaka(report.market.previous_close) }}
52W low {{ formatTaka(report.market.fifty_two_week_low) }}
52-week position{{ rangePosition(report) | number: '1.0-0' }}%
LowHigh
52W high {{ formatTaka(report.market.fifty_two_week_high) }}

01 · DECISION AT A GLANCE

{{ copy(report.headline) }}

{{ decisionTone(report) === 'positive' ? '✓' : decisionTone(report) === 'negative' ? '×' : '!' }} {{ finalDecision(report) }}

{{ copy(report.in_depth_snippet) }}

@for (takeaway of report.takeaways; track takeaway.en; let index = $index) {
{{ (index + 1).toString().padStart(2, '0') }}

{{ copy(takeaway) }}

}
@if (report.ai_research; as ai) {
AI SYNTHESIS {{ ai.provider }} · {{ ai.model }}

{{ copy(ai.score_rationale) }}

Evidence confidence {{ ai.score_confidence | uppercase }}
}
@if (report.ai_research; as ai) {
+

WHAT COULD WORK

Potential catalysts

    @for (item of ai.trader_report.catalysts; track item.en) {
  • {{ copy(item) }}
  • }
×

WHEN TO REASSESS

Invalidation conditions

    @for (item of ai.trader_report.invalidation_conditions; track item.en) {
  • {{ copy(item) }}
  • }
}

02 · PRICE VS VALUE

{{ language() === 'bn' ? 'দামের পেছনে মূল্য কতটা শক্ত?' : 'What does the price imply?' }}

{{ copy(report.valuation.summary) }}

{{ copy(report.valuation.verdict_label) }}
CURRENT PRICE{{ formatTaka(report.valuation.current_price) }}
ROUGH FAIR VALUE{{ formatTaka(report.valuation.rough_estimate) }}
ESTIMATE GAP {{ fairValueGap(report) === null ? '—' : signedPercent(fairValueGap(report)) }}
CONFIDENCE{{ report.valuation.confidence | titlecase }}
@if (report.valuation.fair_range_low !== null && report.valuation.fair_range_high !== null) {
Relative value mapNot a price target
Current
{{ formatTaka(report.valuation.fair_range_low) }} {{ formatTaka(report.valuation.fair_range_high) }}
}
@for (method of report.valuation.methods; track method.key) {
{{ method.available ? '✓' : '—' }}
{{ copy(method.label) }}{{ formatTaka(method.value) }}
}

These are educational estimates calculated from available DSE evidence. They are not guaranteed values or instructions to trade.

03 · EVIDENCE SCORECARD

{{ language() === 'bn' ? 'কোন বিষয় শক্ত, কোনটিতে সতর্কতা?' : 'Where the evidence is strong—and where it is not' }}

Green supports the case, amber requires monitoring, and red deserves investigation before capital is committed.

Positive ! Watch × Concern
@for (factor of report.factors; track factor.key) {
{{ factor.status === 'positive' ? '✓' : factor.status === 'negative' ? '×' : factor.status === 'caution' ? '!' : '•' }}

{{ copy(factor.subtitle) }}

{{ copy(factor.title) }}

{{ factorAverage(report, factor.key) | number: '1.0-1' }}/10

{{ copy(factor.explanation) }}

@for (metric of factor.metrics; track metric.key) {
{{ copy(metric.label) }}{{ metric.display_value }}
{{ metric.score | number: '1.0-1' }}/10
}
{{ factor.status === 'positive' ? '✓' : factor.status === 'negative' ? '×' : '!' }}{{ factorStatus(factor.status) }}
}

04 · COMPLETE MULTI-AGENT RECORD

Every report. One readable dossier.

The CLI’s full analyst, research, trading, risk, and portfolio output is preserved below. Open any document to read its headings, tables, lists, and conclusions in a clean research format.

{{ reportDocumentCount() }}documents available
@if (reportGroups().length) {
@for (group of reportGroups(); track group.key) {

{{ group.kicker }}

{{ group.title }}

{{ group.description }}

@for (document of group.documents; track document.key) {
{{ document.icon }} {{ document.role }}{{ document.title }} {{ document.tone === 'positive' ? '✓' : document.tone === 'negative' ? '×' : document.tone === 'caution' ? '!' : '•' }}
}
}
} @else {
i

No multi-agent state was attached to this saved analysis.

Run a fresh analysis from the main CLI to populate the complete analyst, debate, risk, and portfolio dossier.

}

PROVENANCE & AUDIT

Know where every layer came from.

@for (source of report.sources; track source.name) {
{{ source.source_type === 'dse_api' ? 'DSE' : source.source_type === 'agent_state' ? 'AI' : source.source_type === 'calculation' ? 'ƒx' : 'LLM' }}
{{ source.source_type.replace('_', ' ') }}

{{ source.name }}

{{ source.detail }}

}
@if (hasAgentEvidence(report)) {
Developer view · complete JSON state log Open technical record
{{ rawState(report) }}
}
}
}