@quantbrasil/cli 0.1.0-beta.2 → 0.1.0-beta.4

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.
Files changed (35) hide show
  1. package/README.md +14 -11
  2. package/dist/cli/index.d.ts +2 -3
  3. package/dist/cli/index.d.ts.map +1 -1
  4. package/dist/cli/index.js +2 -10
  5. package/dist/commands/portfolios.d.ts +133 -8
  6. package/dist/commands/portfolios.d.ts.map +1 -1
  7. package/dist/commands/portfolios.js +434 -55
  8. package/dist/index.d.ts +0 -1
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +0 -1
  11. package/dist/vendor/core/capabilities/index.d.ts +0 -1
  12. package/dist/vendor/core/capabilities/index.d.ts.map +1 -1
  13. package/dist/vendor/core/capabilities/index.js +0 -1
  14. package/dist/vendor/core/capabilities/portfolios.d.ts +401 -56
  15. package/dist/vendor/core/capabilities/portfolios.d.ts.map +1 -1
  16. package/dist/vendor/core/capabilities/portfolios.js +383 -115
  17. package/dist/vendor/core/capabilities/registry.d.ts +586 -266
  18. package/dist/vendor/core/capabilities/registry.d.ts.map +1 -1
  19. package/dist/vendor/core/capabilities/registry.js +0 -2
  20. package/dist/vendor/core/capabilities/types.d.ts +1 -1
  21. package/dist/vendor/core/capabilities/types.d.ts.map +1 -1
  22. package/package.json +1 -1
  23. package/skills/quantbrasil/SKILL.md +13 -5
  24. package/skills/quantbrasil/references/cli.md +22 -25
  25. package/skills/quantbrasil/references/costs.md +4 -4
  26. package/skills/quantbrasil/references/errors.md +16 -5
  27. package/skills/quantbrasil/references/portfolios.md +92 -0
  28. package/skills/quantbrasil/references/unsupported.md +2 -2
  29. package/skills/quantbrasil/references/workflows.md +41 -22
  30. package/dist/commands/analytics.d.ts +0 -131
  31. package/dist/commands/analytics.d.ts.map +0 -1
  32. package/dist/commands/analytics.js +0 -291
  33. package/dist/vendor/core/capabilities/analytics.d.ts +0 -187
  34. package/dist/vendor/core/capabilities/analytics.d.ts.map +0 -1
  35. package/dist/vendor/core/capabilities/analytics.js +0 -214
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/capabilities/registry.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKrB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AAErE,eAAO,MAAM,sBAAsB,EAE9B,MAAM,CAAC,YAAY,EAAE,CAAC,OAAO,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAC;AAE/D,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEjD"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/capabilities/registry.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAIrB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AAErE,eAAO,MAAM,sBAAsB,EAE9B,MAAM,CAAC,YAAY,EAAE,CAAC,OAAO,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAC;AAE/D,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEjD"}
@@ -1,4 +1,3 @@
1
- import { analyticsCapabilities } from "./analytics.js";
2
1
  import { assetCapabilities } from "./assets.js";
3
2
  import { marketCapabilities } from "./market.js";
4
3
  import { portfolioCapabilities } from "./portfolios.js";
@@ -6,7 +5,6 @@ export const capabilityRegistry = [
6
5
  ...marketCapabilities,
7
6
  ...assetCapabilities,
8
7
  ...portfolioCapabilities,
9
- ...analyticsCapabilities,
10
8
  ];
11
9
  export const capabilityRegistryById = Object.fromEntries(capabilityRegistry.map(capability => [capability.id, capability]));
