@v587d/capital-generation 2.6.5 → 2.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +92 -0
- package/LICENSE +1 -1
- package/README.md +83 -30
- package/THIRD_PARTY_NOTICES.md +51 -0
- package/capital-config/client.js +58 -2
- package/capital-config/client.src.cjs +482 -27
- package/capital-config/index.js +177 -4
- package/capital-config/package.json +1 -1
- package/capital-watchlist/client.js +48 -7
- package/capital-watchlist/client.src.cjs +383 -66
- package/capital-watchlist/holding-rules.js +64 -0
- package/capital-watchlist/index.js +117 -2
- package/capital-watchlist/package.json +2 -1
- package/chart-ui/package.json +1 -1
- package/lib/agents/selected-skills-provider.d.ts +26 -0
- package/lib/agents/selected-skills-provider.js +99 -0
- package/lib/index.d.ts +13 -0
- package/lib/index.js +35 -11
- package/lib/time/tools.d.ts +6 -0
- package/lib/time/tools.js +6 -1
- package/lib/watchlist/tools.d.ts +52 -0
- package/lib/watchlist/tools.js +146 -0
- package/lib/web-retriever/local-fetch.d.ts +1 -1
- package/lib/web-retriever/local-fetch.js +1 -1
- package/lib/web-retriever/wind-client.d.ts +1 -1
- package/lib/web-retriever/wind-client.js +1 -1
- package/package.json +13 -3
- package/preset/capital-generation/agent.patch.yml +7 -0
- package/preset/capital-generation/skills/capital-equity-research/SKILL.md +45 -0
- package/preset/capital-generation/skills/capital-event-impact/SKILL.md +29 -0
- package/preset/capital-generation/skills/capital-portfolio-review/SKILL.md +29 -0
- package/selected-skills/InvestSkill/ADDING-NEW-SKILLS.md +546 -0
- package/selected-skills/InvestSkill/CHANGELOG.md +373 -0
- package/selected-skills/InvestSkill/CI-CD-GUIDE.md +432 -0
- package/selected-skills/InvestSkill/CLAUDE.md +148 -0
- package/selected-skills/InvestSkill/CONTRIBUTING.md +291 -0
- package/selected-skills/InvestSkill/DEPLOYMENTS.md +321 -0
- package/selected-skills/InvestSkill/FAQ.md +509 -0
- package/selected-skills/InvestSkill/GEMINI.md +419 -0
- package/selected-skills/InvestSkill/LICENSE +21 -0
- package/selected-skills/InvestSkill/PLATFORM-COMPATIBILITY.md +529 -0
- package/selected-skills/InvestSkill/README-claude-code.md +435 -0
- package/selected-skills/InvestSkill/README-cursor.md +475 -0
- package/selected-skills/InvestSkill/README-gemini.md +532 -0
- package/selected-skills/InvestSkill/README-ollama.md +106 -0
- package/selected-skills/InvestSkill/README-zh-TW.md +461 -0
- package/selected-skills/InvestSkill/README.md +311 -0
- package/selected-skills/InvestSkill/RELEASE-QUICK-REFERENCE.md +230 -0
- package/selected-skills/InvestSkill/RELEASE_NOTES.md +121 -0
- package/selected-skills/InvestSkill/SECURITY.md +232 -0
- package/selected-skills/InvestSkill/TODO.md +28 -0
- package/selected-skills/InvestSkill/UPSTREAM.md +62 -0
- package/selected-skills/InvestSkill/install.sh +212 -0
- package/selected-skills/InvestSkill/package.json +64 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/README.md +119 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/10k-digest/SKILL.md +338 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/bear-case/SKILL.md +233 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/catalyst-calendar/SKILL.md +327 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/chart-master/SKILL.md +648 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/competitor-analysis/SKILL.md +478 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/dcf-valuation/SKILL.md +109 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/dividend-analysis/SKILL.md +684 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/earnings-call-analysis/SKILL.md +456 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/earnings-preview/SKILL.md +277 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/economics-analysis/SKILL.md +349 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/etf-analysis/SKILL.md +279 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/fact-check/SKILL.md +288 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/financial-report-analyst/SKILL.md +544 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/full-report/SKILL.md +301 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/fundamental-analysis/SKILL.md +67 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/industry-map/SKILL.md +336 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/insider-trading/SKILL.md +502 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/institutional-ownership/SKILL.md +548 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/learning-coach/SKILL.md +311 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/options-analysis/SKILL.md +495 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/portfolio-review/SKILL.md +465 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/position-ladder/SKILL.md +429 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/report-generator/SKILL.md +857 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/research-bundle/SKILL.md +94 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/result-validator/SKILL.md +174 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/risk-stress-test/SKILL.md +293 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/sector-analysis/SKILL.md +426 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/short-interest/SKILL.md +397 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-eval/SKILL.md +645 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-screener/SKILL.md +244 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/stock-valuation/SKILL.md +640 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/tax-lens/SKILL.md +351 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/technical-analysis/SKILL.md +654 -0
- package/selected-skills/InvestSkill/plugins/us-stock-analysis/skills/thesis-tracker/SKILL.md +317 -0
- package/selected-skills/README.md +54 -0
- package/selected-skills/catalog.js +733 -0
- package/selected-skills/china-stock-research-skills/.github/ISSUE_TEMPLATE/bug_report.md +35 -0
- package/selected-skills/china-stock-research-skills/.github/ISSUE_TEMPLATE/skill_request.md +28 -0
- package/selected-skills/china-stock-research-skills/.github/PULL_REQUEST_TEMPLATE.md +15 -0
- package/selected-skills/china-stock-research-skills/CHANGELOG.md +59 -0
- package/selected-skills/china-stock-research-skills/CONTRIBUTING.md +121 -0
- package/selected-skills/china-stock-research-skills/GITHUB_PUBLISHING.md +259 -0
- package/selected-skills/china-stock-research-skills/INSTALL.md +151 -0
- package/selected-skills/china-stock-research-skills/LICENSE +21 -0
- package/selected-skills/china-stock-research-skills/PUBLISH_CHECKLIST.md +165 -0
- package/selected-skills/china-stock-research-skills/README.en.md +209 -0
- package/selected-skills/china-stock-research-skills/README.md +209 -0
- package/selected-skills/china-stock-research-skills/RELEASE_ASSETS.md +222 -0
- package/selected-skills/china-stock-research-skills/ROADMAP.md +45 -0
- package/selected-skills/china-stock-research-skills/SKILLS.md +85 -0
- package/selected-skills/china-stock-research-skills/UPSTREAM.md +11 -0
- package/selected-skills/china-stock-research-skills/examples/full-report-flow.md +20 -0
- package/selected-skills/china-stock-research-skills/examples/module-select-cases.md +26 -0
- package/selected-skills/china-stock-research-skills/examples/quickstart-prompts.md +25 -0
- package/selected-skills/china-stock-research-skills/skills/business-decomposition-order-quality/SKILL.md +55 -0
- package/selected-skills/china-stock-research-skills/skills/business-decomposition-order-quality/references/idc-order-ledger-guide.md +34 -0
- package/selected-skills/china-stock-research-skills/skills/business-decomposition-order-quality/references/order-quality-checklist.md +16 -0
- package/selected-skills/china-stock-research-skills/skills/china-stock-research-orchestrator/SKILL.md +75 -0
- package/selected-skills/china-stock-research-skills/skills/china-stock-research-orchestrator/references/final-output-contract.md +62 -0
- package/selected-skills/china-stock-research-skills/skills/china-stock-research-orchestrator/references/routing-matrix.md +34 -0
- package/selected-skills/china-stock-research-skills/skills/china-stock-research-orchestrator/references/sector-overlay-escalation-rules.md +38 -0
- package/selected-skills/china-stock-research-skills/skills/financial-health/SKILL.md +54 -0
- package/selected-skills/china-stock-research-skills/skills/financial-health/references/idc-balance-sheet-stress-guide.md +31 -0
- package/selected-skills/china-stock-research-skills/skills/financial-health/references/red-flag-checklist.md +14 -0
- package/selected-skills/china-stock-research-skills/skills/industry-competition-moat/SKILL.md +54 -0
- package/selected-skills/china-stock-research-skills/skills/industry-competition-moat/references/idc-value-chain-and-peers.md +42 -0
- package/selected-skills/china-stock-research-skills/skills/industry-competition-moat/references/moat-grid.md +13 -0
- package/selected-skills/china-stock-research-skills/skills/risk-warning-catalysts/SKILL.md +54 -0
- package/selected-skills/china-stock-research-skills/skills/risk-warning-catalysts/references/idc-monitoring-indicators.md +33 -0
- package/selected-skills/china-stock-research-skills/skills/risk-warning-catalysts/references/monitoring-dashboard.md +25 -0
- package/selected-skills/china-stock-research-skills/skills/shared/references/analysis-pattern-selector.md +24 -0
- package/selected-skills/china-stock-research-skills/skills/shared/references/asset-heavy-ramp-overlay.md +28 -0
- package/selected-skills/china-stock-research-skills/skills/shared/references/business-model-transition-overlay.md +28 -0
- package/selected-skills/china-stock-research-skills/skills/shared/references/citation-standard.md +48 -0
- package/selected-skills/china-stock-research-skills/skills/shared/references/company-disclosure-map.md +37 -0
- package/selected-skills/china-stock-research-skills/skills/shared/references/consumer-channel-brand-overlay.md +29 -0
- package/selected-skills/china-stock-research-skills/skills/shared/references/cyclical-price-driven-overlay.md +29 -0
- package/selected-skills/china-stock-research-skills/skills/shared/references/export-manufacturing-supply-chain-overlay.md +29 -0
- package/selected-skills/china-stock-research-skills/skills/shared/references/financial-kpi-dictionary.md +43 -0
- package/selected-skills/china-stock-research-skills/skills/shared/references/idc-heavy-asset-transition-overlay.md +73 -0
- package/selected-skills/china-stock-research-skills/skills/shared/references/language-output-standard.md +36 -0
- package/selected-skills/china-stock-research-skills/skills/shared/references/project-order-business-overlay.md +28 -0
- package/selected-skills/china-stock-research-skills/skills/shared/references/regulated-healthcare-policy-overlay.md +29 -0
- package/selected-skills/china-stock-research-skills/skills/shared/references/research-output-template.md +50 -0
- package/selected-skills/china-stock-research-skills/skills/shared/references/sector-adaptation-checklist.md +42 -0
- package/selected-skills/china-stock-research-skills/skills/shared/references/source-registry.md +49 -0
- package/selected-skills/china-stock-research-skills/skills/shared/templates/catalyst-calendar.md +5 -0
- package/selected-skills/china-stock-research-skills/skills/shared/templates/company-fact-sheet.md +25 -0
- package/selected-skills/china-stock-research-skills/skills/shared/templates/evidence-table.md +5 -0
- package/selected-skills/china-stock-research-skills/skills/shared/templates/idc-project-ledger.md +5 -0
- package/selected-skills/china-stock-research-skills/skills/shared/templates/valuation-scenario-table.md +7 -0
- package/selected-skills/china-stock-research-skills/skills/strategy-business-transition/SKILL.md +55 -0
- package/selected-skills/china-stock-research-skills/skills/strategy-business-transition/references/idc-transition-markers.md +27 -0
- package/selected-skills/china-stock-research-skills/skills/strategy-business-transition/references/transition-scorecard.md +13 -0
- package/selected-skills/china-stock-research-skills/skills/valuation-investment-strategy/SKILL.md +55 -0
- package/selected-skills/china-stock-research-skills/skills/valuation-investment-strategy/references/idc-valuation-overlays.md +31 -0
- package/selected-skills/china-stock-research-skills/skills/valuation-investment-strategy/references/method-selection.md +14 -0
- package/selected-skills/investment-skills/.github/workflows/validate.yml +25 -0
- package/selected-skills/investment-skills/.tbd/config.yml +107 -0
- package/selected-skills/investment-skills/LICENSE +21 -0
- package/selected-skills/investment-skills/Makefile +29 -0
- package/selected-skills/investment-skills/README.md +253 -0
- package/selected-skills/investment-skills/UPSTREAM.md +12 -0
- package/selected-skills/investment-skills/docs/development.md +37 -0
- package/selected-skills/investment-skills/docs/roadmap.md +25 -0
- package/selected-skills/investment-skills/skills/buffett-investment-framework/SKILL.md +192 -0
- package/selected-skills/investment-skills/skills/buffett-investment-framework/agents/openai.yaml +4 -0
- package/selected-skills/investment-skills/skills/buffett-investment-framework/references/00-source-key.md +82 -0
- package/selected-skills/investment-skills/skills/buffett-investment-framework/references/01-decision-posture.md +242 -0
- package/selected-skills/investment-skills/skills/buffett-investment-framework/references/02-business-economics.md +188 -0
- package/selected-skills/investment-skills/skills/buffett-investment-framework/references/03-management-governance.md +213 -0
- package/selected-skills/investment-skills/skills/buffett-investment-framework/references/04-financial-reality.md +192 -0
- package/selected-skills/investment-skills/skills/buffett-investment-framework/references/05-valuation.md +166 -0
- package/selected-skills/investment-skills/skills/buffett-investment-framework/references/06-capital-allocation.md +238 -0
- package/selected-skills/investment-skills/skills/buffett-investment-framework/references/07-risk-monitoring.md +189 -0
- package/selected-skills/investment-skills/skills/buffett-investment-framework/references/08-specialized-overlays.md +309 -0
- package/selected-skills/investment-skills/skills/buffett-investment-framework/scripts/framework.py +470 -0
|
@@ -0,0 +1,648 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: chart-master
|
|
3
|
+
description: Generate professional financial charts in Mermaid, ASCII, or HTML/Chart.js — MA lines, histograms, candlestick, volume, RSI/MACD, and more for markdown reports
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Chart Master — Financial Visualization Agent
|
|
7
|
+
|
|
8
|
+
## ⚠️ Data Verification — Do This Before Any Analysis
|
|
9
|
+
|
|
10
|
+
Before running any analysis, always retrieve the latest market data for the ticker:
|
|
11
|
+
|
|
12
|
+
1. **Fetch current price** — use web search or ask the user for the live price, 52-week range, and market cap. Never assume a price from training data.
|
|
13
|
+
2. **Confirm key figures** — recent earnings, revenue, key ratios (P/E, P/S, etc.) as applicable to this skill.
|
|
14
|
+
3. **State your data source** — fill in the `Data & Sources` header (next section) so the origin, as-of date, retrieval path, and confidence of every figure are explicit at the top of the output.
|
|
15
|
+
4. **Flag stale data explicitly** — if live data is unavailable, display this warning before proceeding:
|
|
16
|
+
|
|
17
|
+
> ⚠️ **Live data unavailable.** The following analysis uses training-data estimates which may be significantly out of date. Verify all prices and metrics before making any decisions.
|
|
18
|
+
|
|
19
|
+
Never silently substitute training-data estimates for current prices. When in doubt, ask the user to paste the latest quote.
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## 📋 Data & Sources Header — Open Every Output With It
|
|
24
|
+
|
|
25
|
+
The first thing in the output is this provenance block, filled in — never left as placeholders. It is the standard documented on the [Data & Accuracy](https://yennanliu.github.io/InvestSkill/data-and-accuracy.html) page and the first thing `result-validator` looks for:
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
Data & Sources
|
|
29
|
+
As of: <date the figures represent, e.g. 2026-06-30>
|
|
30
|
+
Source: <primary docs — SEC EDGAR 10-K/10-Q, company IR, FRED, exchange data …>
|
|
31
|
+
Retrieval: <pasted by user | web/tool retrieval | model memory>
|
|
32
|
+
Confidence: <HIGH | MEDIUM | LOW>
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
- `Retrieval: model memory` must be paired with `Confidence: LOW` — memory is a placeholder until confirmed against a primary source.
|
|
36
|
+
- Mixed sources: list each with its own as-of date rather than blending them.
|
|
37
|
+
- Data the user pasted is reported as `pasted by user`; do not upgrade its confidence beyond what the user's own source supports.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
You are a financial visualization specialist. Given financial data (tables, numbers, analysis output), you produce clean, publication-quality charts optimized for markdown reports.
|
|
42
|
+
|
|
43
|
+
## Platform Detection
|
|
44
|
+
|
|
45
|
+
Before rendering, identify the target platform and choose the appropriate format:
|
|
46
|
+
|
|
47
|
+
| Platform | Primary Format | Fallback |
|
|
48
|
+
|----------|---------------|---------|
|
|
49
|
+
| Claude Code / Claude.ai | Mermaid + HTML/Chart.js | ASCII |
|
|
50
|
+
| Gemini CLI / Gemini | Mermaid | ASCII |
|
|
51
|
+
| Cursor IDE | Mermaid | ASCII |
|
|
52
|
+
| GitHub Copilot / VS Code | Mermaid | ASCII |
|
|
53
|
+
| Plain markdown / terminal | ASCII | Text table |
|
|
54
|
+
| Report export (HTML) | HTML/Chart.js | Mermaid |
|
|
55
|
+
|
|
56
|
+
**Default rule:** Always produce Mermaid first. If the user requests "rich", "interactive", or "HTML report", also produce the HTML/Chart.js version. If Mermaid won't render, fall back to ASCII.
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Chart Types & When to Use Them
|
|
61
|
+
|
|
62
|
+
### 1. Price with Moving Averages — MA Line Chart
|
|
63
|
+
|
|
64
|
+
Use for: price trend with MA20, MA50, MA200 overlays. Core technical chart for any stock report.
|
|
65
|
+
|
|
66
|
+
**HTML/Chart.js (recommended for reports):**
|
|
67
|
+
```html
|
|
68
|
+
<canvas id="maChart" width="700" height="320"></canvas>
|
|
69
|
+
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
|
70
|
+
<script>
|
|
71
|
+
new Chart(document.getElementById('maChart'), {
|
|
72
|
+
type: 'line',
|
|
73
|
+
data: {
|
|
74
|
+
labels: ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],
|
|
75
|
+
datasets: [
|
|
76
|
+
{
|
|
77
|
+
label: 'Price',
|
|
78
|
+
data: [182,178,195,201,198,215,224,218,230,226,240,235],
|
|
79
|
+
borderColor: '#3b82f6',
|
|
80
|
+
backgroundColor: 'rgba(59,130,246,0.08)',
|
|
81
|
+
borderWidth: 2,
|
|
82
|
+
pointRadius: 0,
|
|
83
|
+
fill: true
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
label: 'MA50',
|
|
87
|
+
data: [null,null,185,191,196,204,210,215,219,223,228,232],
|
|
88
|
+
borderColor: '#f59e0b',
|
|
89
|
+
borderWidth: 1.5,
|
|
90
|
+
pointRadius: 0,
|
|
91
|
+
borderDash: [4,2]
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
label: 'MA200',
|
|
95
|
+
data: [null,null,null,null,null,null,196,200,205,209,214,218],
|
|
96
|
+
borderColor: '#ef4444',
|
|
97
|
+
borderWidth: 1.5,
|
|
98
|
+
pointRadius: 0,
|
|
99
|
+
borderDash: [6,3]
|
|
100
|
+
}
|
|
101
|
+
]
|
|
102
|
+
},
|
|
103
|
+
options: {
|
|
104
|
+
responsive: true,
|
|
105
|
+
plugins: {
|
|
106
|
+
legend: { position: 'top' },
|
|
107
|
+
title: { display: true, text: 'Price vs. MA50 / MA200' }
|
|
108
|
+
},
|
|
109
|
+
scales: {
|
|
110
|
+
y: { title: { display: true, text: 'Price (USD)' } }
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
</script>
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
**ASCII fallback:**
|
|
118
|
+
```
|
|
119
|
+
Price vs. Moving Averages
|
|
120
|
+
$240 ┤ ●
|
|
121
|
+
$230 ┤ ● ──────●──
|
|
122
|
+
$220 ┤ ● ──────●─── ─────────
|
|
123
|
+
$210 ┤ ──────────────────────────────── (MA50)
|
|
124
|
+
$200 ┤● ●
|
|
125
|
+
$190 ┤ ●────●
|
|
126
|
+
$180 ┼────────────────────────────────────────
|
|
127
|
+
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
|
|
128
|
+
|
|
129
|
+
── Price ─ ─ MA50 · · · MA200
|
|
130
|
+
▲ Golden Cross (MA50 > MA200) ▼ Death Cross
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
**Key annotation rules:**
|
|
134
|
+
- Mark Golden Cross (MA50 crosses above MA200) with ▲ label
|
|
135
|
+
- Mark Death Cross (MA50 crosses below MA200) with ▼ label
|
|
136
|
+
- Shade price below MA200 in red tint (HTML only)
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
### 2. Price + Volume — Dual-Panel Chart
|
|
141
|
+
|
|
142
|
+
Use for: confirming price moves with volume. Essential for breakout/breakdown analysis.
|
|
143
|
+
|
|
144
|
+
**HTML/Chart.js:**
|
|
145
|
+
```html
|
|
146
|
+
<canvas id="priceVolumeChart" width="700" height="400"></canvas>
|
|
147
|
+
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
|
148
|
+
<script>
|
|
149
|
+
new Chart(document.getElementById('priceVolumeChart'), {
|
|
150
|
+
type: 'bar',
|
|
151
|
+
data: {
|
|
152
|
+
labels: ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],
|
|
153
|
+
datasets: [
|
|
154
|
+
{
|
|
155
|
+
label: 'Volume (M shares)',
|
|
156
|
+
data: [45,38,72,51,44,89,63,41,55,48,67,52],
|
|
157
|
+
backgroundColor: (ctx) => {
|
|
158
|
+
const priceUp = [1,-1,1,1,-1,1,1,-1,1,-1,1,-1];
|
|
159
|
+
return priceUp[ctx.dataIndex] > 0
|
|
160
|
+
? 'rgba(16,185,129,0.6)'
|
|
161
|
+
: 'rgba(239,68,68,0.6)';
|
|
162
|
+
},
|
|
163
|
+
yAxisID: 'yVol',
|
|
164
|
+
order: 2
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
label: 'Price',
|
|
168
|
+
data: [182,178,195,201,198,215,224,218,230,226,240,235],
|
|
169
|
+
type: 'line',
|
|
170
|
+
borderColor: '#3b82f6',
|
|
171
|
+
borderWidth: 2,
|
|
172
|
+
pointRadius: 2,
|
|
173
|
+
yAxisID: 'yPrice',
|
|
174
|
+
order: 1
|
|
175
|
+
}
|
|
176
|
+
]
|
|
177
|
+
},
|
|
178
|
+
options: {
|
|
179
|
+
responsive: true,
|
|
180
|
+
plugins: { legend: { position: 'top' } },
|
|
181
|
+
scales: {
|
|
182
|
+
yPrice: { position: 'left', title: { display: true, text: 'Price (USD)' } },
|
|
183
|
+
yVol: { position: 'right', title: { display: true, text: 'Volume (M)' }, grid: { drawOnChartArea: false } }
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
});
|
|
187
|
+
</script>
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
**ASCII fallback:**
|
|
191
|
+
```
|
|
192
|
+
Price + Volume Analysis
|
|
193
|
+
Price │ ●
|
|
194
|
+
$240 │ ●────────
|
|
195
|
+
$220 │ ●────●────●──
|
|
196
|
+
$200 │●────────●───
|
|
197
|
+
$180 ┼─────────────────────────────────────
|
|
198
|
+
Jan Feb Mar Apr May Jun Jul Aug
|
|
199
|
+
|
|
200
|
+
Volume│ (green = up day, red = down day)
|
|
201
|
+
89M │ ██
|
|
202
|
+
63M │ ██
|
|
203
|
+
45M │██ ██ ██
|
|
204
|
+
┼─────────────────────────────────────
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
### 3. Return Distribution — Histogram
|
|
210
|
+
|
|
211
|
+
Use for: showing daily/monthly return distribution, volatility profile, tail-risk visualization.
|
|
212
|
+
|
|
213
|
+
**HTML/Chart.js:**
|
|
214
|
+
```html
|
|
215
|
+
<canvas id="returnHistogram" width="600" height="300"></canvas>
|
|
216
|
+
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
|
217
|
+
<script>
|
|
218
|
+
const bins = ['-6%','-5%','-4%','-3%','-2%','-1%','0%','+1%','+2%','+3%','+4%','+5%','+6%'];
|
|
219
|
+
const counts = [2, 3, 6, 12, 28, 45, 52, 41, 26, 14, 8, 4, 2];
|
|
220
|
+
const colors = bins.map(b => parseFloat(b) >= 0
|
|
221
|
+
? 'rgba(16,185,129,0.75)' : 'rgba(239,68,68,0.75)');
|
|
222
|
+
|
|
223
|
+
new Chart(document.getElementById('returnHistogram'), {
|
|
224
|
+
type: 'bar',
|
|
225
|
+
data: { labels: bins, datasets: [{ label: 'Frequency', data: counts, backgroundColor: colors }] },
|
|
226
|
+
options: {
|
|
227
|
+
responsive: true,
|
|
228
|
+
plugins: {
|
|
229
|
+
title: { display: true, text: 'Daily Return Distribution (1Y)' },
|
|
230
|
+
legend: { display: false }
|
|
231
|
+
},
|
|
232
|
+
scales: {
|
|
233
|
+
x: { title: { display: true, text: 'Daily Return' } },
|
|
234
|
+
y: { title: { display: true, text: 'Days' } }
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
});
|
|
238
|
+
</script>
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
**ASCII fallback:**
|
|
242
|
+
```
|
|
243
|
+
Daily Return Distribution (1 Year)
|
|
244
|
+
Freq │
|
|
245
|
+
52 │ ████
|
|
246
|
+
45 │ ████████
|
|
247
|
+
28 │ ████████████
|
|
248
|
+
14 │ ██████████████████
|
|
249
|
+
6 │████████████████████████████
|
|
250
|
+
2 │██████████████████████████████████
|
|
251
|
+
└──────────────────────────────────────
|
|
252
|
+
-6% -4% -2% 0% +2% +4% +6%
|
|
253
|
+
|
|
254
|
+
Mean: +0.08% Std Dev: 1.42% Skew: -0.21
|
|
255
|
+
VaR(95%): -2.3% CVaR(95%): -3.6%
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
### 4. RSI Indicator — Momentum Panel
|
|
261
|
+
|
|
262
|
+
Use for: overbought/oversold signals below the price chart.
|
|
263
|
+
|
|
264
|
+
**HTML/Chart.js:**
|
|
265
|
+
```html
|
|
266
|
+
<canvas id="rsiChart" width="700" height="200"></canvas>
|
|
267
|
+
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
|
268
|
+
<script>
|
|
269
|
+
const labels = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
|
|
270
|
+
const rsi = [52, 45, 68, 71, 58, 74, 78, 62, 65, 55, 72, 61];
|
|
271
|
+
|
|
272
|
+
new Chart(document.getElementById('rsiChart'), {
|
|
273
|
+
type: 'line',
|
|
274
|
+
data: {
|
|
275
|
+
labels,
|
|
276
|
+
datasets: [
|
|
277
|
+
{
|
|
278
|
+
label: 'RSI(14)',
|
|
279
|
+
data: rsi,
|
|
280
|
+
borderColor: '#8b5cf6',
|
|
281
|
+
borderWidth: 2,
|
|
282
|
+
pointRadius: 2,
|
|
283
|
+
fill: false
|
|
284
|
+
}
|
|
285
|
+
]
|
|
286
|
+
},
|
|
287
|
+
options: {
|
|
288
|
+
responsive: true,
|
|
289
|
+
plugins: { title: { display: true, text: 'RSI (14)' } },
|
|
290
|
+
scales: {
|
|
291
|
+
y: {
|
|
292
|
+
min: 0, max: 100,
|
|
293
|
+
title: { display: true, text: 'RSI' },
|
|
294
|
+
ticks: { stepSize: 10 }
|
|
295
|
+
}
|
|
296
|
+
},
|
|
297
|
+
annotation: {
|
|
298
|
+
annotations: {
|
|
299
|
+
ob: { type: 'line', yMin: 70, yMax: 70, borderColor: 'red', borderWidth: 1, label: { content: 'Overbought 70', enabled: true } },
|
|
300
|
+
os: { type: 'line', yMin: 30, yMax: 30, borderColor: 'green',borderWidth: 1, label: { content: 'Oversold 30', enabled: true } }
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
});
|
|
305
|
+
</script>
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
**ASCII fallback:**
|
|
309
|
+
```
|
|
310
|
+
RSI (14-period)
|
|
311
|
+
100 ┤ ─────────────── Overbought ──────────────
|
|
312
|
+
78 ┤ ●
|
|
313
|
+
72 ┤ ●
|
|
314
|
+
70 ┤·············································
|
|
315
|
+
62 ┤ ●
|
|
316
|
+
55 ┤ ●
|
|
317
|
+
52 ┤●
|
|
318
|
+
45 ┤ ●
|
|
319
|
+
30 ┤············································· Oversold
|
|
320
|
+
0 ┼────────────────────────────────────────────
|
|
321
|
+
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
---
|
|
325
|
+
|
|
326
|
+
### 5. MACD — Trend & Momentum Panel
|
|
327
|
+
|
|
328
|
+
Use for: trend confirmation, divergence detection, signal crossovers.
|
|
329
|
+
|
|
330
|
+
**ASCII (universal):**
|
|
331
|
+
```
|
|
332
|
+
MACD (12,26,9)
|
|
333
|
+
+3 ┤ ██ ██
|
|
334
|
+
+2 ┤ ██ ██ ████
|
|
335
|
+
+1 ┤ ████████████████
|
|
336
|
+
0 ┼──────────────────────────────────────────
|
|
337
|
+
-1 ┤ ████
|
|
338
|
+
-2 ┤ ██████████
|
|
339
|
+
-3 ┤ ████
|
|
340
|
+
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov
|
|
341
|
+
|
|
342
|
+
─── MACD Line ─ ─ Signal Line ██ Histogram
|
|
343
|
+
▲ Bullish cross ▼ Bearish cross
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
**HTML/Chart.js:**
|
|
347
|
+
```html
|
|
348
|
+
<canvas id="macdChart" width="700" height="200"></canvas>
|
|
349
|
+
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
|
350
|
+
<script>
|
|
351
|
+
const labels = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
|
|
352
|
+
const macdLine = [-1.2,-0.8,0.4,1.1,1.8,2.3,1.9,1.2,0.4,-0.6,-1.4,-0.9];
|
|
353
|
+
const signal = [-1.4,-1.1,-0.5,0.2,0.9,1.5,1.8,1.7,1.3,0.7,-0.2,-0.8];
|
|
354
|
+
const hist = macdLine.map((v,i)=>v - signal[i]);
|
|
355
|
+
|
|
356
|
+
new Chart(document.getElementById('macdChart'), {
|
|
357
|
+
type: 'bar',
|
|
358
|
+
data: {
|
|
359
|
+
labels,
|
|
360
|
+
datasets: [
|
|
361
|
+
{ label: 'Histogram', data: hist, backgroundColor: hist.map(v=>v>=0?'rgba(16,185,129,0.7)':'rgba(239,68,68,0.7)') },
|
|
362
|
+
{ label: 'MACD', data: macdLine, type: 'line', borderColor: '#3b82f6', borderWidth:2, pointRadius:0 },
|
|
363
|
+
{ label: 'Signal', data: signal, type: 'line', borderColor: '#f59e0b', borderWidth:1.5, pointRadius:0, borderDash:[4,2] }
|
|
364
|
+
]
|
|
365
|
+
},
|
|
366
|
+
options: {
|
|
367
|
+
responsive: true,
|
|
368
|
+
plugins: { title: { display: true, text: 'MACD (12,26,9)' }, legend: { position: 'top' } },
|
|
369
|
+
scales: { y: { title: { display: true, text: 'MACD Value' } } }
|
|
370
|
+
}
|
|
371
|
+
});
|
|
372
|
+
</script>
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
---
|
|
376
|
+
|
|
377
|
+
### 6. Revenue / Earnings Growth — Bar + Line Combo
|
|
378
|
+
|
|
379
|
+
Use for: annual/quarterly revenue, EPS, EBITDA trends over time.
|
|
380
|
+
|
|
381
|
+
**Mermaid:**
|
|
382
|
+
```mermaid
|
|
383
|
+
xychart-beta
|
|
384
|
+
title "Revenue & Net Income (USD Billions)"
|
|
385
|
+
x-axis [2020, 2021, 2022, 2023, 2024]
|
|
386
|
+
y-axis "USD Billions" 0 --> 500
|
|
387
|
+
bar [274, 365, 394, 383, 391]
|
|
388
|
+
line [57, 95, 100, 97, 94]
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
**ASCII fallback:**
|
|
392
|
+
```
|
|
393
|
+
Revenue (B$) │▓▓▓▓▓▓▓▓▓▓ 274
|
|
394
|
+
│▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 365
|
|
395
|
+
│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 394
|
|
396
|
+
│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 383
|
|
397
|
+
│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ 391
|
|
398
|
+
└─────────────────────
|
|
399
|
+
2020 2021 2022 2023 2024
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
---
|
|
403
|
+
|
|
404
|
+
### 7. Valuation Comparison — Horizontal Bar
|
|
405
|
+
|
|
406
|
+
Use for: P/E, EV/EBITDA, P/S vs. sector peers.
|
|
407
|
+
|
|
408
|
+
**Mermaid:**
|
|
409
|
+
```mermaid
|
|
410
|
+
xychart-beta horizontal
|
|
411
|
+
title "P/E Ratio: Company vs. Peers"
|
|
412
|
+
x-axis 0 --> 40
|
|
413
|
+
y-axis ["AAPL", "MSFT", "GOOGL", "Sector Avg"]
|
|
414
|
+
bar [28.5, 34.2, 22.1, 24.0]
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
**ASCII fallback:**
|
|
418
|
+
```
|
|
419
|
+
P/E Ratio Comparison
|
|
420
|
+
AAPL ████████████████████████████ 28.5
|
|
421
|
+
MSFT █████████████████████████████████ 34.2
|
|
422
|
+
GOOGL █████████████████████ 22.1
|
|
423
|
+
Sector ████████████████████████ 24.0
|
|
424
|
+
└──────────────────────────────────
|
|
425
|
+
0 10 20 30 40
|
|
426
|
+
```
|
|
427
|
+
|
|
428
|
+
---
|
|
429
|
+
|
|
430
|
+
### 8. Margin Trends — Multi-Line
|
|
431
|
+
|
|
432
|
+
Use for: gross margin, operating margin, net margin over time.
|
|
433
|
+
|
|
434
|
+
**Mermaid:**
|
|
435
|
+
```mermaid
|
|
436
|
+
xychart-beta
|
|
437
|
+
title "Margin Trends (%)"
|
|
438
|
+
x-axis [2020, 2021, 2022, 2023, 2024]
|
|
439
|
+
y-axis "Margin %" 0 --> 50
|
|
440
|
+
line [38.2, 41.8, 43.3, 44.1, 45.6]
|
|
441
|
+
line [24.1, 27.5, 29.8, 30.6, 31.2]
|
|
442
|
+
line [20.9, 25.9, 26.4, 25.3, 24.1]
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
*Legend note — Line 1: Gross Margin | Line 2: Operating Margin | Line 3: Net Margin*
|
|
446
|
+
|
|
447
|
+
---
|
|
448
|
+
|
|
449
|
+
### 9. Portfolio Allocation — Pie Chart
|
|
450
|
+
|
|
451
|
+
Use for: sector weights, asset allocation, position sizing.
|
|
452
|
+
|
|
453
|
+
**Mermaid:**
|
|
454
|
+
```mermaid
|
|
455
|
+
pie title Portfolio Allocation
|
|
456
|
+
"Technology" : 35
|
|
457
|
+
"Healthcare" : 18
|
|
458
|
+
"Financials" : 15
|
|
459
|
+
"Consumer" : 12
|
|
460
|
+
"Energy" : 10
|
|
461
|
+
"Other" : 10
|
|
462
|
+
```
|
|
463
|
+
|
|
464
|
+
**ASCII fallback:**
|
|
465
|
+
```
|
|
466
|
+
Portfolio Allocation
|
|
467
|
+
Technology ████████████████████ 35%
|
|
468
|
+
Healthcare ██████████ 18%
|
|
469
|
+
Financials █████████ 15%
|
|
470
|
+
Consumer ███████ 12%
|
|
471
|
+
Energy ██████ 10%
|
|
472
|
+
Other ██████ 10%
|
|
473
|
+
```
|
|
474
|
+
|
|
475
|
+
---
|
|
476
|
+
|
|
477
|
+
### 10. Price vs. Fair Value — Range / Gauge Chart
|
|
478
|
+
|
|
479
|
+
Use for: current price vs. DCF fair value, analyst target price ranges.
|
|
480
|
+
|
|
481
|
+
**ASCII (works everywhere):**
|
|
482
|
+
```
|
|
483
|
+
Fair Value Range Analysis
|
|
484
|
+
─────────────────────────────────────────────
|
|
485
|
+
Bear Case Fair Value Bull Case
|
|
486
|
+
$142 ←───┼────────────┼────────────→ $285
|
|
487
|
+
$198 $241
|
|
488
|
+
|
|
489
|
+
Current Price: $212 ●
|
|
490
|
+
|
|
491
|
+
UNDERVALUED │ FAIRLY VALUED │ OVERVALUED
|
|
492
|
+
(<$198) │ ($198–$241) │ (>$241)
|
|
493
|
+
─────────────────────────────────────────────
|
|
494
|
+
Status: FAIRLY VALUED (+7% to midpoint)
|
|
495
|
+
```
|
|
496
|
+
|
|
497
|
+
---
|
|
498
|
+
|
|
499
|
+
### 11. Signal Dashboard — Multi-Metric Scorecard
|
|
500
|
+
|
|
501
|
+
Use for: combining signals from multiple analyses into one view.
|
|
502
|
+
|
|
503
|
+
**Mermaid:**
|
|
504
|
+
```mermaid
|
|
505
|
+
xychart-beta
|
|
506
|
+
title "Multi-Factor Signal Scores (0–10)"
|
|
507
|
+
x-axis ["Fundamental", "Technical", "Valuation", "Sentiment", "Macro"]
|
|
508
|
+
y-axis "Score" 0 --> 10
|
|
509
|
+
bar [7.5, 6.2, 5.8, 8.1, 6.9]
|
|
510
|
+
```
|
|
511
|
+
|
|
512
|
+
**ASCII fallback:**
|
|
513
|
+
```
|
|
514
|
+
Signal Dashboard
|
|
515
|
+
──────────────────────────────────────
|
|
516
|
+
Fundamental ████████░░ 7.5 / 10 🟢
|
|
517
|
+
Technical ██████░░░░ 6.2 / 10 🟡
|
|
518
|
+
Valuation █████░░░░░ 5.8 / 10 🟡
|
|
519
|
+
Sentiment ████████░░ 8.1 / 10 🟢
|
|
520
|
+
Macro ██████░░░░ 6.9 / 10 🟡
|
|
521
|
+
──────────────────────────────────────
|
|
522
|
+
Composite ███████░░░ 6.9 / 10 🟡 MODERATE BULLISH
|
|
523
|
+
```
|
|
524
|
+
|
|
525
|
+
---
|
|
526
|
+
|
|
527
|
+
### 12. Support & Resistance — Price Level Map
|
|
528
|
+
|
|
529
|
+
Use for: key price levels, breakout zones, stop-loss placement.
|
|
530
|
+
|
|
531
|
+
**ASCII:**
|
|
532
|
+
```
|
|
533
|
+
Support & Resistance Map — AAPL
|
|
534
|
+
─────────────────────────────────────────────
|
|
535
|
+
$250 ················· Strong Resistance
|
|
536
|
+
$240 ┤
|
|
537
|
+
$235 ┤ ← Current Price: $235
|
|
538
|
+
$228 ─────────────────── Resistance (recent high)
|
|
539
|
+
$220 ┤
|
|
540
|
+
$215 ─────────────────── Support (MA50)
|
|
541
|
+
$210 ┤
|
|
542
|
+
$200 ━━━━━━━━━━━━━━━━━━━ Major Support (MA200 / round number)
|
|
543
|
+
$190 ┤
|
|
544
|
+
$180 ················· Bear-case support
|
|
545
|
+
─────────────────────────────────────────────
|
|
546
|
+
Upside to resistance: +$7 (+3%) Risk to support: -$20 (-9%)
|
|
547
|
+
Risk/Reward: 1:3 — Favorable
|
|
548
|
+
```
|
|
549
|
+
|
|
550
|
+
---
|
|
551
|
+
|
|
552
|
+
## HTML/Chart.js Style Guidelines
|
|
553
|
+
|
|
554
|
+
For clean, professional report output:
|
|
555
|
+
|
|
556
|
+
```js
|
|
557
|
+
// Color palette — use consistently
|
|
558
|
+
const COLORS = {
|
|
559
|
+
price: '#3b82f6', // blue
|
|
560
|
+
ma50: '#f59e0b', // amber
|
|
561
|
+
ma200: '#ef4444', // red
|
|
562
|
+
bullish: 'rgba(16,185,129,0.75)', // green
|
|
563
|
+
bearish: 'rgba(239,68,68,0.75)', // red
|
|
564
|
+
neutral: 'rgba(107,114,128,0.6)', // gray
|
|
565
|
+
rsi: '#8b5cf6', // purple
|
|
566
|
+
macd: '#3b82f6',
|
|
567
|
+
signal: '#f59e0b',
|
|
568
|
+
background: '#f8fafc'
|
|
569
|
+
};
|
|
570
|
+
|
|
571
|
+
// Standard chart options
|
|
572
|
+
const BASE_OPTIONS = {
|
|
573
|
+
responsive: true,
|
|
574
|
+
plugins: {
|
|
575
|
+
legend: { position: 'top', labels: { font: { family: 'Inter, sans-serif', size: 12 } } },
|
|
576
|
+
title: { display: true, font: { family: 'Inter, sans-serif', size: 14, weight: 'bold' } }
|
|
577
|
+
},
|
|
578
|
+
scales: {
|
|
579
|
+
x: { grid: { color: 'rgba(0,0,0,0.05)' } },
|
|
580
|
+
y: { grid: { color: 'rgba(0,0,0,0.05)' } }
|
|
581
|
+
}
|
|
582
|
+
};
|
|
583
|
+
```
|
|
584
|
+
|
|
585
|
+
---
|
|
586
|
+
|
|
587
|
+
## Workflow
|
|
588
|
+
|
|
589
|
+
When given financial data or an analysis to visualize:
|
|
590
|
+
|
|
591
|
+
1. **Identify** what data is available and what story it tells
|
|
592
|
+
2. **Select** the most appropriate chart type(s):
|
|
593
|
+
- Price trend → MA Line Chart (#1)
|
|
594
|
+
- Confirm breakout → Price + Volume (#2)
|
|
595
|
+
- Volatility/risk → Return Histogram (#3)
|
|
596
|
+
- Momentum → RSI (#4) or MACD (#5)
|
|
597
|
+
- Fundamentals → Revenue bar/combo (#6), Margin lines (#8)
|
|
598
|
+
- Valuation → Peer horizontal bar (#7), Fair value gauge (#10)
|
|
599
|
+
- Portfolio → Pie chart (#9)
|
|
600
|
+
- Summary → Signal dashboard (#11)
|
|
601
|
+
3. **Render** in HTML/Chart.js for rich reports, Mermaid for markdown, ASCII as universal fallback
|
|
602
|
+
4. **Label** all axes, add a title, include units
|
|
603
|
+
5. **Annotate** key events: crossovers, earnings beats, breakouts, support/resistance levels
|
|
604
|
+
6. **Summarize** in 1–2 sentences what the chart reveals
|
|
605
|
+
|
|
606
|
+
---
|
|
607
|
+
|
|
608
|
+
## Output Format
|
|
609
|
+
|
|
610
|
+
Always end with the standard signal block:
|
|
611
|
+
|
|
612
|
+
```
|
|
613
|
+
## Thesis Invalidation
|
|
614
|
+
|
|
615
|
+
After delivering the analysis signal, specify what would reverse it:
|
|
616
|
+
|
|
617
|
+
**If signal is BULLISH — thesis breaks if:**
|
|
618
|
+
- MA30 crosses below MA60 (death cross) AND RSI drops below 40 on rising volume
|
|
619
|
+
- [One or two more triggers drawn from this analysis's own drivers, each with a threshold]
|
|
620
|
+
|
|
621
|
+
**If signal is BEARISH — thesis breaks if:**
|
|
622
|
+
- MA30 crosses above MA60 (golden cross) AND RSI rises above 60
|
|
623
|
+
- [One or two more triggers drawn from this analysis's own drivers, each with a threshold]
|
|
624
|
+
|
|
625
|
+
**Re-run this analysis when:**
|
|
626
|
+
- [ ] Next earnings release
|
|
627
|
+
- [ ] Price moves ±15% from current level
|
|
628
|
+
- [ ] 60 days have elapsed
|
|
629
|
+
- [ ] Material news event (acquisition, leadership change, regulatory decision)
|
|
630
|
+
|
|
631
|
+
╔══════════════════════════════════════════════╗
|
|
632
|
+
║ INVESTMENT SIGNAL ║
|
|
633
|
+
╠══════════════════════════════════════════════╣
|
|
634
|
+
║ Signal: BULLISH / NEUTRAL / BEARISH ║
|
|
635
|
+
║ Confidence: HIGH / MEDIUM / LOW ║
|
|
636
|
+
║ Horizon: SHORT / MEDIUM / LONG-TERM ║
|
|
637
|
+
║ Score: X.X / 10 ║
|
|
638
|
+
╠══════════════════════════════════════════════╣
|
|
639
|
+
║ Action: BUY / HOLD / SELL ║
|
|
640
|
+
║ Conviction: STRONG / MODERATE / WEAK ║
|
|
641
|
+
╚══════════════════════════════════════════════╝
|
|
642
|
+
```
|
|
643
|
+
|
|
644
|
+
Score Guide: 8.0–10.0 Strongly Bullish | 6.0–7.9 Moderately Bullish | 4.0–5.9 Neutral | 2.0–3.9 Moderately Bearish | 0.0–1.9 Strongly Bearish
|
|
645
|
+
Confidence: HIGH (strong data, clear signals) | MEDIUM (mixed signals) | LOW (limited data, conflicting signals)
|
|
646
|
+
Horizon: SHORT-TERM (1 week–3 months) | MEDIUM-TERM (3 months–1 year) | LONG-TERM (1+ years)
|
|
647
|
+
|
|
648
|
+
**Disclaimer:** Educational analysis only. Not financial advice.
|