@quantbrasil/cli 0.1.0-beta.3 → 0.1.0-beta.5

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 (44) hide show
  1. package/README.md +18 -11
  2. package/dist/cli/index.d.ts +4 -4
  3. package/dist/cli/index.d.ts.map +1 -1
  4. package/dist/cli/index.js +15 -12
  5. package/dist/commands/auth.d.ts +18 -0
  6. package/dist/commands/auth.d.ts.map +1 -1
  7. package/dist/commands/auth.js +49 -0
  8. package/dist/commands/market.d.ts +1 -0
  9. package/dist/commands/market.d.ts.map +1 -1
  10. package/dist/commands/market.js +17 -1
  11. package/dist/commands/portfolios.d.ts +148 -8
  12. package/dist/commands/portfolios.d.ts.map +1 -1
  13. package/dist/commands/portfolios.js +557 -55
  14. package/dist/index.d.ts +0 -1
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +0 -1
  17. package/dist/vendor/core/capabilities/index.d.ts +0 -1
  18. package/dist/vendor/core/capabilities/index.d.ts.map +1 -1
  19. package/dist/vendor/core/capabilities/index.js +0 -1
  20. package/dist/vendor/core/capabilities/market.d.ts +9 -1
  21. package/dist/vendor/core/capabilities/market.d.ts.map +1 -1
  22. package/dist/vendor/core/capabilities/market.js +10 -0
  23. package/dist/vendor/core/capabilities/portfolios.d.ts +452 -56
  24. package/dist/vendor/core/capabilities/portfolios.d.ts.map +1 -1
  25. package/dist/vendor/core/capabilities/portfolios.js +434 -116
  26. package/dist/vendor/core/capabilities/registry.d.ts +714 -276
  27. package/dist/vendor/core/capabilities/registry.d.ts.map +1 -1
  28. package/dist/vendor/core/capabilities/registry.js +0 -2
  29. package/dist/vendor/core/capabilities/types.d.ts +1 -1
  30. package/dist/vendor/core/capabilities/types.d.ts.map +1 -1
  31. package/package.json +3 -3
  32. package/skills/quantbrasil/SKILL.md +9 -6
  33. package/skills/quantbrasil/references/cli.md +25 -25
  34. package/skills/quantbrasil/references/costs.md +4 -4
  35. package/skills/quantbrasil/references/errors.md +6 -5
  36. package/skills/quantbrasil/references/portfolios.md +103 -0
  37. package/skills/quantbrasil/references/unsupported.md +5 -2
  38. package/skills/quantbrasil/references/workflows.md +38 -26
  39. package/dist/commands/analytics.d.ts +0 -131
  40. package/dist/commands/analytics.d.ts.map +0 -1
  41. package/dist/commands/analytics.js +0 -291
  42. package/dist/vendor/core/capabilities/analytics.d.ts +0 -187
  43. package/dist/vendor/core/capabilities/analytics.d.ts.map +0 -1
  44. 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.3",
3
+ "version": "0.1.0-beta.5",
4
4
  "type": "module",
5
5
  "description": "Public QuantBrasil CLI for deterministic operations",
6
6
  "repository": {
@@ -41,8 +41,8 @@
41
41
  "typescript": "^5.3.3",
42
42
  "vitest": "^3.2.4",
43
43
  "@repo/core": "0.0.0",
44
- "@repo/typescript-config": "0.0.0",
45
- "@repo/eslint-config": "0.0.0"
44
+ "@repo/eslint-config": "0.0.0",
45
+ "@repo/typescript-config": "0.0.0"
46
46
  },