12
10
  export function getCapabilityById(id) {
@@ -1,6 +1,6 @@
1
1
  export type CapabilityVisibility = "cli" | "opencode";
2
2
  export type CapabilityKind = "read" | "mutation";
3
- export type CapabilityGroup = "market" | "assets" | "portfolios" | "analytics";
3
+ export type CapabilityGroup = "market" | "assets" | "watchlists" | "holdings";
4
4
  export type CapabilityHttpMethod = "GET" | "POST";
5
5
  export type CapabilityInputMode = "none" | "query" | "json_body";
6
6
  export type CapabilityOutputMode = "json" | "human";
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/capabilities/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/capabilities/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quantbrasil/cli",
3
- "version": "0.1.0-beta.2",
3
+ "version": "0.1.0-beta.4",
4
4
  "type": "module",
5
5
  "description": "Public QuantBrasil CLI for deterministic operations",
6
6
  "repository": {
@@ -1,27 +1,35 @@
1
1
  ---
2
2
  name: quantbrasil
3
- description: Use QuantBrasil CLI for deterministic market, asset, portfolio, and analytics workflows.
3
+ description: Go-to QuantBrasil market and investing skill. Use for supported asset lookup, prices, asset analysis, watchlists, holdings, and risk/return metrics through the QuantBrasil CLI.
4
4
  ---
5
5
 
6
6
  # QuantBrasil CLI
7
7
 
8
- Use this skill when user needs deterministic QuantBrasil data or analytics through CLI.
8
+ Use this skill when the user asks for market or investing data/actions that QuantBrasil supports, including asset lookup, prices, asset analysis, watchlists, holdings, and holding metrics.
9
9
 
10
10
  ## Routing
11
11
 
12
+ - Use this skill even when the user does not say "QuantBrasil" if the request fits the supported market or investing surface.
13
+ - For QuantBrasil-supported market, asset, watchlist, holding, or holding metric data, use the CLI before generic web or finance search.
14
+ - When the request mentions portfolios, carteiras, watchlists, holdings, target weights, positions, historical return, beta, VaR, or saved compositions, load [`references/portfolios.md`](./references/portfolios.md) before choosing commands.
15
+ - Use `quantbrasil` when available on PATH.
16
+ - If `quantbrasil` is not found, report that the CLI binary is not on PATH and ask the user to install it or fix PATH.
12
17
  - Check readiness first: `quantbrasil --status`
13
18
  - Inspect public surface when unsure: `quantbrasil capabilities --json`
14
19
  - Use narrow command first:
15
20
  - asset discovery: `quantbrasil market assets`
16
21
  - price lookup: `quantbrasil market price <ticker>`
17
22
  - richer asset analysis: `quantbrasil assets overview <ticker> --sections ...`
18
- - saved portfolio discovery: `quantbrasil portfolios list`
19
- - saved portfolio details: `quantbrasil portfolios get <id>`
20
- - portfolio analytics: `quantbrasil analytics historical-return|beta|var ...`
23
+ - watchlist details and changes: `quantbrasil watchlists ...`
24
+ - holding details and historical return: `quantbrasil holdings ...`
25
+ - holding metrics: `quantbrasil holdings historical-return|beta|var ...`
21
26
  - Use `--json` when output will be parsed by agent or script
27
+ - Use generic web or finance search only if the CLI is unavailable, the requested data is outside the QuantBrasil-supported surface, or the user explicitly asks for an external source.
28
+ - Do not inspect the local repo, package source, or `~/.config/quantbrasil/config.json` for normal data queries. Use CLI status/errors instead.
22
29
 
23
30
  ## References
24
31
 
32
+ - Portfolio, watchlist, and holding semantics: [`references/portfolios.md`](./references/portfolios.md)
25
33
  - CLI surface: [`references/cli.md`](./references/cli.md)
26
34
  - Common workflows: [`references/workflows.md`](./references/workflows.md)
27
35
  - Cost-aware behavior: [`references/costs.md`](./references/costs.md)
@@ -1,5 +1,7 @@
1
1
  # CLI Reference
2
2
 
3
+ Examples assume the `quantbrasil` binary is available on `PATH`.
4
+
3
5
  ## Readiness and auth
4
6
 
5
7
  ```bash
@@ -41,37 +43,32 @@ Valid `--sections`:
41
43
  - `fundamentals`
42
44
  - `rankings`
43
45
 
44
- ## Portfolios
45
-
46
- ```bash
47
- quantbrasil portfolios list
48
- quantbrasil portfolios list --json
49
-
50
- quantbrasil portfolios get 93
51
- quantbrasil portfolios get 93 --json
52
-
53
- quantbrasil portfolios create "Dividendos"
54
- quantbrasil portfolios rename 93 "Longo Prazo"
55
- quantbrasil portfolios add-assets 93 PETR4 VALE3
56
- quantbrasil portfolios remove-assets 93 PETR4
57
- ```
58
-
59
- ## Analytics
46
+ ## Watchlists and holdings
60
47
 
61
- Saved portfolio:
48
+ Watchlists:
62
49
 
63
50
  ```bash
64
- quantbrasil analytics historical-return --portfolio 93 --from 2025-01-01 --to 2026-01-01
65
- quantbrasil analytics beta --portfolio 93 --years 1
66
- quantbrasil analytics var --portfolio 93 --years 1 --confidence 95
51
+ quantbrasil watchlists list
52
+ quantbrasil watchlists get 93
53
+ quantbrasil watchlists create "Dividendos"
54
+ quantbrasil watchlists rename 93 "Longo Prazo"
55
+ quantbrasil watchlists add-assets 93 PETR4 VALE3
56
+ quantbrasil watchlists remove-assets 93 PETR4
67
57
  ```
68
58
 
69
- Ad-hoc basket:
59
+ Holdings:
70
60
 
71
61
  ```bash
72
- quantbrasil analytics historical-return --asset VALE3:50 --asset PRIO3:50 --from 2025-01-01 --to 2026-01-01
73
- quantbrasil analytics beta --asset VALE3:50 --asset PRIO3:50 --years 3
74
- quantbrasil analytics var --asset VALE3:120 --asset WINFUT:-20 --years 1 --confidence 99
62
+ quantbrasil holdings list
63
+ quantbrasil holdings get 182
64
+ quantbrasil holdings create "Longo Prazo"
65
+ quantbrasil holdings create "Longo Prazo" --target PETR4:50 --target VALE3:50
66
+ quantbrasil holdings create "Carteira Real" --mode position
67
+ quantbrasil holdings rename 182 "Longo Prazo"
68
+ quantbrasil holdings set-targets 182 PETR4:50 VALE3:50
69
+ quantbrasil holdings historical-return 182 --from 2025-01-01 --to 2026-01-01
70
+ quantbrasil holdings beta 182 --years 1
71
+ quantbrasil holdings var 182 --years 1 --confidence 95
75
72
  ```
76
73
 
77
- Use `--json` on any analytics command when machine parsing needed.
74
+ Use `--json` on any holding metric command when machine parsing needed.
@@ -13,18 +13,18 @@ Current guidance uses backend qualitative classes only:
13
13
  - `market assets` is lowest-cost discovery path
14
14
  - `market price` is narrow read path
15
15
  - `assets overview` is richer and should use minimal `--sections`
16
- - portfolio analytics (`historical-return`, `beta`, `var`) are heaviest current public reads
16
+ - holding metrics (`historical-return`, `beta`, `var`) are heaviest current public reads
17
17
 
18
18
  ## Agent rules
19
19
 
20
20
  - prefer narrow command that answers question
21
21
  - prefer `market price` over `assets overview` for quote-only requests
22
- - prefer one analytics call targeted to actual question
23
- - do not chain multiple heavy analytics calls unless user asked for them
22
+ - prefer one holding metric call targeted to actual question
23
+ - do not chain multiple heavy holding metric calls unless user asked for them
24
24
  - use `--json` only when structured output needed
25
25
 
26
26
  ## Safe defaults
27
27
 
28
- - discover portfolio id once, then reuse it
28
+ - discover the holding id once, then reuse it
29
29
  - avoid full-report behavior when user asked only one metric
30
30
  - keep `assets overview --sections` minimal and relevant
@@ -1,5 +1,15 @@
1
1
  # Error Handling
2
2
 
3
+ ## Binary not found
4
+
5
+ If `quantbrasil` is not available on `PATH`, report that the CLI binary is not
6
+ installed or not visible to the current shell.
7
+
8
+ Do not inspect local repositories, package source, or credential files to work
9
+ around a missing binary. The CLI owns auth lookup and backend selection.
10
+ Do not silently fall back to generic web or finance search unless the user
11
+ approves another source.
12
+
3
13
  ## Auth / readiness
4
14
 
5
15
  Check:
@@ -26,9 +36,9 @@ Treat CLI validation as user-input error.
26
36
 
27
37
  Examples:
28
38
 
29
- - invalid portfolio id
39
+ - invalid watchlist or holding id
30
40
  - invalid `--sections`
31
- - invalid `--asset TICKER[:WEIGHT_PCT]`
41
+ - invalid `--target TICKER:WEIGHT_PCT`
32
42
  - invalid `--years`
33
43
 
34
44
  Fix input. Do not retry same bad command.
@@ -60,14 +70,15 @@ Stable codes:
60
70
 
61
71
  Possible causes:
62
72
 
63
- - portfolio id does not exist
73
+ - watchlist or holding id does not exist
64
74
  - ticker not tracked
65
75
  - requested history unavailable for period
66
76
 
67
77
  Recovery:
68
78
 
69
79
  - use `market assets` for discovery
70
- - use `portfolios list` before `portfolios get`
80
+ - use `watchlists list` before `watchlists get`
81
+ - use `holdings list` before holding metrics
71
82
  - narrow period or pick another ticker
72
83
 
73
84
  Stable code:
@@ -96,7 +107,7 @@ when a requested ticker is invalid for the operation.
96
107
  Recovery:
97
108
 
98
109
  - read the error message
99
- - fix the requested portfolio id, name, ticker list, or operation
110
+ - fix the requested watchlist/holding id, name, ticker list, or operation
100
111
  - do not retry unchanged mutation input
101
112
 
102
113
  Stable code:
@@ -0,0 +1,92 @@
1
+ # Portfolio Reference
2
+
3
+ Use this reference whenever the user mentions portfolios, carteiras, holdings,
4
+ watchlists, target weights, positions, historical return, beta, VaR, risk, or a
5
+ saved composition.
6
+
7
+ ## Domain model
8
+
9
+ - `Portfolio` is the umbrella domain term for a user-owned saved asset set.
10
+ - `Watchlist` is a portfolio used for monitoring assets. It has assets, but it
11
+ is not an investable composition and does not define weights or positions.
12
+ - `Holding` is a portfolio used as an investable composition. It can be based on
13
+ target weights or positions.
14
+ - A theoretical portfolio is a holding with target weights. Save it first, then
15
+ run metrics on the returned holding id.
16
+
17
+ ## Command routing
18
+
19
+ - Use `quantbrasil watchlists ...` for monitoring lists, ticker groups, and
20
+ non-investable saved lists.
21
+ - Use `quantbrasil holdings ...` for investable compositions, target weights,
22
+ positions, historical return, beta, VaR, and risk/return checks.
23
+ - Use `quantbrasil holdings list` when the user names a saved holding but does
24
+ not provide an id.
25
+ - Use `quantbrasil watchlists list` when the user names a saved watchlist but
26
+ does not provide an id.
27
+ - If the user asks for portfolio analytics without specifying an object, resolve
28
+ or create a holding first.
29
+
30
+ Do not use these patterns:
31
+
32
+ - `quantbrasil portfolios ...`
33
+ - `quantbrasil analytics ...`
34
+ - ad-hoc asset lists passed directly into metric commands
35
+ - running holding metrics on a watchlist
36
+
37
+ ## Holdings
38
+
39
+ Create target-weight holdings when the user wants to analyze a hypothetical or
40
+ model composition.
41
+
42
+ ```bash
43
+ quantbrasil holdings create "Teórica energia" --target VALE3:50 --target PRIO3:50
44
+ quantbrasil holdings historical-return 93 --from 2025-01-01 --to 2026-01-01
45
+ ```
46
+
47
+ `holdings create` returns the holding id. Reuse that id for follow-up commands.
48
+
49
+ Use `set-targets` to replace a holding target allocation.
50
+
51
+ ```bash
52
+ quantbrasil holdings set-targets 93 VALE3:40 PRIO3:35 PETR4:25
53
+ ```
54
+
55
+ Use position mode only when the user is creating or managing a real position
56
+ holding.
57
+
58
+ ```bash
59
+ quantbrasil holdings create "Carteira Real" --mode position
60
+ ```
61
+
62
+ ## Watchlists
63
+
64
+ Use watchlists for saved sets of assets that the user wants to monitor, screen,
65
+ or revisit later.
66
+
67
+ ```bash
68
+ quantbrasil watchlists create "Dividendos"
69
+ quantbrasil watchlists add-assets 93 PETR4 VALE3
70
+ quantbrasil watchlists get 93
71
+ ```
72
+
73
+ If the user asks for return, beta, VaR, or risk on a watchlist, explain that a
74
+ watchlist has no investable composition. Create a target-weight holding or use
75
+ an existing holding instead.
76
+
77
+ ## Metrics
78
+
79
+ Holding metrics always run through `holdings`.
80
+
81
+ ```bash
82
+ quantbrasil holdings historical-return 93 --from 2025-01-01 --to 2026-01-01
83
+ quantbrasil holdings beta 93 --years 1
84
+ quantbrasil holdings var 93 --years 1 --confidence 95
85
+ ```
86
+
87
+ Rules:
88
+
89
+ - `historical-return` requires absolute ISO dates.
90
+ - `beta` accepts `--years 1|3|5`.
91
+ - `var --confidence` takes percentages such as `95` or `99`.
92
+ - Use `--json` for machine parsing.
@@ -16,5 +16,5 @@ Use the public surface only:
16
16
  - `capabilities`
17
17
  - `market`
18
18
  - `assets`
19
- - `portfolios`
20
- - `analytics`
19
+ - `watchlists`
20
+ - `holdings`
@@ -1,5 +1,14 @@
1
1
  # Workflows
2
2
 
3
+ ## Choose command from user intent
4
+
5
+ - asset price, quote, or daily move → `market price`
6
+ - supported assets, tickers, or market universe → `market assets`
7
+ - asset performance, technicals, risk, fundamentals, or ranking → `assets overview`
8
+ - watchlist details or changes → `watchlists ...`
9
+ - holding details or changes → `holdings ...`
10
+ - holding return, beta, risk, VaR, or comparison → `holdings historical-return|beta|var`
11
+
3
12
  ## Find supported ticker, then get price
4
13
 
5
14
  Use this when user gives company theme, partial name, or market universe question.
@@ -26,6 +35,9 @@ Use absolute ISO dates.
26
35
  - need richer analysis for one asset → `assets overview`
27
36
 
28
37
  Do not jump to `assets overview` if price-only answer is enough.
38
+ Do not use generic web or finance search for QuantBrasil-supported market data
39
+ unless the CLI is unavailable, the requested data is outside the supported
40
+ surface, or the user explicitly asks for an external source.
29
41
 
30
42
  ## Cost-aware `assets overview` section choice
31
43
 
@@ -48,52 +60,59 @@ Guidance:
48
60
 
49
61
  Avoid asking for every section unless user clearly wants full report.
50
62
 
51
- ## Analyze saved portfolio
63
+ ## Analyze saved holding
52
64
 
53
- 1. Discover portfolio id.
54
- 2. Inspect holdings if needed.
55
- 3. Run analytics.
65
+ 1. Discover holding id.
66
+ 2. Inspect the holding if needed.
67
+ 3. Run the holding metric.
56
68
 
57
69
  ```bash
58
- quantbrasil portfolios list
59
- quantbrasil portfolios get 93
60
- quantbrasil analytics historical-return --portfolio 93 --from 2025-01-01 --to 2026-01-01
61
- quantbrasil analytics beta --portfolio 93 --years 1
62
- quantbrasil analytics var --portfolio 93 --years 1 --confidence 95
70
+ quantbrasil holdings list
71
+ quantbrasil holdings get 93
72
+ quantbrasil holdings historical-return 93 --from 2025-01-01 --to 2026-01-01
73
+ quantbrasil holdings beta 93 --years 1
74
+ quantbrasil holdings var 93 --years 1 --confidence 95
63
75
  ```
64
76
 
65
- ## Analyze ad-hoc basket
77
+ ## Analyze a theoretical composition
66
78
 
67
- Use repeated `--asset TICKER[:WEIGHT_PCT]`.
79
+ Create a holding with target weights, then run holding metrics on its id.
68
80
 
69
81
  Rules:
70
82
 
71
- - if weights omitted, backend may assume equal weights
72
- - negative weights allowed for hedge / short exposure
83
+ - `holdings create` returns the holding id
84
+ - use `holdings set-targets` to replace target weights later
73
85
  - `beta` only accepts `--years 1|3|5`
74
86
  - `var --confidence` takes percent like `95` or `99`
75
87
 
76
88
  Example:
77
89
 
78
90
  ```bash
79
- quantbrasil analytics historical-return --asset VALE3:50 --asset PRIO3:50 --from 2025-01-01 --to 2026-01-01
80
- quantbrasil analytics beta --asset VALE3:120 --asset WINFUT:-20 --years 1
81
- quantbrasil analytics var --asset VALE3:120 --asset WINFUT:-20 --years 1 --confidence 99
91
+ quantbrasil holdings create "Teórica energia" --target VALE3:50 --target PRIO3:50
92
+ quantbrasil holdings historical-return 93 --from 2025-01-01 --to 2026-01-01
93
+ quantbrasil holdings beta 93 --years 1
94
+ quantbrasil holdings var 93 --years 1 --confidence 99
82
95
  ```
83
96
 
84
- ## Modify saved portfolio
97
+ ## Modify watchlists and holdings
85
98
 
86
99
  Use explicit mutation commands. Do not retry failed mutations automatically.
87
100
 
88
101
  ```bash
89
- quantbrasil portfolios create "Dividendos"
90
- quantbrasil portfolios rename 93 "Longo Prazo"
91
- quantbrasil portfolios add-assets 93 PETR4 VALE3
92
- quantbrasil portfolios remove-assets 93 PETR4
102
+ quantbrasil watchlists create "Dividendos"
103
+ quantbrasil watchlists rename 93 "Longo Prazo"
104
+ quantbrasil watchlists add-assets 93 PETR4 VALE3
105
+ quantbrasil watchlists remove-assets 93 PETR4
106
+
107
+ quantbrasil holdings create "Longo Prazo"
108
+ quantbrasil holdings create "Longo Prazo" --target PETR4:50 --target VALE3:50
109
+ quantbrasil holdings create "Carteira Real" --mode position
110
+ quantbrasil holdings rename 182 "Carteira Real"
111
+ quantbrasil holdings set-targets 182 PETR4:50 VALE3:50
93
112
  ```
94
113
 
95
114
  Rules:
96
115
 
97
- - use `portfolios list` first if user names a portfolio instead of giving id
116
+ - use `watchlists list` or `holdings list` first if the user names a saved object instead of giving id
98
117
  - confirm destructive intent before removing assets when user request is ambiguous
99
118
  - use `--json` only when structured output is needed
@@ -1,131 +0,0 @@
1
- import { Command } from "commander";
2
- import type { JsonValue } from "../vendor/core/index.js";
3
- import { type CliInvokeContext } from "../cli/client.js";
4
- import { type TerminalWriter } from "../cli/terminal.js";
5
- export interface AnalyticsCommandIO {
6
- stdout: TerminalWriter;
7
- }
8
- export interface AnalyticsCommandContext extends CliInvokeContext {
9
- io?: AnalyticsCommandIO;
10
- }
11
- export interface HistoricalReturnCommandOptions {
12
- portfolio?: number;
13
- asset?: string[];
14
- from: string;
15
- to: string;
16
- json?: boolean;
17
- }
18
- export interface BetaCommandOptions {
19
- portfolio?: number;
20
- asset?: string[];
21
- years?: string;
22
- json?: boolean;
23
- }
24
- export interface VarCommandOptions {
25
- portfolio?: number;
26
- asset?: string[];
27
- years?: string;
28
- confidence?: string;
29
- json?: boolean;
30
- }
31
- export interface HistoricalReturnHolding {
32
- [key: string]: JsonValue;
33
- ticker: string;
34
- weight_pct: number;
35
- total_return: number;
36
- contribution: number;
37
- }
38
- export interface HistoricalReturnResponse {
39
- [key: string]: JsonValue;
40
- source_type: "saved_portfolio" | "ad_hoc";
41
- portfolio_id: number | null;
42
- portfolio_name: string | null;
43
- requested_start_date: string;
44
- requested_end_date: string;
45
- effective_start_date: string;
46
- effective_end_date: string;
47
- total_return: number;
48
- annualized_return: number;
49
- max_drawdown: number;
50
- daily_volatility: number;
51
- annualized_volatility: number;
52
- sharpe_ratio: number;
53
- ibov_return: number;
54
- cdi_return: number;
55
- ipca_return: number;
56
- holdings: HistoricalReturnHolding[];
57
- summary_markdown: string;
58
- assumptions: string[];
59
- warnings: string[];
60
- }
61
- export interface BetaHolding {
62
- [key: string]: JsonValue;
63
- ticker: string;
64
- weight_pct: number;
65
- beta: number | null;
66
- weighted_beta: number | null;
67
- correlation: number | null;
68
- asset_daily_volatility: number | null;
69
- benchmark_daily_volatility: number | null;
70
- last_updated: string | null;
71
- }
72
- export interface BetaResponse {
73
- [key: string]: JsonValue;
74
- source_type: "saved_portfolio" | "ad_hoc";
75
- portfolio_id: number | null;
76
- portfolio_name: string | null;
77
- benchmark: "IBOV";
78
- lookback_years: number;
79
- beta: number;
80
- correlation: number;
81
- daily_volatility: number;
82
- annualized_volatility: number;
83
- long_exposure_pct: number;
84
- short_exposure_pct: number;
85
- total_weight_pct: number;
86
- holdings: BetaHolding[];
87
- summary_markdown: string;
88
- assumptions: string[];
89
- warnings: string[];
90
- }
91
- export interface VarHolding {
92
- [key: string]: JsonValue;
93
- ticker: string;
94
- weight_pct: number;
95
- }
96
- export interface VarResponse {
97
- [key: string]: JsonValue;
98
- source_type: "saved_portfolio" | "ad_hoc";
99
- portfolio_id: number | null;
100
- portfolio_name: string | null;
101
- lookback_years: number;
102
- confidence_pct: number;
103
- time_horizon: "1d";
104
- var: number;
105
- long_exposure_pct: number;
106
- short_exposure_pct: number;
107
- total_weight_pct: number;
108
- holdings: VarHolding[];
109
- histogram_data: JsonValue[];
110
- summary_markdown: string;
111
- assumptions: string[];
112
- warnings: string[];
113
- }
114
- interface ParsedAssetInput {
115
- [key: string]: JsonValue;
116
- ticker: string;
117
- weight_pct: number | null;
118
- }
119
- export declare function registerAnalyticsCommands(program: Command, context?: AnalyticsCommandContext): void;
120
- export declare function runHistoricalReturnCommand(options: HistoricalReturnCommandOptions, context?: AnalyticsCommandContext): Promise<void>;
121
- export declare function runBetaCommand(options: BetaCommandOptions, context?: AnalyticsCommandContext): Promise<void>;
122
- export declare function runVarCommand(options: VarCommandOptions, context?: AnalyticsCommandContext): Promise<void>;
123
- export declare function buildHistoricalReturnInput(options: HistoricalReturnCommandOptions): JsonValue;
124
- export declare function buildBetaInput(options: BetaCommandOptions): JsonValue;
125
- export declare function buildVarInput(options: VarCommandOptions): JsonValue;
126
- export declare function formatHistoricalReturnHuman(data: HistoricalReturnResponse, theme?: import("../cli/terminal.js").TerminalTheme): string;
127
- export declare function formatBetaHuman(data: BetaResponse, theme?: import("../cli/terminal.js").TerminalTheme): string;
128
- export declare function formatVarHuman(data: VarResponse, theme?: import("../cli/terminal.js").TerminalTheme): string;
129
- export declare function parseAssetSpec(rawAsset: string): ParsedAssetInput;
130
- export {};
131
- //# sourceMappingURL=analytics.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/commands/analytics.ts"],"names":[],"mappings":"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"}