47
47
  "scripts": {
48
48
  "build": "pnpm --filter @repo/core build && pnpm run clean && tsc && node scripts/vendor-core.mjs",
@@ -1,33 +1,36 @@
1
1
  ---
2
2
  name: quantbrasil
3
- description: Go-to QuantBrasil market and investing skill. Use for supported asset lookup, prices, asset analysis, saved portfolios, portfolio changes, and risk/return analytics through the QuantBrasil CLI.
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 the user asks for market or investing data/actions that QuantBrasil supports, including asset lookup, prices, asset analysis, saved portfolios, portfolio changes, and portfolio analytics.
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
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, portfolio, or analytics data, use the CLI before generic web or finance search.
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.
14
15
  - Use `quantbrasil` when available on PATH.
15
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.
16
17
  - Check readiness first: `quantbrasil --status`
18
+ - Identify the authenticated user when needed: `quantbrasil whoami`
17
19
  - Inspect public surface when unsure: `quantbrasil capabilities --json`
18
20
  - Use narrow command first:
19
21
  - asset discovery: `quantbrasil market assets`
20
22
  - price lookup: `quantbrasil market price <ticker>`
21
23
  - richer asset analysis: `quantbrasil assets overview <ticker> --sections ...`
22
- - saved portfolio discovery: `quantbrasil portfolios list`
23
- - saved portfolio details: `quantbrasil portfolios get <id>`
24
- - portfolio analytics: `quantbrasil analytics historical-return|beta|var ...`
24
+ - watchlist details and changes: `quantbrasil watchlists ...`
25
+ - holding details and historical return: `quantbrasil holdings ...`
26
+ - holding metrics: `quantbrasil holdings historical-return|beta|var ...`
25
27
  - Use `--json` when output will be parsed by agent or script
26
28
  - 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.
27
29
  - Do not inspect the local repo, package source, or `~/.config/quantbrasil/config.json` for normal data queries. Use CLI status/errors instead.
28
30
 
29
31
  ## References
30
32
 
33
+ - Portfolio, watchlist, and holding semantics: [`references/portfolios.md`](./references/portfolios.md)
31
34
  - CLI surface: [`references/cli.md`](./references/cli.md)
32
35
  - Common workflows: [`references/workflows.md`](./references/workflows.md)
33
36
  - Cost-aware behavior: [`references/costs.md`](./references/costs.md)
@@ -6,6 +6,8 @@ Examples assume the `quantbrasil` binary is available on `PATH`.
6
6
 
7
7
  ```bash
8
8
  quantbrasil --status
9
+ quantbrasil whoami
10
+ quantbrasil auth whoami
9
11
  quantbrasil auth login --api-key <key>
10
12
  quantbrasil auth logout
11
13
  quantbrasil capabilities --json
@@ -17,6 +19,7 @@ quantbrasil init
17
19
  ```bash
18
20
  quantbrasil market assets
19
21
  quantbrasil market assets --type B3
22
+ quantbrasil market assets --search BTC
20
23
  quantbrasil market assets --json
21
24
 
22
25
  quantbrasil market price PETR4
@@ -43,37 +46,34 @@ Valid `--sections`:
43
46
  - `fundamentals`
44
47
  - `rankings`
45
48
 
46
- ## Portfolios
49
+ ## Watchlists and holdings
47
50
 
48
- ```bash
49
- quantbrasil portfolios list
50
- quantbrasil portfolios list --json
51
-
52
- quantbrasil portfolios get 93
53
- quantbrasil portfolios get 93 --json
54
-
55
- quantbrasil portfolios create "Dividendos"
56
- quantbrasil portfolios rename 93 "Longo Prazo"
57
- quantbrasil portfolios add-assets 93 PETR4 VALE3
58
- quantbrasil portfolios remove-assets 93 PETR4
59
- ```
60
-
61
- ## Analytics
62
-
63
- Saved portfolio:
51
+ Watchlists:
64
52
 
65
53
  ```bash
66
- quantbrasil analytics historical-return --portfolio 93 --from 2025-01-01 --to 2026-01-01
67
- quantbrasil analytics beta --portfolio 93 --years 1
68
- quantbrasil analytics var --portfolio 93 --years 1 --confidence 95
54
+ quantbrasil watchlists list
55
+ quantbrasil watchlists get 93
56
+ quantbrasil watchlists create "Dividendos"
57
+ quantbrasil watchlists rename 93 "Longo Prazo"
58
+ quantbrasil watchlists add-assets 93 PETR4 VALE3
59
+ quantbrasil watchlists remove-assets 93 PETR4
69
60
  ```
70
61
 
71
- Ad-hoc basket:
62
+ Holdings:
72
63
 
73
64
  ```bash
74
- quantbrasil analytics historical-return --asset VALE3:50 --asset PRIO3:50 --from 2025-01-01 --to 2026-01-01
75
- quantbrasil analytics beta --asset VALE3:50 --asset PRIO3:50 --years 3
76
- quantbrasil analytics var --asset VALE3:120 --asset WINFUT:-20 --years 1 --confidence 99
65
+ quantbrasil holdings list
66
+ quantbrasil holdings get 182
67
+ quantbrasil holdings create "Longo Prazo"
68
+ quantbrasil holdings create "Longo Prazo" --target PETR4:50 --target VALE3:50
69
+ quantbrasil holdings create "Carteira Real" --mode position
70
+ quantbrasil holdings rename 182 "Longo Prazo"
71
+ quantbrasil holdings set-targets 182 PETR4:50 VALE3:50
72
+ quantbrasil holdings set-positions 182 PRIO3:1600 BTC-USD:0.25 QQQ:10
73
+ quantbrasil holdings historical-return 182 --from 2025-01-01 --to 2026-01-01
74
+ quantbrasil holdings historical-return 182 --period 1y
75
+ quantbrasil holdings beta 182 --years 1
76
+ quantbrasil holdings var 182 --years 1 --confidence 95
77
77
  ```
78
78
 
79
- Use `--json` on any analytics command when machine parsing needed.
79
+ 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
@@ -36,9 +36,9 @@ Treat CLI validation as user-input error.
36
36
 
37
37
  Examples:
38
38
 
39
- - invalid portfolio id
39
+ - invalid watchlist or holding id
40
40
  - invalid `--sections`
41
- - invalid `--asset TICKER[:WEIGHT_PCT]`
41
+ - invalid `--target TICKER:WEIGHT_PCT`
42
42
  - invalid `--years`
43
43
 
44
44
  Fix input. Do not retry same bad command.
@@ -70,14 +70,15 @@ Stable codes:
70
70
 
71
71
  Possible causes:
72
72
 
73
- - portfolio id does not exist
73
+ - watchlist or holding id does not exist
74
74
  - ticker not tracked
75
75
  - requested history unavailable for period
76
76
 
77
77
  Recovery:
78
78
 
79
79
  - use `market assets` for discovery
80
- - use `portfolios list` before `portfolios get`
80
+ - use `watchlists list` before `watchlists get`
81
+ - use `holdings list` before holding metrics
81
82
  - narrow period or pick another ticker
82
83
 
83
84
  Stable code:
@@ -106,7 +107,7 @@ when a requested ticker is invalid for the operation.
106
107
  Recovery:
107
108
 
108
109
  - read the error message
109
- - fix the requested portfolio id, name, ticker list, or operation
110
+ - fix the requested watchlist/holding id, name, ticker list, or operation
110
111
  - do not retry unchanged mutation input
111
112
 
112
113
  Stable code:
@@ -0,0 +1,103 @@
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
+ - Target weights and positions are independent: target weights describe intended
17
+ allocation, while positions describe actual ownership.
18
+ - Position quantities are shares, units, or coin amounts. Do not pass monetary
19
+ values as positions in the public CLI.
20
+
21
+ ## Command routing
22
+
23
+ - Use `quantbrasil watchlists ...` for monitoring lists, ticker groups, and
24
+ non-investable saved lists.
25
+ - Use `quantbrasil holdings ...` for investable compositions, target weights,
26
+ positions, historical return, beta, VaR, and risk/return checks.
27
+ - Use `quantbrasil holdings list` when the user names a saved holding but does
28
+ not provide an id.
29
+ - Use `quantbrasil watchlists list` when the user names a saved watchlist but
30
+ does not provide an id.
31
+ - If the user asks for portfolio analytics without specifying an object, resolve
32
+ or create a holding first.
33
+
34
+ Do not use these patterns:
35
+
36
+ - `quantbrasil portfolios ...`
37
+ - `quantbrasil analytics ...`
38
+ - ad-hoc asset lists passed directly into metric commands
39
+ - running holding metrics on a watchlist
40
+
41
+ ## Holdings
42
+
43
+ Create target-weight holdings when the user wants to analyze a hypothetical or
44
+ model composition.
45
+
46
+ ```bash
47
+ quantbrasil holdings create "Teórica energia" --target VALE3:50 --target PRIO3:50
48
+ quantbrasil holdings historical-return 93 --from 2025-01-01 --to 2026-01-01
49
+ ```
50
+
51
+ `holdings create` returns the holding id. Reuse that id for follow-up commands.
52
+
53
+ Use `set-targets` to replace a holding target allocation.
54
+
55
+ ```bash
56
+ quantbrasil holdings set-targets 93 VALE3:40 PRIO3:35 PETR4:25
57
+ ```
58
+
59
+ Use position mode only when the user is creating or managing a real position
60
+ holding.
61
+
62
+ ```bash
63
+ quantbrasil holdings create "Carteira Real" --mode position
64
+ quantbrasil holdings set-positions 93 PRIO3:1600 BTC-USD:0.25 QQQ:10
65
+ ```
66
+
67
+ `set-positions` is a partial quantity upsert: it changes only the mentioned
68
+ tickers and leaves unmentioned positions unchanged. It does not clear or replace
69
+ target weights.
70
+
71
+ ## Watchlists
72
+
73
+ Use watchlists for saved sets of assets that the user wants to monitor, screen,
74
+ or revisit later.
75
+
76
+ ```bash
77
+ quantbrasil watchlists create "Dividendos"
78
+ quantbrasil watchlists add-assets 93 PETR4 VALE3
79
+ quantbrasil watchlists get 93
80
+ ```
81
+
82
+ If the user asks for return, beta, VaR, or risk on a watchlist, explain that a
83
+ watchlist has no investable composition. Create a target-weight holding or use
84
+ an existing holding instead.
85
+
86
+ ## Metrics
87
+
88
+ Holding metrics always run through `holdings`.
89
+
90
+ ```bash
91
+ quantbrasil holdings historical-return 93 --from 2025-01-01 --to 2026-01-01
92
+ quantbrasil holdings historical-return 93 --period 1y
93
+ quantbrasil holdings beta 93 --years 1
94
+ quantbrasil holdings var 93 --years 1 --confidence 95
95
+ ```
96
+
97
+ Rules:
98
+
99
+ - `historical-return` accepts either absolute ISO dates with `--from`/`--to` or
100
+ a shorthand lookback with `--period`, such as `1y` or `6m`.
101
+ - `beta` accepts `--years 1|3|5`.
102
+ - `var --confidence` takes percentages such as `95` or `99`.
103
+ - Use `--json` for machine parsing.
@@ -3,12 +3,15 @@
3
3
  Unsupported in the public CLI:
4
4
 
5
5
  - `--output <file>` response export
6
+ - deleting watchlists or holdings
7
+ - value-based position input for traded assets
6
8
 
7
9
  Not a supported pattern:
8
10
 
9
11
  - inventing commands not shown in `quantbrasil --help`
10
12
  - assuming hidden flags exist
11
13
  - treating backend internals as public CLI contract
14
+ - treating a watchlist as an investable composition for metrics
12
15
 
13
16
  Use the public surface only:
14
17
 
@@ -16,5 +19,5 @@ Use the public surface only:
16
19
  - `capabilities`
17
20
  - `market`
18
21
  - `assets`
19
- - `portfolios`
20
- - `analytics`
22
+ - `watchlists`
23
+ - `holdings`
@@ -5,20 +5,21 @@
5
5
  - asset price, quote, or daily move → `market price`
6
6
  - supported assets, tickers, or market universe → `market assets`
7
7
  - asset performance, technicals, risk, fundamentals, or ranking → `assets overview`
8
- - saved portfolios, holdings, or portfolio names → `portfolios list` / `portfolios get`
9
- - portfolio return, beta, risk, VaR, or comparison → `analytics ...`
10
- - portfolio creation or holdings changes → `portfolios create|rename|add-assets|remove-assets`
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
11
 
12
12
  ## Find supported ticker, then get price
13
13
 
14
14
  Use this when user gives company theme, partial name, or market universe question.
15
15
 
16
16
  ```bash
17
- quantbrasil market assets --type B3
17
+ quantbrasil market assets --search PETR
18
18
  quantbrasil market price PETR4
19
19
  ```
20
20
 
21
21
  If exact ticker already known, skip discovery and go straight to `market price`.
22
+ Use `--type` when the user asks for a whole supported universe.
22
23
 
23
24
  ## Get price on specific date
24
25
 
@@ -60,52 +61,63 @@ Guidance:
60
61
 
61
62
  Avoid asking for every section unless user clearly wants full report.
62
63
 
63
- ## Analyze saved portfolio
64
+ ## Analyze saved holding
64
65
 
65
- 1. Discover portfolio id.
66
- 2. Inspect holdings if needed.
67
- 3. Run analytics.
66
+ 1. Discover holding id.
67
+ 2. Inspect the holding if needed.
68
+ 3. Run the holding metric.
68
69
 
69
70
  ```bash
70
- quantbrasil portfolios list
71
- quantbrasil portfolios get 93
72
- quantbrasil analytics historical-return --portfolio 93 --from 2025-01-01 --to 2026-01-01
73
- quantbrasil analytics beta --portfolio 93 --years 1
74
- quantbrasil analytics var --portfolio 93 --years 1 --confidence 95
71
+ quantbrasil holdings list
72
+ quantbrasil holdings get 93
73
+ quantbrasil holdings historical-return 93 --period 1y
74
+ quantbrasil holdings beta 93 --years 1
75
+ quantbrasil holdings var 93 --years 1 --confidence 95
75
76
  ```
76
77
 
77
- ## Analyze ad-hoc basket
78
+ ## Analyze a theoretical composition
78
79
 
79
- Use repeated `--asset TICKER[:WEIGHT_PCT]`.
80
+ Create a holding with target weights, then run holding metrics on its id.
80
81
 
81
82
  Rules:
82
83
 
83
- - if weights omitted, backend may assume equal weights
84
- - negative weights allowed for hedge / short exposure
84
+ - `holdings create` returns the holding id
85
+ - use `holdings set-targets` to replace target weights later
86
+ - use `holdings set-positions` for actual share/unit/coin quantities
85
87
  - `beta` only accepts `--years 1|3|5`
86
88
  - `var --confidence` takes percent like `95` or `99`
87
89
 
88
90
  Example:
89
91
 
90
92
  ```bash
91
- quantbrasil analytics historical-return --asset VALE3:50 --asset PRIO3:50 --from 2025-01-01 --to 2026-01-01
92
- quantbrasil analytics beta --asset VALE3:120 --asset WINFUT:-20 --years 1
93
- quantbrasil analytics var --asset VALE3:120 --asset WINFUT:-20 --years 1 --confidence 99
93
+ quantbrasil holdings create "Teórica energia" --target VALE3:50 --target PRIO3:50
94
+ quantbrasil holdings historical-return 93 --from 2025-01-01 --to 2026-01-01
95
+ quantbrasil holdings beta 93 --years 1
96
+ quantbrasil holdings var 93 --years 1 --confidence 99
94
97
  ```
95
98
 
96
- ## Modify saved portfolio
99
+ ## Modify watchlists and holdings
97
100
 
98
101
  Use explicit mutation commands. Do not retry failed mutations automatically.
99
102
 
100
103
  ```bash
101
- quantbrasil portfolios create "Dividendos"
102
- quantbrasil portfolios rename 93 "Longo Prazo"
103
- quantbrasil portfolios add-assets 93 PETR4 VALE3
104
- quantbrasil portfolios remove-assets 93 PETR4
104
+ quantbrasil watchlists create "Dividendos"
105
+ quantbrasil watchlists rename 93 "Longo Prazo"
106
+ quantbrasil watchlists add-assets 93 PETR4 VALE3
107
+ quantbrasil watchlists remove-assets 93 PETR4
108
+
109
+ quantbrasil holdings create "Longo Prazo"
110
+ quantbrasil holdings create "Longo Prazo" --target PETR4:50 --target VALE3:50
111
+ quantbrasil holdings create "Carteira Real" --mode position
112
+ quantbrasil holdings rename 182 "Carteira Real"
113
+ quantbrasil holdings set-targets 182 PETR4:50 VALE3:50
114
+ quantbrasil holdings set-positions 182 PRIO3:1600 BTC-USD:0.25 QQQ:10
105
115
  ```
106
116
 
107
117
  Rules:
108
118
 
109
- - use `portfolios list` first if user names a portfolio instead of giving id
119
+ - use `watchlists list` or `holdings list` first if the user names a saved object instead of giving id
110
120
  - confirm destructive intent before removing assets when user request is ambiguous
121
+ - positions are quantity-only in the public CLI; do not pass monetary values as positions
122
+ - target weights and positions are independent; updating positions does not clear target weights
111
123
  - 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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"}