feat(cli): agent-native output, stdin symbols, and exit-code classes

Phase 1 of docs/DESIGN.md:

- Output format resolves -o > IDX_OUTPUT > general.output > auto; auto
  is a table on a terminal and JSON when stdout is piped or captured.
  `config init` now writes output = "auto".
- JSON is pretty only on a terminal and compact otherwise. New `-o
  jsonl` prints one array item per line with the same key order.
- No ANSI color when stdout is not a terminal (direct owo-colors calls
  now go through output::style).
- `stocks quote -` and `stocks compare -` read symbols from stdin.
- Exit codes by class: 2 invalid input/config, 3 not found or cache
  miss, 4 upstream unavailable, 5 unsupported, 1 other.

Golden changes are limited to those documented kinds and were verified
mechanically: JSON goldens are semantically identical, tables differ
only by removed ANSI codes and the column padding comfy-table had
reserved for them (cell contents identical), exit codes match each
error's class, and help/completions only gain the new --output values.
17 new golden cases cover auto, jsonl, stdin, and the new errors.

tests/cli.rs now pins IDX_OUTPUT=table in its harness (its tests assert
table text and run piped) and parses discover JSON instead of matching
pretty-printed whitespace.

Live A/B against main: 16/16 stocks cases identical; ownership discover
got IDX 403 on both binaries, now exiting 4 instead of 1 as intended.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
hermes 2026-10-14 08:52:13 +00:00
commit 22b6dabaeb
119 changed files with 920 additions and 1896 deletions

View file

@ -0,0 +1,8 @@
exit: 0
--- stdout
┌─────────┬───────┬──────┬────────┬────────────┬───────────────────────┬────────────┐
│ SYMBOL ┆ PRICE ┆ CHG ┆ CHG% ┆ VOLUME ┆ MKT CAP ┆ 52W RANGE │
╞═════════╪═══════╪══════╪════════╪════════════╪═══════════════════════╪════════════╡
│ BBCA.JK ┆ 9,875 ┆ +117 ┆ +1.20% ┆ 12,300,000 ┆ 1,215,200,000,000,000 ┆ ████████░░ │
└─────────┴───────┴──────┴────────┴────────────┴───────────────────────┴────────────┘
--- stderr

View file

@ -0,0 +1,4 @@
exit: 0
--- stdout
[{"symbol":"BBCA.JK","price":9875,"change":117,"change_pct":1.2,"volume":12300000,"market_cap":1215200000000000,"week52_high":10250,"week52_low":7800,"week52_position":0.8469387755102041,"range_signal":"upper","prev_close":9758,"avg_volume":10000000,"as_of":null},{"symbol":"BBRI.JK","price":9875,"change":117,"change_pct":1.2,"volume":12300000,"market_cap":1215200000000000,"week52_high":10250,"week52_low":7800,"week52_position":0.8469387755102041,"range_signal":"upper","prev_close":9758,"avg_volume":10000000,"as_of":null}]
--- stderr

View file

@ -1,7 +1,4 @@
exit: 0
--- stdout
{
"failed": [],
"removed": 0
}
{"failed":[],"removed":0}
--- stderr

View file

@ -1,10 +1,4 @@
exit: 0
--- stdout
{
"files": 0,
"newest": null,
"oldest": null,
"path": "<ROOT>/cache/idx",
"size_bytes": 0
}
{"files":0,"newest":null,"oldest":null,"path":"<ROOT>/cache/idx","size_bytes":0}
--- stderr

View file

@ -1,9 +1,11 @@
# Golden output cases for tests/golden.rs.
#
# Each case runs once per entry in `formats` (default: table and json) with
# `-o <format>` prepended; `formats = []` runs the args as given. Every run uses
# the mock provider (IDX_USE_MOCK_PROVIDER=1) and an isolated home directory.
# `ownership = true` seeds the fixture DB; `before` runs setup commands first.
# `-o <format>` prepended; `formats = []` runs the args as given, which means
# the auto format: stdout is a pipe here, so auto resolves to compact JSON.
# Every run uses the mock provider (IDX_USE_MOCK_PROVIDER=1) and an isolated
# home directory. `ownership = true` seeds the fixture DB; `before` runs setup
# commands first; `stdin` is piped to the command.
#
# `idx version` is excluded on purpose: its output changes with every release.
@ -62,6 +64,22 @@ name = "config-set"
args = ["config", "set", "general.provider", "yahoo"]
formats = []
[[case]]
name = "config-set-output-jsonl"
args = ["config", "set", "general.output", "jsonl"]
formats = []
[[case]]
name = "config-set-output-invalid"
args = ["config", "set", "general.output", "yaml"]
formats = []
[[case]]
name = "config-output-table-pins-format"
args = ["stocks", "quote", "BBCA"]
formats = []
before = [["config", "set", "general.output", "table"]]
[[case]]
name = "cache-info-empty"
args = ["cache", "info"]
@ -78,10 +96,12 @@ args = ["stocks", "quote", "BBCA"]
[[case]]
name = "stocks-quote-multi"
formats = ["table", "json", "jsonl"]
args = ["stocks", "quote", "BBCA,BBRI"]
[[case]]
name = "stocks-history"
formats = ["table", "json", "jsonl"]
args = ["stocks", "history", "BBCA"]
[[case]]
@ -111,6 +131,7 @@ args = ["stocks", "risk", "BBCA"]
[[case]]
name = "stocks-fundamental"
formats = ["table", "json", "jsonl"]
args = ["stocks", "fundamental", "BBCA"]
[[case]]
@ -169,6 +190,38 @@ args = ["stocks", "screen", "--filter", "high-volume"]
name = "stocks-screen-large-cap"
args = ["stocks", "screen", "--filter", "large-cap"]
[[case]]
name = "auto-format-piped"
args = ["stocks", "quote", "BBCA,BBRI"]
formats = []
[[case]]
name = "auto-format-env-table"
args = ["stocks", "quote", "BBCA"]
formats = []
env = { IDX_OUTPUT = "table" }
[[case]]
name = "stocks-quote-stdin"
args = ["stocks", "quote", "-"]
stdin = "BBCA\nBBRI\n"
[[case]]
name = "stocks-compare-stdin"
args = ["stocks", "compare", "-"]
stdin = "BBCA, BBRI"
[[case]]
name = "error-stdin-empty"
args = ["stocks", "quote", "-"]
stdin = ""
[[case]]
name = "error-invalid-output-env"
args = ["stocks", "quote", "BBCA"]
formats = []
env = { IDX_OUTPUT = "yaml" }
[[case]]
name = "stocks-quote-offline-warm"
args = ["--offline", "stocks", "quote", "BBCA"]
@ -214,6 +267,7 @@ env = { IDX_MOCK_MSN_KEYRATIOS_FIXTURE = "tests/fixtures/msn_keyratios_industry_
[[case]]
name = "error-screen-region"
formats = ["table", "json", "jsonl"]
args = ["stocks", "screen", "--region", "eu"]
[[case]]
@ -298,6 +352,7 @@ ownership = true
[[case]]
name = "ownership-changes"
formats = ["table", "json", "jsonl"]
args = ["ownership", "changes", "--from", "2026-01-30", "--to", "2026-02-27"]
ownership = true

View file

@ -446,11 +446,11 @@ _idx() {
fi
case "${prev}" in
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -468,11 +468,11 @@ _idx() {
fi
case "${prev}" in
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -490,11 +490,11 @@ _idx() {
fi
case "${prev}" in
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -568,11 +568,11 @@ _idx() {
fi
case "${prev}" in
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -590,11 +590,11 @@ _idx() {
fi
case "${prev}" in
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -612,11 +612,11 @@ _idx() {
fi
case "${prev}" in
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -634,11 +634,11 @@ _idx() {
fi
case "${prev}" in
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -740,11 +740,11 @@ _idx() {
fi
case "${prev}" in
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -762,11 +762,11 @@ _idx() {
fi
case "${prev}" in
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -784,11 +784,11 @@ _idx() {
fi
case "${prev}" in
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -1436,11 +1436,11 @@ _idx() {
fi
case "${prev}" in
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -1466,11 +1466,11 @@ _idx() {
return 0
;;
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -1496,11 +1496,11 @@ _idx() {
return 0
;;
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -1526,11 +1526,11 @@ _idx() {
return 0
;;
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -1556,11 +1556,11 @@ _idx() {
return 0
;;
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -1578,11 +1578,11 @@ _idx() {
fi
case "${prev}" in
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -1600,11 +1600,11 @@ _idx() {
fi
case "${prev}" in
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -1630,11 +1630,11 @@ _idx() {
return 0
;;
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -1916,11 +1916,11 @@ _idx() {
return 0
;;
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -1938,11 +1938,11 @@ _idx() {
fi
case "${prev}" in
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -1960,11 +1960,11 @@ _idx() {
fi
case "${prev}" in
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -2052,11 +2052,11 @@ _idx() {
fi
case "${prev}" in
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -2074,11 +2074,11 @@ _idx() {
fi
case "${prev}" in
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -2100,11 +2100,11 @@ _idx() {
return 0
;;
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -2126,11 +2126,11 @@ _idx() {
return 0
;;
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -2152,11 +2152,11 @@ _idx() {
return 0
;;
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -2178,11 +2178,11 @@ _idx() {
return 0
;;
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -2200,11 +2200,11 @@ _idx() {
fi
case "${prev}" in
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -2222,11 +2222,11 @@ _idx() {
fi
case "${prev}" in
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -2244,11 +2244,11 @@ _idx() {
fi
case "${prev}" in
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -2270,11 +2270,11 @@ _idx() {
return 0
;;
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -2292,11 +2292,11 @@ _idx() {
fi
case "${prev}" in
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -2314,11 +2314,11 @@ _idx() {
fi
case "${prev}" in
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -2586,11 +2586,11 @@ _idx() {
return 0
;;
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -2608,11 +2608,11 @@ _idx() {
fi
case "${prev}" in
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -2634,11 +2634,11 @@ _idx() {
return 0
;;
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -2656,11 +2656,11 @@ _idx() {
fi
case "${prev}" in
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -2678,11 +2678,11 @@ _idx() {
fi
case "${prev}" in
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -2700,11 +2700,11 @@ _idx() {
fi
case "${prev}" in
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -2734,11 +2734,11 @@ _idx() {
return 0
;;
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -2756,11 +2756,11 @@ _idx() {
fi
case "${prev}" in
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -2782,11 +2782,11 @@ _idx() {
return 0
;;
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -2804,11 +2804,11 @@ _idx() {
fi
case "${prev}" in
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)
@ -2826,11 +2826,11 @@ _idx() {
fi
case "${prev}" in
--output)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
-o)
COMPREPLY=($(compgen -W "table json" -- "${cur}"))
COMPREPLY=($(compgen -W "auto table json jsonl" -- "${cur}"))
return 0
;;
*)

View file

@ -0,0 +1,8 @@
exit: 0
--- stdout
┌─────────┬───────┬──────┬────────┬────────────┬───────────────────────┬────────────┐
│ SYMBOL ┆ PRICE ┆ CHG ┆ CHG% ┆ VOLUME ┆ MKT CAP ┆ 52W RANGE │
╞═════════╪═══════╪══════╪════════╪════════════╪═══════════════════════╪════════════╡
│ BBCA.JK ┆ 9,875 ┆ +117 ┆ +1.20% ┆ 12,300,000 ┆ 1,215,200,000,000,000 ┆ ████████░░ │
└─────────┴───────┴──────┴────────┴────────────┴───────────────────────┴────────────┘
--- stderr

View file

@ -0,0 +1,4 @@
exit: 2
--- stdout
--- stderr
{"code":"INVALIDINPUT","error":true,"message":"invalid input: invalid output format 'yaml': expected 'auto', 'table', 'json', or 'jsonl'"}

View file

@ -0,0 +1,4 @@
exit: 0
--- stdout
ok
--- stderr

View file

@ -1,8 +1,4 @@
exit: 1
exit: 4
--- stdout
--- stderr
{
"code": "PROVIDERUNAVAILABLE",
"error": true,
"message": "provider unavailable"
}
{"code":"PROVIDERUNAVAILABLE","error":true,"message":"provider unavailable"}

View file

@ -1,4 +1,4 @@
exit: 1
exit: 4
--- stdout
--- stderr
Error: provider unavailable

View file

@ -1,8 +1,4 @@
exit: 1
exit: 5
--- stdout
--- stderr
{
"code": "UNSUPPORTED",
"error": true,
"message": "unsupported: --fetch-bing import is not implemented yet"
}
{"code":"UNSUPPORTED","error":true,"message":"unsupported: --fetch-bing import is not implemented yet"}

View file

@ -1,4 +1,4 @@
exit: 1
exit: 5
--- stdout
--- stderr
Error: unsupported: --fetch-bing import is not implemented yet

View file

@ -1,8 +1,4 @@
exit: 1
--- stdout
--- stderr
{
"code": "PARSEERROR",
"error": true,
"message": "parse error: unsupported: company fundamentals unavailable from MSN; industry fallback is disabled"
}
{"code":"PARSEERROR","error":true,"message":"parse error: unsupported: company fundamentals unavailable from MSN; industry fallback is disabled"}

View file

@ -0,0 +1,4 @@
exit: 2
--- stdout
--- stderr
{"code":"CONFIGERROR","error":true,"message":"config error: invalid IDX_OUTPUT value: 'yaml', expected 'auto', 'table', 'json', or 'jsonl'"}

View file

@ -1,8 +1,4 @@
exit: 1
exit: 2
--- stdout
--- stderr
{
"code": "CONFIGERROR",
"error": true,
"message": "config error: invalid provider 'bogus' (expected yahoo or msn)"
}
{"code":"CONFIGERROR","error":true,"message":"config error: invalid provider 'bogus' (expected yahoo or msn)"}

View file

@ -1,4 +1,4 @@
exit: 1
exit: 2
--- stdout
--- stderr
Error: config error: invalid provider 'bogus' (expected yahoo or msn)

View file

@ -1,8 +1,4 @@
exit: 1
exit: 3
--- stdout
--- stderr
{
"code": "CACHEMISS",
"error": true,
"message": "cache miss: msn-quote/BBCA.JK"
}
{"code":"CACHEMISS","error":true,"message":"cache miss: msn-quote/BBCA.JK"}

View file

@ -1,4 +1,4 @@
exit: 1
exit: 3
--- stdout
--- stderr
Error: cache miss: msn-quote/BBCA.JK

View file

@ -1,8 +1,4 @@
exit: 1
exit: 2
--- stdout
--- stderr
{
"code": "INVALIDINPUT",
"error": true,
"message": "invalid input: cannot combine --offline with --no-cache"
}
{"code":"INVALIDINPUT","error":true,"message":"invalid input: cannot combine --offline with --no-cache"}

View file

@ -1,4 +1,4 @@
exit: 1
exit: 2
--- stdout
--- stderr
Error: invalid input: cannot combine --offline with --no-cache

View file

@ -1,8 +1,4 @@
exit: 1
exit: 4
--- stdout
--- stderr
{
"code": "PROVIDERUNAVAILABLE",
"error": true,
"message": "provider unavailable"
}
{"code":"PROVIDERUNAVAILABLE","error":true,"message":"provider unavailable"}

View file

@ -1,4 +1,4 @@
exit: 1
exit: 4
--- stdout
--- stderr
Error: provider unavailable

View file

@ -1,8 +1,4 @@
exit: 1
exit: 2
--- stdout
--- stderr
{
"code": "INVALIDINPUT",
"error": true,
"message": "invalid input: invalid screener region 'eu' (expected one of: id, us, sg, hk, jp)"
}
{"code":"INVALIDINPUT","error":true,"message":"invalid input: invalid screener region 'eu' (expected one of: id, us, sg, hk, jp)"}

View file

@ -0,0 +1,4 @@
exit: 2
--- stdout
--- stderr
{"code":"INVALIDINPUT","error":true,"message":"invalid input: invalid screener region 'eu' (expected one of: id, us, sg, hk, jp)"}

View file

@ -1,4 +1,4 @@
exit: 1
exit: 2
--- stdout
--- stderr
Error: invalid input: invalid screener region 'eu' (expected one of: id, us, sg, hk, jp)

View file

@ -0,0 +1,4 @@
exit: 2
--- stdout
--- stderr
{"code":"INVALIDINPUT","error":true,"message":"invalid input: no symbols read from stdin"}

View file

@ -0,0 +1,4 @@
exit: 2
--- stdout
--- stderr
Error: invalid input: no symbols read from stdin

View file

@ -1,8 +1,4 @@
exit: 1
exit: 5
--- stdout
--- stderr
{
"code": "UNSUPPORTED",
"error": true,
"message": "unsupported: BBCA.JK: command requires --provider msn"
}
{"code":"UNSUPPORTED","error":true,"message":"unsupported: BBCA.JK: command requires --provider msn"}

View file

@ -1,4 +1,4 @@
exit: 1
exit: 5
--- stdout
--- stderr
Error: unsupported: BBCA.JK: command requires --provider msn

View file

@ -10,7 +10,7 @@ Commands:
help Print this message or the help of the given subcommand(s)
Options:
-o, --output <OUTPUT> Output format [possible values: table, json]
-o, --output <OUTPUT> Output format [default: auto = table on a terminal, json when piped] [possible values: auto, table, json, jsonl]
--no-color Disable colored output
-q, --quiet Suppress non-essential output
-v, --verbose... Increase verbosity (-v, -vv)

View file

@ -12,7 +12,7 @@ Commands:
help Print this message or the help of the given subcommand(s)
Options:
-o, --output <OUTPUT> Output format [possible values: table, json]
-o, --output <OUTPUT> Output format [default: auto = table on a terminal, json when piped] [possible values: auto, table, json, jsonl]
--no-color Disable colored output
-q, --quiet Suppress non-essential output
-v, --verbose... Increase verbosity (-v, -vv)

View file

@ -27,9 +27,9 @@ Commands:
Options:
-o, --output <OUTPUT>
Output format
Output format [default: auto = table on a terminal, json when piped]
[possible values: table, json]
[possible values: auto, table, json, jsonl]
--no-color
Disable colored output

View file

@ -16,9 +16,9 @@ Commands:
Options:
-o, --output <OUTPUT>
Output format
Output format [default: auto = table on a terminal, json when piped]
[possible values: table, json]
[possible values: auto, table, json, jsonl]
--no-color
Disable colored output

View file

@ -23,7 +23,7 @@ Commands:
help Print this message or the help of the given subcommand(s)
Options:
-o, --output <OUTPUT> Output format [possible values: table, json]
-o, --output <OUTPUT> Output format [default: auto = table on a terminal, json when piped] [possible values: auto, table, json, jsonl]
--no-color Disable colored output
-q, --quiet Suppress non-essential output
-v, --verbose... Increase verbosity (-v, -vv)

View file

@ -1,109 +1,4 @@
exit: 0
--- stdout
[
{
"ticker_code": "AADI",
"entity_name": "KSEI AGGREGATE LOCAL ID",
"change_type": "decreased",
"old_bps": 2400,
"new_bps": 2334,
"delta_bps": -66
},
{
"ticker_code": "AADI",
"entity_name": "KSEI AGGREGATE LOCAL IS",
"change_type": "increased",
"old_bps": 75,
"new_bps": 129,
"delta_bps": 54
},
{
"ticker_code": "AADI",
"entity_name": "KSEI AGGREGATE LOCAL MF",
"change_type": "increased",
"old_bps": 117,
"new_bps": 152,
"delta_bps": 35
},
{
"ticker_code": "AADI",
"entity_name": "KSEI AGGREGATE FOREIGN MF",
"change_type": "increased",
"old_bps": 307,
"new_bps": 337,
"delta_bps": 30
},
{
"ticker_code": "AADI",
"entity_name": "KSEI AGGREGATE FOREIGN OT",
"change_type": "decreased",
"old_bps": 91,
"new_bps": 64,
"delta_bps": -27
},
{
"ticker_code": "AADI",
"entity_name": "KSEI AGGREGATE FOREIGN PF",
"change_type": "decreased",
"old_bps": 76,
"new_bps": 56,
"delta_bps": -20
},
{
"ticker_code": "AADI",
"entity_name": "KSEI AGGREGATE FOREIGN CP",
"change_type": "increased",
"old_bps": 72,
"new_bps": 86,
"delta_bps": 14
},
{
"ticker_code": "AADI",
"entity_name": "KSEI AGGREGATE LOCAL CP",
"change_type": "decreased",
"old_bps": 6481,
"new_bps": 6467,
"delta_bps": -14
},
{
"ticker_code": "AADI",
"entity_name": "KSEI AGGREGATE LOCAL SC",
"change_type": "decreased",
"old_bps": 36,
"new_bps": 29,
"delta_bps": -7
},
{
"ticker_code": "AADI",
"entity_name": "KSEI AGGREGATE FOREIGN IB",
"change_type": "decreased",
"old_bps": 267,
"new_bps": 263,
"delta_bps": -4
},
{
"ticker_code": "AADI",
"entity_name": "KSEI AGGREGATE FOREIGN SC",
"change_type": "increased",
"old_bps": 51,
"new_bps": 55,
"delta_bps": 4
},
{
"ticker_code": "AADI",
"entity_name": "KSEI AGGREGATE LOCAL PF",
"change_type": "increased",
"old_bps": 17,
"new_bps": 20,
"delta_bps": 3
},
{
"ticker_code": "AADI",
"entity_name": "KSEI AGGREGATE FOREIGN ID",
"change_type": "decreased",
"old_bps": 3,
"new_bps": 2,
"delta_bps": -1
}
]
[{"ticker_code":"AADI","entity_name":"KSEI AGGREGATE LOCAL ID","change_type":"decreased","old_bps":2400,"new_bps":2334,"delta_bps":-66},{"ticker_code":"AADI","entity_name":"KSEI AGGREGATE LOCAL IS","change_type":"increased","old_bps":75,"new_bps":129,"delta_bps":54},{"ticker_code":"AADI","entity_name":"KSEI AGGREGATE LOCAL MF","change_type":"increased","old_bps":117,"new_bps":152,"delta_bps":35},{"ticker_code":"AADI","entity_name":"KSEI AGGREGATE FOREIGN MF","change_type":"increased","old_bps":307,"new_bps":337,"delta_bps":30},{"ticker_code":"AADI","entity_name":"KSEI AGGREGATE FOREIGN OT","change_type":"decreased","old_bps":91,"new_bps":64,"delta_bps":-27},{"ticker_code":"AADI","entity_name":"KSEI AGGREGATE FOREIGN PF","change_type":"decreased","old_bps":76,"new_bps":56,"delta_bps":-20},{"ticker_code":"AADI","entity_name":"KSEI AGGREGATE FOREIGN CP","change_type":"increased","old_bps":72,"new_bps":86,"delta_bps":14},{"ticker_code":"AADI","entity_name":"KSEI AGGREGATE LOCAL CP","change_type":"decreased","old_bps":6481,"new_bps":6467,"delta_bps":-14},{"ticker_code":"AADI","entity_name":"KSEI AGGREGATE LOCAL SC","change_type":"decreased","old_bps":36,"new_bps":29,"delta_bps":-7},{"ticker_code":"AADI","entity_name":"KSEI AGGREGATE FOREIGN IB","change_type":"decreased","old_bps":267,"new_bps":263,"delta_bps":-4},{"ticker_code":"AADI","entity_name":"KSEI AGGREGATE FOREIGN SC","change_type":"increased","old_bps":51,"new_bps":55,"delta_bps":4},{"ticker_code":"AADI","entity_name":"KSEI AGGREGATE LOCAL PF","change_type":"increased","old_bps":17,"new_bps":20,"delta_bps":3},{"ticker_code":"AADI","entity_name":"KSEI AGGREGATE FOREIGN ID","change_type":"decreased","old_bps":3,"new_bps":2,"delta_bps":-1}]
--- stderr

View file

@ -0,0 +1,16 @@
exit: 0
--- stdout
{"ticker_code":"AADI","entity_name":"KSEI AGGREGATE LOCAL ID","change_type":"decreased","old_bps":2400,"new_bps":2334,"delta_bps":-66}
{"ticker_code":"AADI","entity_name":"KSEI AGGREGATE LOCAL IS","change_type":"increased","old_bps":75,"new_bps":129,"delta_bps":54}
{"ticker_code":"AADI","entity_name":"KSEI AGGREGATE LOCAL MF","change_type":"increased","old_bps":117,"new_bps":152,"delta_bps":35}
{"ticker_code":"AADI","entity_name":"KSEI AGGREGATE FOREIGN MF","change_type":"increased","old_bps":307,"new_bps":337,"delta_bps":30}
{"ticker_code":"AADI","entity_name":"KSEI AGGREGATE FOREIGN OT","change_type":"decreased","old_bps":91,"new_bps":64,"delta_bps":-27}
{"ticker_code":"AADI","entity_name":"KSEI AGGREGATE FOREIGN PF","change_type":"decreased","old_bps":76,"new_bps":56,"delta_bps":-20}
{"ticker_code":"AADI","entity_name":"KSEI AGGREGATE FOREIGN CP","change_type":"increased","old_bps":72,"new_bps":86,"delta_bps":14}
{"ticker_code":"AADI","entity_name":"KSEI AGGREGATE LOCAL CP","change_type":"decreased","old_bps":6481,"new_bps":6467,"delta_bps":-14}
{"ticker_code":"AADI","entity_name":"KSEI AGGREGATE LOCAL SC","change_type":"decreased","old_bps":36,"new_bps":29,"delta_bps":-7}
{"ticker_code":"AADI","entity_name":"KSEI AGGREGATE FOREIGN IB","change_type":"decreased","old_bps":267,"new_bps":263,"delta_bps":-4}
{"ticker_code":"AADI","entity_name":"KSEI AGGREGATE FOREIGN SC","change_type":"increased","old_bps":51,"new_bps":55,"delta_bps":4}
{"ticker_code":"AADI","entity_name":"KSEI AGGREGATE LOCAL PF","change_type":"increased","old_bps":17,"new_bps":20,"delta_bps":3}
{"ticker_code":"AADI","entity_name":"KSEI AGGREGATE FOREIGN ID","change_type":"decreased","old_bps":3,"new_bps":2,"delta_bps":-1}
--- stderr

View file

@ -1,32 +1,32 @@
exit: 0
--- stdout
┌────────┬───────────────────────────┬─────────────────────┬────────┬────────┬────────┐
│ TICKER ┆ ENTITY ┆ CHANGE ┆ OLD% ┆ NEW% ┆ DELTA% │
╞════════╪═══════════════════════════╪═════════════════════╪════════╪════════╪════════╡
│ AADI ┆ KSEI AGGREGATE LOCAL ID ┆ DECREASED ┆ 24.00% ┆ 23.34% ┆ -0.66% │
├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
│ AADI ┆ KSEI AGGREGATE LOCAL IS ┆ INCREASED ┆ 0.75% ┆ 1.29% ┆ +0.54% │
├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
│ AADI ┆ KSEI AGGREGATE LOCAL MF ┆ INCREASED ┆ 1.17% ┆ 1.52% ┆ +0.35% │
├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
│ AADI ┆ KSEI AGGREGATE FOREIGN MF ┆ INCREASED ┆ 3.07% ┆ 3.37% ┆ +0.30% │
├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
│ AADI ┆ KSEI AGGREGATE FOREIGN OT ┆ DECREASED ┆ 0.91% ┆ 0.64% ┆ -0.27% │
├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
│ AADI ┆ KSEI AGGREGATE FOREIGN PF ┆ DECREASED ┆ 0.76% ┆ 0.56% ┆ -0.20% │
├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
│ AADI ┆ KSEI AGGREGATE FOREIGN CP ┆ INCREASED ┆ 0.72% ┆ 0.86% ┆ +0.14% │
├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
│ AADI ┆ KSEI AGGREGATE LOCAL CP ┆ DECREASED ┆ 64.81% ┆ 64.67% ┆ -0.14% │
├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
│ AADI ┆ KSEI AGGREGATE LOCAL SC ┆ DECREASED ┆ 0.36% ┆ 0.29% ┆ -0.07% │
├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
│ AADI ┆ KSEI AGGREGATE FOREIGN IB ┆ DECREASED ┆ 2.67% ┆ 2.63% ┆ -0.04% │
├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
│ AADI ┆ KSEI AGGREGATE FOREIGN SC ┆ INCREASED ┆ 0.51% ┆ 0.55% ┆ +0.04% │
├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
│ AADI ┆ KSEI AGGREGATE LOCAL PF ┆ INCREASED ┆ 0.17% ┆ 0.20% ┆ +0.03% │
├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
│ AADI ┆ KSEI AGGREGATE FOREIGN ID ┆ DECREASED ┆ 0.03% ┆ 0.02% ┆ -0.01% │
└────────┴───────────────────────────┴─────────────────────┴────────┴────────┴────────┘
┌────────┬───────────────────────────┬───────────┬────────┬────────┬────────┐
│ TICKER ┆ ENTITY ┆ CHANGE ┆ OLD% ┆ NEW% ┆ DELTA% │
╞════════╪═══════════════════════════╪═══════════╪════════╪════════╪════════╡
│ AADI ┆ KSEI AGGREGATE LOCAL ID ┆ DECREASED ┆ 24.00% ┆ 23.34% ┆ -0.66% │
├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
│ AADI ┆ KSEI AGGREGATE LOCAL IS ┆ INCREASED ┆ 0.75% ┆ 1.29% ┆ +0.54% │
├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
│ AADI ┆ KSEI AGGREGATE LOCAL MF ┆ INCREASED ┆ 1.17% ┆ 1.52% ┆ +0.35% │
├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
│ AADI ┆ KSEI AGGREGATE FOREIGN MF ┆ INCREASED ┆ 3.07% ┆ 3.37% ┆ +0.30% │
├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
│ AADI ┆ KSEI AGGREGATE FOREIGN OT ┆ DECREASED ┆ 0.91% ┆ 0.64% ┆ -0.27% │
├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
│ AADI ┆ KSEI AGGREGATE FOREIGN PF ┆ DECREASED ┆ 0.76% ┆ 0.56% ┆ -0.20% │
├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
│ AADI ┆ KSEI AGGREGATE FOREIGN CP ┆ INCREASED ┆ 0.72% ┆ 0.86% ┆ +0.14% │
├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
│ AADI ┆ KSEI AGGREGATE LOCAL CP ┆ DECREASED ┆ 64.81% ┆ 64.67% ┆ -0.14% │
├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
│ AADI ┆ KSEI AGGREGATE LOCAL SC ┆ DECREASED ┆ 0.36% ┆ 0.29% ┆ -0.07% │
├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
│ AADI ┆ KSEI AGGREGATE FOREIGN IB ┆ DECREASED ┆ 2.67% ┆ 2.63% ┆ -0.04% │
├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
│ AADI ┆ KSEI AGGREGATE FOREIGN SC ┆ INCREASED ┆ 0.51% ┆ 0.55% ┆ +0.04% │
├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
│ AADI ┆ KSEI AGGREGATE LOCAL PF ┆ INCREASED ┆ 0.17% ┆ 0.20% ┆ +0.03% │
├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
│ AADI ┆ KSEI AGGREGATE FOREIGN ID ┆ DECREASED ┆ 0.03% ┆ 0.02% ┆ -0.01% │
└────────┴───────────────────────────┴───────────┴────────┴────────┴────────┘
--- stderr

View file

@ -1,45 +1,4 @@
exit: 0
--- stdout
[
[
"AALI",
{
"top1_bps": 7968,
"top3_bps": 7968,
"hhi": 6348,
"free_float_bps": 2032,
"holder_count": 1
}
],
[
"BBCA",
{
"top1_bps": 5494,
"top3_bps": 5716,
"hhi": 3021,
"free_float_bps": 4182,
"holder_count": 4
}
],
[
"AADI",
{
"top1_bps": 4110,
"top3_bps": 6230,
"hhi": 2009,
"free_float_bps": 2030,
"holder_count": 10
}
],
[
"ABBA",
{
"top1_bps": 283,
"top3_bps": 418,
"hhi": 9,
"free_float_bps": 9582,
"holder_count": 2
}
]
]
[["AALI",{"top1_bps":7968,"top3_bps":7968,"hhi":6348,"free_float_bps":2032,"holder_count":1}],["BBCA",{"top1_bps":5494,"top3_bps":5716,"hhi":3021,"free_float_bps":4182,"holder_count":4}],["AADI",{"top1_bps":4110,"top3_bps":6230,"hhi":2009,"free_float_bps":2030,"holder_count":10}],["ABBA",{"top1_bps":283,"top3_bps":418,"hhi":9,"free_float_bps":9582,"holder_count":2}]]
--- stderr

View file

@ -1,175 +1,4 @@
exit: 0
--- stdout
[
{
"entity": {
"id": 11,
"canonical_name": "ASTRA INTERNATIONAL",
"entity_type": null,
"country": null
},
"ticker_count": 1,
"total_bps": 7968
},
{
"entity": {
"id": 14,
"canonical_name": "DWIMURIA INVESTAMA ANDALAN",
"entity_type": null,
"country": null
},
"ticker_count": 1,
"total_bps": 5494
},
{
"entity": {
"id": 4,
"canonical_name": "ADARO STRATEGIC INVESTMENTS",
"entity_type": null,
"country": null
},
"ticker_count": 1,
"total_bps": 4110
},
{
"entity": {
"id": 5,
"canonical_name": "ALAMTRI RESOURCES INDONESIA TBK PT",
"entity_type": null,
"country": null
},
"ticker_count": 1,
"total_bps": 1537
},
{
"entity": {
"id": 7,
"canonical_name": "GARIBALDI THOHIR",
"entity_type": null,
"country": null
},
"ticker_count": 1,
"total_bps": 583
},
{
"entity": {
"id": 2,
"canonical_name": "SARATOGA INVESTAMA SEDAYA",
"entity_type": null,
"country": null
},
"ticker_count": 1,
"total_bps": 438
},
{
"entity": {
"id": 9,
"canonical_name": "EDWIN SOERYADJAYA",
"entity_type": null,
"country": null
},
"ticker_count": 1,
"total_bps": 352
},
{
"entity": {
"id": 8,
"canonical_name": "IR. T. PERMADI RACHMAT",
"entity_type": null,
"country": null
},
"ticker_count": 1,
"total_bps": 348
},
{
"entity": {
"id": 13,
"canonical_name": "YAYASAN ABDI BANGSA",
"entity_type": null,
"country": null
},
"ticker_count": 1,
"total_bps": 283
},
{
"entity": {
"id": 10,
"canonical_name": "SANDIAGA SALAHUDDIN UNO",
"entity_type": null,
"country": null
},
"ticker_count": 1,
"total_bps": 204
},
{
"entity": {
"id": 1,
"canonical_name": "PERSADA CAPITAL INVESTAMA",
"entity_type": null,
"country": null
},
"ticker_count": 1,
"total_bps": 154
},
{
"entity": {
"id": 12,
"canonical_name": "YAYASAN BINA SEJAHTERA WARGA BULOG",
"entity_type": null,
"country": null
},
"ticker_count": 1,
"total_bps": 135
},
{
"entity": {
"id": 6,
"canonical_name": "FTAG INVESTMENT BANK",
"entity_type": null,
"country": null
},
"ticker_count": 1,
"total_bps": 129
},
{
"entity": {
"id": 17,
"canonical_name": "ANTHONI SALIM",
"entity_type": null,
"country": null
},
"ticker_count": 1,
"total_bps": 115
},
{
"entity": {
"id": 3,
"canonical_name": "TRINUGRAHA THOHIR",
"entity_type": null,
"country": null
},
"ticker_count": 1,
"total_bps": 115
},
{
"entity": {
"id": 16,
"canonical_name": "TRICIPTA MANDHALA GUMILANG",
"entity_type": null,
"country": null
},
"ticker_count": 1,
"total_bps": 107
},
{
"entity": {
"id": 15,
"canonical_name": "CATURGUWIRATNA SUMAPALA",
"entity_type": null,
"country": null
},
"ticker_count": 1,
"total_bps": 102
}
]
[{"entity":{"id":11,"canonical_name":"ASTRA INTERNATIONAL","entity_type":null,"country":null},"ticker_count":1,"total_bps":7968},{"entity":{"id":14,"canonical_name":"DWIMURIA INVESTAMA ANDALAN","entity_type":null,"country":null},"ticker_count":1,"total_bps":5494},{"entity":{"id":4,"canonical_name":"ADARO STRATEGIC INVESTMENTS","entity_type":null,"country":null},"ticker_count":1,"total_bps":4110},{"entity":{"id":5,"canonical_name":"ALAMTRI RESOURCES INDONESIA TBK PT","entity_type":null,"country":null},"ticker_count":1,"total_bps":1537},{"entity":{"id":7,"canonical_name":"GARIBALDI THOHIR","entity_type":null,"country":null},"ticker_count":1,"total_bps":583},{"entity":{"id":2,"canonical_name":"SARATOGA INVESTAMA SEDAYA","entity_type":null,"country":null},"ticker_count":1,"total_bps":438},{"entity":{"id":9,"canonical_name":"EDWIN SOERYADJAYA","entity_type":null,"country":null},"ticker_count":1,"total_bps":352},{"entity":{"id":8,"canonical_name":"IR. T. PERMADI RACHMAT","entity_type":null,"country":null},"ticker_count":1,"total_bps":348},{"entity":{"id":13,"canonical_name":"YAYASAN ABDI BANGSA","entity_type":null,"country":null},"ticker_count":1,"total_bps":283},{"entity":{"id":10,"canonical_name":"SANDIAGA SALAHUDDIN UNO","entity_type":null,"country":null},"ticker_count":1,"total_bps":204},{"entity":{"id":1,"canonical_name":"PERSADA CAPITAL INVESTAMA","entity_type":null,"country":null},"ticker_count":1,"total_bps":154},{"entity":{"id":12,"canonical_name":"YAYASAN BINA SEJAHTERA WARGA BULOG","entity_type":null,"country":null},"ticker_count":1,"total_bps":135},{"entity":{"id":6,"canonical_name":"FTAG INVESTMENT BANK","entity_type":null,"country":null},"ticker_count":1,"total_bps":129},{"entity":{"id":17,"canonical_name":"ANTHONI SALIM","entity_type":null,"country":null},"ticker_count":1,"total_bps":115},{"entity":{"id":3,"canonical_name":"TRINUGRAHA THOHIR","entity_type":null,"country":null},"ticker_count":1,"total_bps":115},{"entity":{"id":16,"canonical_name":"TRICIPTA MANDHALA GUMILANG","entity_type":null,"country":null},"ticker_count":1,"total_bps":107},{"entity":{"id":15,"canonical_name":"CATURGUWIRATNA SUMAPALA","entity_type":null,"country":null},"ticker_count":1,"total_bps":102}]
--- stderr

View file

@ -1,26 +1,4 @@
exit: 0
--- stdout
{
"entity": {
"id": 17,
"canonical_name": "ANTHONI SALIM",
"entity_type": null,
"country": null
},
"ticker_count": 1,
"holdings": [
{
"ticker": {
"id": 4,
"code": "BBCA",
"name": "BANK CENTRAL ASIA Tbk",
"sector": null
},
"source": "ksei",
"shares": 1416306835,
"percentage_bps": 115,
"report_date": "2026-08-31"
}
]
}
{"entity":{"id":17,"canonical_name":"ANTHONI SALIM","entity_type":null,"country":null},"ticker_count":1,"holdings":[{"ticker":{"id":4,"code":"BBCA","name":"BANK CENTRAL ASIA Tbk","sector":null},"source":"ksei","shares":1416306835,"percentage_bps":115,"report_date":"2026-08-31"}]}
--- stderr

View file

@ -1,10 +1,10 @@
exit: 0
--- stdout
Entity: ANTHONI SALIM
Entity: ANTHONI SALIM
┌────────┬────────┬───────────────┬───────┬─────────────┐
│ TICKER ┆ SOURCE ┆ SHARES ┆ % ┆ REPORT_DATE │
╞════════╪════════╪═══════════════╪═══════╪═════════════╡
│ BBCA ┆ KSEI ┆ 1,416,306,835 ┆ 1.15% ┆ 2026-08-31 │
└────────┴────────┴───────────────┴───────┴─────────────┘
Total tickers: 1
Total tickers: 1
--- stderr

View file

@ -1,58 +1,4 @@
exit: 0
--- stdout
{
"nodes": [
{
"id": "entity:14",
"label": "DWIMURIA INVESTAMA ANDALAN",
"node_type": "entity"
},
{
"id": "entity:15",
"label": "CATURGUWIRATNA SUMAPALA",
"node_type": "entity"
},
{
"id": "entity:16",
"label": "TRICIPTA MANDHALA GUMILANG",
"node_type": "entity"
},
{
"id": "entity:17",
"label": "ANTHONI SALIM",
"node_type": "entity"
},
{
"id": "ticker:BBCA",
"label": "BBCA",
"node_type": "ticker"
}
],
"edges": [
{
"from": "entity:17",
"to": "ticker:BBCA",
"percentage_bps": 115,
"source": "ksei"
},
{
"from": "entity:15",
"to": "ticker:BBCA",
"percentage_bps": 102,
"source": "ksei"
},
{
"from": "entity:14",
"to": "ticker:BBCA",
"percentage_bps": 5494,
"source": "ksei"
},
{
"from": "entity:16",
"to": "ticker:BBCA",
"percentage_bps": 107,
"source": "ksei"
}
]
}
{"nodes":[{"id":"entity:14","label":"DWIMURIA INVESTAMA ANDALAN","node_type":"entity"},{"id":"entity:15","label":"CATURGUWIRATNA SUMAPALA","node_type":"entity"},{"id":"entity:16","label":"TRICIPTA MANDHALA GUMILANG","node_type":"entity"},{"id":"entity:17","label":"ANTHONI SALIM","node_type":"entity"},{"id":"ticker:BBCA","label":"BBCA","node_type":"ticker"}],"edges":[{"from":"entity:17","to":"ticker:BBCA","percentage_bps":115,"source":"ksei"},{"from":"entity:15","to":"ticker:BBCA","percentage_bps":102,"source":"ksei"},{"from":"entity:14","to":"ticker:BBCA","percentage_bps":5494,"source":"ksei"},{"from":"entity:16","to":"ticker:BBCA","percentage_bps":107,"source":"ksei"}]}
--- stderr

View file

@ -1,58 +1,4 @@
exit: 0
--- stdout
{
"nodes": [
{
"id": "entity:14",
"label": "DWIMURIA INVESTAMA ANDALAN",
"node_type": "entity"
},
{
"id": "entity:15",
"label": "CATURGUWIRATNA SUMAPALA",
"node_type": "entity"
},
{
"id": "entity:16",
"label": "TRICIPTA MANDHALA GUMILANG",
"node_type": "entity"
},
{
"id": "entity:17",
"label": "ANTHONI SALIM",
"node_type": "entity"
},
{
"id": "ticker:BBCA",
"label": "BBCA",
"node_type": "ticker"
}
],
"edges": [
{
"from": "entity:17",
"to": "ticker:BBCA",
"percentage_bps": 115,
"source": "ksei"
},
{
"from": "entity:15",
"to": "ticker:BBCA",
"percentage_bps": 102,
"source": "ksei"
},
{
"from": "entity:14",
"to": "ticker:BBCA",
"percentage_bps": 5494,
"source": "ksei"
},
{
"from": "entity:16",
"to": "ticker:BBCA",
"percentage_bps": 107,
"source": "ksei"
}
]
}
{"nodes":[{"id":"entity:14","label":"DWIMURIA INVESTAMA ANDALAN","node_type":"entity"},{"id":"entity:15","label":"CATURGUWIRATNA SUMAPALA","node_type":"entity"},{"id":"entity:16","label":"TRICIPTA MANDHALA GUMILANG","node_type":"entity"},{"id":"entity:17","label":"ANTHONI SALIM","node_type":"entity"},{"id":"ticker:BBCA","label":"BBCA","node_type":"ticker"}],"edges":[{"from":"entity:17","to":"ticker:BBCA","percentage_bps":115,"source":"ksei"},{"from":"entity:15","to":"ticker:BBCA","percentage_bps":102,"source":"ksei"},{"from":"entity:14","to":"ticker:BBCA","percentage_bps":5494,"source":"ksei"},{"from":"entity:16","to":"ticker:BBCA","percentage_bps":107,"source":"ksei"}]}
--- stderr

View file

@ -1,11 +1,4 @@
exit: 0
--- stdout
{
"action": "imported",
"inserted_rows": 18,
"ticker_count": 1,
"as_of_date": "2026-02-27",
"sha256": "7b8da1d820f67062410c48988bb6c70fec2088c24961d481d1c0fce8b9372547",
"source_url": null
}
{"action":"imported","inserted_rows":18,"ticker_count":1,"as_of_date":"2026-02-27","sha256":"7b8da1d820f67062410c48988bb6c70fec2088c24961d481d1c0fce8b9372547","source_url":null}
--- stderr

View file

@ -1,11 +1,4 @@
exit: 0
--- stdout
{
"action": "imported",
"inserted_rows": 17,
"ticker_count": 4,
"as_of_date": "2026-08-31",
"sha256": "7c1a4c209b8ce5bde9112436a0c64d66b042915995b584d2bbf7ca7b15ce81e3",
"source_url": null
}
{"action":"imported","inserted_rows":17,"ticker_count":4,"as_of_date":"2026-08-31","sha256":"7c1a4c209b8ce5bde9112436a0c64d66b042915995b584d2bbf7ca7b15ce81e3","source_url":null}
--- stderr

View file

@ -1,29 +1,4 @@
exit: 0
--- stdout
[
{
"id": 1,
"source_url": null,
"sha256": "7c1a4c209b8ce5bde9112436a0c64d66b042915995b584d2bbf7ca7b15ce81e3",
"as_of_date": "2026-08-31",
"row_count": 17,
"imported_at": 0
},
{
"id": 3,
"source_url": null,
"sha256": "7b8da1d820f67062410c48988bb6c70fec2088c24961d481d1c0fce8b9372547",
"as_of_date": "2026-02-27",
"row_count": 18,
"imported_at": 0
},
{
"id": 2,
"source_url": null,
"sha256": "efb3d8fb19c9e0d803dc1b1734c8389356605d0f78d73db6729fb76d3d75753d",
"as_of_date": "2026-01-30",
"row_count": 18,
"imported_at": 0
}
]
[{"id":1,"source_url":null,"sha256":"7c1a4c209b8ce5bde9112436a0c64d66b042915995b584d2bbf7ca7b15ce81e3","as_of_date":"2026-08-31","row_count":17,"imported_at":0},{"id":3,"source_url":null,"sha256":"7b8da1d820f67062410c48988bb6c70fec2088c24961d481d1c0fce8b9372547","as_of_date":"2026-02-27","row_count":18,"imported_at":0},{"id":2,"source_url":null,"sha256":"efb3d8fb19c9e0d803dc1b1734c8389356605d0f78d73db6729fb76d3d75753d","as_of_date":"2026-01-30","row_count":18,"imported_at":0}]
--- stderr

View file

@ -1,8 +1,4 @@
exit: 0
--- stdout
{
"action": "mapped",
"alias": "SALIM ANTHONI",
"entity": "ANTHONI SALIM"
}
{"action":"mapped","alias":"SALIM ANTHONI","entity":"ANTHONI SALIM"}
--- stderr

View file

@ -1,11 +1,4 @@
exit: 0
--- stdout
{
"action": "merged",
"alias_updates": 1,
"bing_holdings_updates": 0,
"keep": 1,
"ksei_holdings_updates": 1,
"merge": 2
}
{"action":"merged","alias_updates":1,"bing_holdings_updates":0,"keep":1,"ksei_holdings_updates":1,"merge":2}
--- stderr

View file

@ -1,11 +1,4 @@
exit: 0
--- stdout
[
{
"id": 17,
"canonical_name": "ANTHONI SALIM",
"entity_type": null,
"country": null
}
]
[{"id":17,"canonical_name":"ANTHONI SALIM","entity_type":null,"country":null}]
--- stderr

View file

@ -1,8 +1,4 @@
exit: 1
exit: 3
--- stdout
--- stderr
{
"code": "SYMBOLNOTFOUND",
"error": true,
"message": "symbol not found: BBCA"
}
{"code":"SYMBOLNOTFOUND","error":true,"message":"symbol not found: BBCA"}

View file

@ -1,4 +1,4 @@
exit: 1
exit: 3
--- stdout
--- stderr
Error: symbol not found: BBCA

View file

@ -1,67 +1,4 @@
exit: 0
--- stdout
{
"ticker": {
"id": 4,
"code": "BBCA",
"name": "BANK CENTRAL ASIA Tbk",
"sector": null
},
"ksei_as_of": "2026-08-31",
"bing_as_of": null,
"holders": [
{
"rank": 1,
"source": "ksei",
"name": "DWIMURIA INVESTAMA ANDALAN",
"entity_id": 14,
"investor_type": "CORPORATE",
"locality": "Local",
"shares": 67729950000,
"percentage_bps": 5494,
"signal": null
},
{
"rank": 2,
"source": "ksei",
"name": "ANTHONI SALIM",
"entity_id": 17,
"investor_type": "INDIVIDUAL",
"locality": "Local",
"shares": 1416306835,
"percentage_bps": 115,
"signal": null
},
{
"rank": 3,
"source": "ksei",
"name": "TRICIPTA MANDHALA GUMILANG",
"entity_id": 16,
"investor_type": "CORPORATE",
"locality": "Local",
"shares": 1313250000,
"percentage_bps": 107,
"signal": null
},
{
"rank": 4,
"source": "ksei",
"name": "CATURGUWIRATNA SUMAPALA",
"entity_id": 15,
"investor_type": "CORPORATE",
"locality": "Local",
"shares": 1261750000,
"percentage_bps": 102,
"signal": null
}
],
"concentration": {
"top1_bps": 5494,
"top3_bps": 5716,
"hhi": 3021,
"free_float_bps": 4182,
"holder_count": 4
},
"flow": null
}
{"ticker":{"id":4,"code":"BBCA","name":"BANK CENTRAL ASIA Tbk","sector":null},"ksei_as_of":"2026-08-31","bing_as_of":null,"holders":[{"rank":1,"source":"ksei","name":"DWIMURIA INVESTAMA ANDALAN","entity_id":14,"investor_type":"CORPORATE","locality":"Local","shares":67729950000,"percentage_bps":5494,"signal":null},{"rank":2,"source":"ksei","name":"ANTHONI SALIM","entity_id":17,"investor_type":"INDIVIDUAL","locality":"Local","shares":1416306835,"percentage_bps":115,"signal":null},{"rank":3,"source":"ksei","name":"TRICIPTA MANDHALA GUMILANG","entity_id":16,"investor_type":"CORPORATE","locality":"Local","shares":1313250000,"percentage_bps":107,"signal":null},{"rank":4,"source":"ksei","name":"CATURGUWIRATNA SUMAPALA","entity_id":15,"investor_type":"CORPORATE","locality":"Local","shares":1261750000,"percentage_bps":102,"signal":null}],"concentration":{"top1_bps":5494,"top3_bps":5716,"hhi":3021,"free_float_bps":4182,"holder_count":4},"flow":null}
--- stderr

View file

@ -1,6 +1,6 @@
exit: 0
--- stdout
Ownership: BBCA KSEI=2026-08-31 Bing=-
Ownership: BBCA KSEI=2026-08-31 Bing=-
┌──────┬────────┬────────────────────────────┬────────────┬─────┬────────────────┬────────┬────────┐
│ RANK ┆ SOURCE ┆ INVESTOR ┆ TYPE ┆ L/F ┆ SHARES ┆ % ┆ SIGNAL │
╞══════╪════════╪════════════════════════════╪════════════╪═════╪════════════════╪════════╪════════╡
@ -12,5 +12,5 @@ exit: 0
├╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
│ 4 ┆ KSEI ┆ CATURGUWIRATNA SUMAPALA ┆ CORPORATE ┆ L ┆ 1,261,750,000 ┆ 1.02% ┆ - │
└──────┴────────┴────────────────────────────┴────────────┴─────┴────────────────┴────────┴────────┘
Concentration: top1=54.94% top3=57.16% hhi=3021 free_float=41.82% holders=4
Concentration: top1=54.94% top3=57.16% hhi=3021 free_float=41.82% holders=4
--- stderr

View file

@ -1,67 +1,4 @@
exit: 0
--- stdout
{
"ticker": {
"id": 4,
"code": "BBCA",
"name": "BANK CENTRAL ASIA Tbk",
"sector": null
},
"ksei_as_of": "2026-08-31",
"bing_as_of": null,
"holders": [
{
"rank": 1,
"source": "ksei",
"name": "DWIMURIA INVESTAMA ANDALAN",
"entity_id": 14,
"investor_type": "CORPORATE",
"locality": "Local",
"shares": 67729950000,
"percentage_bps": 5494,
"signal": null
},
{
"rank": 2,
"source": "ksei",
"name": "ANTHONI SALIM",
"entity_id": 17,
"investor_type": "INDIVIDUAL",
"locality": "Local",
"shares": 1416306835,
"percentage_bps": 115,
"signal": null
},
{
"rank": 3,
"source": "ksei",
"name": "TRICIPTA MANDHALA GUMILANG",
"entity_id": 16,
"investor_type": "CORPORATE",
"locality": "Local",
"shares": 1313250000,
"percentage_bps": 107,
"signal": null
},
{
"rank": 4,
"source": "ksei",
"name": "CATURGUWIRATNA SUMAPALA",
"entity_id": 15,
"investor_type": "CORPORATE",
"locality": "Local",
"shares": 1261750000,
"percentage_bps": 102,
"signal": null
}
],
"concentration": {
"top1_bps": 5494,
"top3_bps": 5716,
"hhi": 3021,
"free_float_bps": 4182,
"holder_count": 4
},
"flow": null
}
{"ticker":{"id":4,"code":"BBCA","name":"BANK CENTRAL ASIA Tbk","sector":null},"ksei_as_of":"2026-08-31","bing_as_of":null,"holders":[{"rank":1,"source":"ksei","name":"DWIMURIA INVESTAMA ANDALAN","entity_id":14,"investor_type":"CORPORATE","locality":"Local","shares":67729950000,"percentage_bps":5494,"signal":null},{"rank":2,"source":"ksei","name":"ANTHONI SALIM","entity_id":17,"investor_type":"INDIVIDUAL","locality":"Local","shares":1416306835,"percentage_bps":115,"signal":null},{"rank":3,"source":"ksei","name":"TRICIPTA MANDHALA GUMILANG","entity_id":16,"investor_type":"CORPORATE","locality":"Local","shares":1313250000,"percentage_bps":107,"signal":null},{"rank":4,"source":"ksei","name":"CATURGUWIRATNA SUMAPALA","entity_id":15,"investor_type":"CORPORATE","locality":"Local","shares":1261750000,"percentage_bps":102,"signal":null}],"concentration":{"top1_bps":5494,"top3_bps":5716,"hhi":3021,"free_float_bps":4182,"holder_count":4},"flow":null}
--- stderr

View file

@ -1,6 +1,6 @@
exit: 0
--- stdout
Ownership: BBCA KSEI=2026-08-31 Bing=-
Ownership: BBCA KSEI=2026-08-31 Bing=-
┌──────┬────────┬────────────────────────────┬────────────┬─────┬────────────────┬────────┬────────┐
│ RANK ┆ SOURCE ┆ INVESTOR ┆ TYPE ┆ L/F ┆ SHARES ┆ % ┆ SIGNAL │
╞══════╪════════╪════════════════════════════╪════════════╪═════╪════════════════╪════════╪════════╡
@ -12,5 +12,5 @@ exit: 0
├╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
│ 4 ┆ KSEI ┆ CATURGUWIRATNA SUMAPALA ┆ CORPORATE ┆ L ┆ 1,261,750,000 ┆ 1.02% ┆ - │
└──────┴────────┴────────────────────────────┴────────────┴─────┴────────────────┴────────┴────────┘
Concentration: top1=54.94% top3=57.16% hhi=3021 free_float=41.82% holders=4
Concentration: top1=54.94% top3=57.16% hhi=3021 free_float=41.82% holders=4
--- stderr

View file

@ -0,0 +1,4 @@
exit: 0
--- stdout
[{"symbol":"BBCA.JK","growth":{"revenue_growth":0.081,"earnings_growth":0.121,"revenue_growth_pct":8.1,"earnings_growth_pct":12.1,"revenue_signal":"slow","earnings_signal":"moderate","overall_signal":"mixed"},"valuation":{"pe_trailing":25.4,"pe_forward":null,"pb":4.6,"roe":0.198,"roe_pct":19.8,"net_margin":0.324,"net_margin_pct":32.4,"ev_ebitda":null,"pe_signal":"premium","pb_signal":"expensive","roe_signal":"strong","margin_signal":"excellent","ev_ebitda_signal":"no data","overall_signal":"expensive"},"risk":{"debt_to_equity":0.42,"current_ratio":1.18,"roa":0.031,"roa_pct":3.1,"de_signal":"conservative","current_ratio_signal":"tight","overall_signal":"moderate risk"},"overall_signal":"mixed"},{"symbol":"BBRI.JK","growth":{"revenue_growth":0.081,"earnings_growth":0.121,"revenue_growth_pct":8.1,"earnings_growth_pct":12.1,"revenue_signal":"slow","earnings_signal":"moderate","overall_signal":"mixed"},"valuation":{"pe_trailing":25.4,"pe_forward":null,"pb":4.6,"roe":0.198,"roe_pct":19.8,"net_margin":0.324,"net_margin_pct":32.4,"ev_ebitda":null,"pe_signal":"premium","pb_signal":"expensive","roe_signal":"strong","margin_signal":"excellent","ev_ebitda_signal":"no data","overall_signal":"expensive"},"risk":{"debt_to_equity":0.42,"current_ratio":1.18,"roa":0.031,"roa_pct":3.1,"de_signal":"conservative","current_ratio_signal":"tight","overall_signal":"moderate risk"},"overall_signal":"mixed"}]
--- stderr

View file

@ -0,0 +1,23 @@
exit: 0
--- stdout
Fundamental Comparison
┌────────────────┬───────────────┬───────────────┐
│ METRIC ┆ BBCA.JK ┆ BBRI.JK │
╞════════════════╪═══════════════╪═══════════════╡
│ Symbol ┆ BBCA.JK ┆ BBRI.JK │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Overall ┆ mixed ┆ mixed │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Growth ┆ mixed ┆ mixed │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Valuation ┆ expensive ┆ expensive │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Risk ┆ moderate risk ┆ moderate risk │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ P/E ┆ 25.40 ┆ 25.40 │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ ROE ┆ +19.80% ┆ +19.80% │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Revenue Growth ┆ +8.10% ┆ +8.10% │
└────────────────┴───────────────┴───────────────┘
--- stderr

View file

@ -1,81 +1,4 @@
exit: 0
--- stdout
[
{
"symbol": "BBCA.JK",
"growth": {
"revenue_growth": 0.081,
"earnings_growth": 0.121,
"revenue_growth_pct": 8.1,
"earnings_growth_pct": 12.1,
"revenue_signal": "slow",
"earnings_signal": "moderate",
"overall_signal": "mixed"
},
"valuation": {
"pe_trailing": 25.4,
"pe_forward": null,
"pb": 4.6,
"roe": 0.198,
"roe_pct": 19.8,
"net_margin": 0.324,
"net_margin_pct": 32.4,
"ev_ebitda": null,
"pe_signal": "premium",
"pb_signal": "expensive",
"roe_signal": "strong",
"margin_signal": "excellent",
"ev_ebitda_signal": "no data",
"overall_signal": "expensive"
},
"risk": {
"debt_to_equity": 0.42,
"current_ratio": 1.18,
"roa": 0.031,
"roa_pct": 3.1,
"de_signal": "conservative",
"current_ratio_signal": "tight",
"overall_signal": "moderate risk"
},
"overall_signal": "mixed"
},
{
"symbol": "BBRI.JK",
"growth": {
"revenue_growth": 0.081,
"earnings_growth": 0.121,
"revenue_growth_pct": 8.1,
"earnings_growth_pct": 12.1,
"revenue_signal": "slow",
"earnings_signal": "moderate",
"overall_signal": "mixed"
},
"valuation": {
"pe_trailing": 25.4,
"pe_forward": null,
"pb": 4.6,
"roe": 0.198,
"roe_pct": 19.8,
"net_margin": 0.324,
"net_margin_pct": 32.4,
"ev_ebitda": null,
"pe_signal": "premium",
"pb_signal": "expensive",
"roe_signal": "strong",
"margin_signal": "excellent",
"ev_ebitda_signal": "no data",
"overall_signal": "expensive"
},
"risk": {
"debt_to_equity": 0.42,
"current_ratio": 1.18,
"roa": 0.031,
"roa_pct": 3.1,
"de_signal": "conservative",
"current_ratio_signal": "tight",
"overall_signal": "moderate risk"
},
"overall_signal": "mixed"
}
]
[{"symbol":"BBCA.JK","growth":{"revenue_growth":0.081,"earnings_growth":0.121,"revenue_growth_pct":8.1,"earnings_growth_pct":12.1,"revenue_signal":"slow","earnings_signal":"moderate","overall_signal":"mixed"},"valuation":{"pe_trailing":25.4,"pe_forward":null,"pb":4.6,"roe":0.198,"roe_pct":19.8,"net_margin":0.324,"net_margin_pct":32.4,"ev_ebitda":null,"pe_signal":"premium","pb_signal":"expensive","roe_signal":"strong","margin_signal":"excellent","ev_ebitda_signal":"no data","overall_signal":"expensive"},"risk":{"debt_to_equity":0.42,"current_ratio":1.18,"roa":0.031,"roa_pct":3.1,"de_signal":"conservative","current_ratio_signal":"tight","overall_signal":"moderate risk"},"overall_signal":"mixed"},{"symbol":"BBRI.JK","growth":{"revenue_growth":0.081,"earnings_growth":0.121,"revenue_growth_pct":8.1,"earnings_growth_pct":12.1,"revenue_signal":"slow","earnings_signal":"moderate","overall_signal":"mixed"},"valuation":{"pe_trailing":25.4,"pe_forward":null,"pb":4.6,"roe":0.198,"roe_pct":19.8,"net_margin":0.324,"net_margin_pct":32.4,"ev_ebitda":null,"pe_signal":"premium","pb_signal":"expensive","roe_signal":"strong","margin_signal":"excellent","ev_ebitda_signal":"no data","overall_signal":"expensive"},"risk":{"debt_to_equity":0.42,"current_ratio":1.18,"roa":0.031,"roa_pct":3.1,"de_signal":"conservative","current_ratio_signal":"tight","overall_signal":"moderate risk"},"overall_signal":"mixed"}]
--- stderr

View file

@ -1,23 +1,23 @@
exit: 0
--- stdout
Fundamental Comparison
┌────────────────┬─────────────────────────┬─────────────────────────┐
│ METRIC ┆ BBCA.JK ┆ BBRI.JK │
╞════════════════╪═════════════════════════╪═════════════════════════╡
│ Symbol ┆ BBCA.JK ┆ BBRI.JK │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Overall ┆ mixed ┆ mixed │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Growth ┆ mixed ┆ mixed │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Valuation ┆ expensive ┆ expensive │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Risk ┆ moderate risk ┆ moderate risk │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ P/E ┆ 25.40 ┆ 25.40 │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ ROE ┆ +19.80% ┆ +19.80% │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Revenue Growth ┆ +8.10% ┆ +8.10% │
└────────────────┴─────────────────────────┴─────────────────────────┘
Fundamental Comparison
┌────────────────┬───────────────┬───────────────┐
│ METRIC ┆ BBCA.JK ┆ BBRI.JK │
╞════════════════╪═══════════════╪═══════════════╡
│ Symbol ┆ BBCA.JK ┆ BBRI.JK │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Overall ┆ mixed ┆ mixed │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Growth ┆ mixed ┆ mixed │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Valuation ┆ expensive ┆ expensive │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Risk ┆ moderate risk ┆ moderate risk │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ P/E ┆ 25.40 ┆ 25.40 │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ ROE ┆ +19.80% ┆ +19.80% │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Revenue Growth ┆ +8.10% ┆ +8.10% │
└────────────────┴───────────────┴───────────────┘
--- stderr

View file

@ -1,22 +1,4 @@
exit: 0
--- stdout
{
"symbol": "BBCA.JK",
"eps_last_year": 1200.0,
"revenue_last_year": 100000000000.0,
"forecast": [
{
"eps_actual": null,
"eps_forecast": 1300.0,
"eps_surprise": null,
"eps_surprise_pct": null,
"revenue_actual": null,
"revenue_forecast": 110000000000.0,
"revenue_surprise": null,
"earning_release_date": "2026-03-15",
"period_type": "2026"
}
],
"history": []
}
{"symbol":"BBCA.JK","eps_last_year":1200.0,"revenue_last_year":100000000000.0,"forecast":[{"eps_actual":null,"eps_forecast":1300.0,"eps_surprise":null,"eps_surprise_pct":null,"revenue_actual":null,"revenue_forecast":110000000000.0,"revenue_surprise":null,"earning_release_date":"2026-03-15","period_type":"2026"}],"history":[]}
--- stderr

View file

@ -1,22 +1,4 @@
exit: 0
--- stdout
{
"symbol": "BBCA.JK",
"eps_last_year": 1200.0,
"revenue_last_year": 100000000000.0,
"forecast": [],
"history": [
{
"eps_actual": 320.0,
"eps_forecast": null,
"eps_surprise": 5.0,
"eps_surprise_pct": 1.5,
"revenue_actual": 27000000000.0,
"revenue_forecast": null,
"revenue_surprise": 200000000.0,
"earning_release_date": "2025-11-20",
"period_type": "Q42025"
}
]
}
{"symbol":"BBCA.JK","eps_last_year":1200.0,"revenue_last_year":100000000000.0,"forecast":[],"history":[{"eps_actual":320.0,"eps_forecast":null,"eps_surprise":5.0,"eps_surprise_pct":1.5,"revenue_actual":27000000000.0,"revenue_forecast":null,"revenue_surprise":200000000.0,"earning_release_date":"2025-11-20","period_type":"Q42025"}]}
--- stderr

View file

@ -1,56 +1,4 @@
exit: 0
--- stdout
{
"symbol": "BBCA.JK",
"eps_last_year": 1200.0,
"revenue_last_year": 100000000000.0,
"forecast": [
{
"eps_actual": null,
"eps_forecast": 1300.0,
"eps_surprise": null,
"eps_surprise_pct": null,
"revenue_actual": null,
"revenue_forecast": 110000000000.0,
"revenue_surprise": null,
"earning_release_date": "2026-03-15",
"period_type": "2026"
},
{
"eps_actual": null,
"eps_forecast": 330.0,
"eps_surprise": null,
"eps_surprise_pct": null,
"revenue_actual": null,
"revenue_forecast": 28000000000.0,
"revenue_surprise": null,
"earning_release_date": "2026-04-20",
"period_type": "Q12026"
}
],
"history": [
{
"eps_actual": 1250.0,
"eps_forecast": null,
"eps_surprise": 20.0,
"eps_surprise_pct": 1.6,
"revenue_actual": 105000000000.0,
"revenue_forecast": null,
"revenue_surprise": 500000000.0,
"earning_release_date": "2025-03-15",
"period_type": "2025"
},
{
"eps_actual": 320.0,
"eps_forecast": null,
"eps_surprise": 5.0,
"eps_surprise_pct": 1.5,
"revenue_actual": 27000000000.0,
"revenue_forecast": null,
"revenue_surprise": 200000000.0,
"earning_release_date": "2025-11-20",
"period_type": "Q42025"
}
]
}
{"symbol":"BBCA.JK","eps_last_year":1200.0,"revenue_last_year":100000000000.0,"forecast":[{"eps_actual":null,"eps_forecast":1300.0,"eps_surprise":null,"eps_surprise_pct":null,"revenue_actual":null,"revenue_forecast":110000000000.0,"revenue_surprise":null,"earning_release_date":"2026-03-15","period_type":"2026"},{"eps_actual":null,"eps_forecast":330.0,"eps_surprise":null,"eps_surprise_pct":null,"revenue_actual":null,"revenue_forecast":28000000000.0,"revenue_surprise":null,"earning_release_date":"2026-04-20","period_type":"Q12026"}],"history":[{"eps_actual":1250.0,"eps_forecast":null,"eps_surprise":20.0,"eps_surprise_pct":1.6,"revenue_actual":105000000000.0,"revenue_forecast":null,"revenue_surprise":500000000.0,"earning_release_date":"2025-03-15","period_type":"2025"},{"eps_actual":320.0,"eps_forecast":null,"eps_surprise":5.0,"eps_surprise_pct":1.5,"revenue_actual":27000000000.0,"revenue_forecast":null,"revenue_surprise":200000000.0,"earning_release_date":"2025-11-20","period_type":"Q42025"}]}
--- stderr

View file

@ -1,21 +1,4 @@
exit: 0
--- stdout
{
"instrument": {
"id": "bn91jc",
"symbol": "BBCA.JK",
"name": "Bank Central Asia Tbk PT"
},
"balance_sheet": null,
"cash_flow": null,
"income_statement": {
"values": {
"netIncome": 400000000.0,
"totalRevenue": 1000000000.0
},
"currency": "IDR",
"report_date": "2025-12-31",
"end_date": "2025-12-31"
}
}
{"instrument":{"id":"bn91jc","symbol":"BBCA.JK","name":"Bank Central Asia Tbk PT"},"balance_sheet":null,"cash_flow":null,"income_statement":{"values":{"netIncome":400000000.0,"totalRevenue":1000000000.0},"currency":"IDR","report_date":"2025-12-31","end_date":"2025-12-31"}}
--- stderr

View file

@ -1,36 +1,4 @@
exit: 0
--- stdout
{
"instrument": {
"id": "bn91jc",
"symbol": "BBCA.JK",
"name": "Bank Central Asia Tbk PT"
},
"balance_sheet": {
"values": {
"cashAndShortTermInvestments": 500000000.0,
"totalEquity": 900000000.0
},
"currency": "IDR",
"report_date": "2025-12-31",
"end_date": "2025-12-31"
},
"cash_flow": {
"values": {
"operatingCashFlow": 600000000.0
},
"currency": "IDR",
"report_date": "2025-12-31",
"end_date": "2025-12-31"
},
"income_statement": {
"values": {
"netIncome": 400000000.0,
"totalRevenue": 1000000000.0
},
"currency": "IDR",
"report_date": "2025-12-31",
"end_date": "2025-12-31"
}
}
{"instrument":{"id":"bn91jc","symbol":"BBCA.JK","name":"Bank Central Asia Tbk PT"},"balance_sheet":{"values":{"cashAndShortTermInvestments":500000000.0,"totalEquity":900000000.0},"currency":"IDR","report_date":"2025-12-31","end_date":"2025-12-31"},"cash_flow":{"values":{"operatingCashFlow":600000000.0},"currency":"IDR","report_date":"2025-12-31","end_date":"2025-12-31"},"income_statement":{"values":{"netIncome":400000000.0,"totalRevenue":1000000000.0},"currency":"IDR","report_date":"2025-12-31","end_date":"2025-12-31"}}
--- stderr

View file

@ -1,41 +1,4 @@
exit: 0
--- stdout
{
"symbol": "BBCA.JK",
"growth": {
"revenue_growth": 0.081,
"earnings_growth": 0.121,
"revenue_growth_pct": 8.1,
"earnings_growth_pct": 12.1,
"revenue_signal": "slow",
"earnings_signal": "moderate",
"overall_signal": "mixed"
},
"valuation": {
"pe_trailing": 25.4,
"pe_forward": null,
"pb": 4.6,
"roe": 0.198,
"roe_pct": 19.8,
"net_margin": 0.324,
"net_margin_pct": 32.4,
"ev_ebitda": null,
"pe_signal": "premium",
"pb_signal": "expensive",
"roe_signal": "strong",
"margin_signal": "excellent",
"ev_ebitda_signal": "no data",
"overall_signal": "expensive"
},
"risk": {
"debt_to_equity": 0.42,
"current_ratio": 1.18,
"roa": 0.031,
"roa_pct": 3.1,
"de_signal": "conservative",
"current_ratio_signal": "tight",
"overall_signal": "moderate risk"
},
"overall_signal": "mixed"
}
{"symbol":"BBCA.JK","growth":{"revenue_growth":0.081,"earnings_growth":0.121,"revenue_growth_pct":8.1,"earnings_growth_pct":12.1,"revenue_signal":"slow","earnings_signal":"moderate","overall_signal":"mixed"},"valuation":{"pe_trailing":25.4,"pe_forward":null,"pb":4.6,"roe":0.198,"roe_pct":19.8,"net_margin":0.324,"net_margin_pct":32.4,"ev_ebitda":null,"pe_signal":"premium","pb_signal":"expensive","roe_signal":"strong","margin_signal":"excellent","ev_ebitda_signal":"no data","overall_signal":"expensive"},"risk":{"debt_to_equity":0.42,"current_ratio":1.18,"roa":0.031,"roa_pct":3.1,"de_signal":"conservative","current_ratio_signal":"tight","overall_signal":"moderate risk"},"overall_signal":"mixed"}
--- stderr

View file

@ -0,0 +1,4 @@
exit: 0
--- stdout
{"symbol":"BBCA.JK","growth":{"revenue_growth":0.081,"earnings_growth":0.121,"revenue_growth_pct":8.1,"earnings_growth_pct":12.1,"revenue_signal":"slow","earnings_signal":"moderate","overall_signal":"mixed"},"valuation":{"pe_trailing":25.4,"pe_forward":null,"pb":4.6,"roe":0.198,"roe_pct":19.8,"net_margin":0.324,"net_margin_pct":32.4,"ev_ebitda":null,"pe_signal":"premium","pb_signal":"expensive","roe_signal":"strong","margin_signal":"excellent","ev_ebitda_signal":"no data","overall_signal":"expensive"},"risk":{"debt_to_equity":0.42,"current_ratio":1.18,"roa":0.031,"roa_pct":3.1,"de_signal":"conservative","current_ratio_signal":"tight","overall_signal":"moderate risk"},"overall_signal":"mixed"}
--- stderr

View file

@ -1,49 +1,49 @@
exit: 0
--- stdout
Fundamental Analysis for BBCA.JK
Fundamental Analysis for BBCA.JK
Growth Analysis for BBCA.JK
┌─────────────────┬─────────┬────────────────────┐
│ METRIC ┆ VALUE ┆ SIGNAL │
╞═════════════════╪═════════╪════════════════════╡
│ Revenue Growth ┆ +8.10% ┆ slow │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Earnings Growth ┆ +12.10% ┆ moderate │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Overall ┆ - ┆ mixed │
└─────────────────┴─────────┴────────────────────┘
Growth Analysis for BBCA.JK
┌─────────────────┬─────────┬──────────┐
│ METRIC ┆ VALUE ┆ SIGNAL │
╞═════════════════╪═════════╪══════════╡
│ Revenue Growth ┆ +8.10% ┆ slow │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┤
│ Earnings Growth ┆ +12.10% ┆ moderate │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┤
│ Overall ┆ - ┆ mixed │
└─────────────────┴─────────┴──────────┘
Valuation Analysis for BBCA.JK
┌────────────────┬─────────┬─────────────────────┐
│ METRIC ┆ VALUE ┆ SIGNAL │
╞════════════════╪═════════╪═════════════════════╡
│ P/E (Trailing) ┆ 25.40 ┆ premium │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ P/E (Forward) ┆ - ┆ - │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Price/Book ┆ 4.60 ┆ expensive │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ ROE ┆ +19.80% ┆ strong │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Net Margin ┆ +32.40% ┆ excellent │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ EV/EBITDA ┆ - ┆ no data │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Overall ┆ - ┆ expensive │
└────────────────┴─────────┴─────────────────────┘
Valuation Analysis for BBCA.JK
┌────────────────┬─────────┬───────────┐
│ METRIC ┆ VALUE ┆ SIGNAL │
╞════════════════╪═════════╪═══════════╡
│ P/E (Trailing) ┆ 25.40 ┆ premium │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤
│ P/E (Forward) ┆ - ┆ - │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤
│ Price/Book ┆ 4.60 ┆ expensive │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤
│ ROE ┆ +19.80% ┆ strong │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤
│ Net Margin ┆ +32.40% ┆ excellent │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤
│ EV/EBITDA ┆ - ┆ no data │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤
│ Overall ┆ - ┆ expensive │
└────────────────┴─────────┴───────────┘
Risk Analysis for BBCA.JK
┌───────────────┬────────┬─────────────────────────┐
│ METRIC ┆ VALUE ┆ SIGNAL │
╞═══════════════╪════════╪═════════════════════════╡
│ Debt/Equity ┆ 0.42 ┆ conservative │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Current Ratio ┆ 1.18 ┆ tight │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ ROA ┆ +3.10% ┆ - │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Overall ┆ - ┆ moderate risk │
└───────────────┴────────┴─────────────────────────┘
Risk Analysis for BBCA.JK
┌───────────────┬────────┬───────────────┐
│ METRIC ┆ VALUE ┆ SIGNAL │
╞═══════════════╪════════╪═══════════════╡
│ Debt/Equity ┆ 0.42 ┆ conservative │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Current Ratio ┆ 1.18 ┆ tight │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ ROA ┆ +3.10% ┆ - │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Overall ┆ - ┆ moderate risk │
└───────────────┴────────┴───────────────┘
Overall Signal: mixed
Overall Signal: mixed
--- stderr

View file

@ -1,12 +1,4 @@
exit: 0
--- stdout
{
"revenue_growth": 0.081,
"earnings_growth": 0.121,
"revenue_growth_pct": 8.1,
"earnings_growth_pct": 12.1,
"revenue_signal": "slow",
"earnings_signal": "moderate",
"overall_signal": "mixed"
}
{"revenue_growth":0.081,"earnings_growth":0.121,"revenue_growth_pct":8.1,"earnings_growth_pct":12.1,"revenue_signal":"slow","earnings_signal":"moderate","overall_signal":"mixed"}
--- stderr

View file

@ -1,13 +1,13 @@
exit: 0
--- stdout
Growth Analysis for BBCA.JK
┌─────────────────┬─────────┬────────────────────┐
│ METRIC ┆ VALUE ┆ SIGNAL │
╞═════════════════╪═════════╪════════════════════╡
│ Revenue Growth ┆ +8.10% ┆ slow │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Earnings Growth ┆ +12.10% ┆ moderate │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Overall ┆ - ┆ mixed │
└─────────────────┴─────────┴────────────────────┘
Growth Analysis for BBCA.JK
┌─────────────────┬─────────┬──────────┐
│ METRIC ┆ VALUE ┆ SIGNAL │
╞═════════════════╪═════════╪══════════╡
│ Revenue Growth ┆ +8.10% ┆ slow │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┤
│ Earnings Growth ┆ +12.10% ┆ moderate │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┤
│ Overall ┆ - ┆ mixed │
└─────────────────┴─────────┴──────────┘
--- stderr

View file

@ -1,29 +1,4 @@
exit: 0
--- stdout
[
{
"date": "2026-01-14",
"open": 8000,
"high": 8000,
"low": 8000,
"close": 8000,
"volume": 0
},
{
"date": "2026-01-15",
"open": 8075,
"high": 8075,
"low": 8075,
"close": 8075,
"volume": 0
},
{
"date": "2026-01-16",
"open": 8025,
"high": 8025,
"low": 8025,
"close": 8025,
"volume": 0
}
]
[{"date":"2026-01-14","open":8000,"high":8000,"low":8000,"close":8000,"volume":0},{"date":"2026-01-15","open":8075,"high":8075,"low":8075,"close":8075,"volume":0},{"date":"2026-01-16","open":8025,"high":8025,"low":8025,"close":8025,"volume":0}]
--- stderr

View file

@ -1,6 +1,6 @@
exit: 0
--- stdout
History for BBCA.JK
History for BBCA.JK
┌────────────┬───────┬───────┬───────┬───────┬────────┐
│ DATE ┆ OPEN ┆ HIGH ┆ LOW ┆ CLOSE ┆ VOLUME │
╞════════════╪═══════╪═══════╪═══════╪═══════╪════════╡

View file

@ -1,29 +1,4 @@
exit: 0
--- stdout
[
{
"date": "2024-03-01",
"open": 9800,
"high": 9900,
"low": 9750,
"close": 9875,
"volume": 12300000
},
{
"date": "2024-03-02",
"open": 9850,
"high": 9920,
"low": 9800,
"close": 9880,
"volume": 11000000
},
{
"date": "2024-03-03",
"open": 9860,
"high": 9950,
"low": 9820,
"close": 9925,
"volume": 14000000
}
]
[{"date":"2024-03-01","open":9800,"high":9900,"low":9750,"close":9875,"volume":12300000},{"date":"2024-03-02","open":9850,"high":9920,"low":9800,"close":9880,"volume":11000000},{"date":"2024-03-03","open":9860,"high":9950,"low":9820,"close":9925,"volume":14000000}]
--- stderr

View file

@ -0,0 +1,6 @@
exit: 0
--- stdout
{"date":"2024-03-01","open":9800,"high":9900,"low":9750,"close":9875,"volume":12300000}
{"date":"2024-03-02","open":9850,"high":9920,"low":9800,"close":9880,"volume":11000000}
{"date":"2024-03-03","open":9860,"high":9950,"low":9820,"close":9925,"volume":14000000}
--- stderr

View file

@ -1,6 +1,6 @@
exit: 0
--- stdout
History for BBCA.JK
History for BBCA.JK
┌────────────┬───────┬───────┬───────┬───────┬────────────┐
│ DATE ┆ OPEN ┆ HIGH ┆ LOW ┆ CLOSE ┆ VOLUME │
╞════════════╪═══════╪═══════╪═══════╪═══════╪════════════╡

View file

@ -1,16 +1,4 @@
exit: 0
--- stdout
{
"id": "bn91jc",
"symbol": "BBCA.JK",
"summary": "Mixed analyst signals for Bank Central Asia Tbk PT: 1 positive, 1 negative, 1 neutral.",
"highlights": [
"P/E ratio: Earnings data unavailable, can't compare P/E ratio with peers",
"Analyst price target: Analysts forecast more than 20% upside for 12-month price target"
],
"risks": [
"Quarterly Revenue YoY Growth: Revenue grew worse than peers"
],
"last_updated": "2026-03-26T04:14:57.9197955Z"
}
{"id":"bn91jc","symbol":"BBCA.JK","summary":"Mixed analyst signals for Bank Central Asia Tbk PT: 1 positive, 1 negative, 1 neutral.","highlights":["P/E ratio: Earnings data unavailable, can't compare P/E ratio with peers","Analyst price target: Analysts forecast more than 20% upside for 12-month price target"],"risks":["Quarterly Revenue YoY Growth: Revenue grew worse than peers"],"last_updated":"2026-03-26T04:14:57.9197955Z"}
--- stderr

View file

@ -1,15 +1,4 @@
exit: 0
--- stdout
[
{
"id": "news-1",
"symbol": "BBCA.JK",
"title": "BCA reports steady growth",
"url": "https://example.com/news/bca-growth",
"description": "BCA delivered steady quarterly growth across lending and deposits.",
"provider": "Contoso News",
"published_at": "2026-03-20T10:00:00Z",
"read_time_min": 3
}
]
[{"id":"news-1","symbol":"BBCA.JK","title":"BCA reports steady growth","url":"https://example.com/news/bca-growth","description":"BCA delivered steady quarterly growth across lending and deposits.","provider":"Contoso News","published_at":"2026-03-20T10:00:00Z","read_time_min":3}]
--- stderr

View file

@ -1,27 +1,4 @@
exit: 0
--- stdout
{
"id": "feee16af-c94c-465d-a59d-a9727c22bd0e",
"symbol": "BBCA",
"short_name": "Bank Cntrl Asia",
"long_name": "PT Bank Central Asia Tbk",
"description": "PT Bank Central Asia Tbk (the Bank) is an Indonesia-based commercial bank.",
"sector": "Financials",
"industry": "Banking Services",
"website": "https://www.bca.co.id/",
"employees": 27937,
"address": "Menara BCA, Grand, Jl. MH Thamrin No. 1",
"city": "JAKARTA PUSAT",
"country": "Indonesia",
"phone": "+62 21 23588000",
"officers": [
{
"name": "Jahja Setiaatmadja",
"title": "President Director",
"age": 69,
"year_born": 1955,
"total_pay": 12000000000
}
]
}
{"id":"feee16af-c94c-465d-a59d-a9727c22bd0e","symbol":"BBCA","short_name":"Bank Cntrl Asia","long_name":"PT Bank Central Asia Tbk","description":"PT Bank Central Asia Tbk (the Bank) is an Indonesia-based commercial bank.","sector":"Financials","industry":"Banking Services","website":"https://www.bca.co.id/","employees":27937,"address":"Menara BCA, Grand, Jl. MH Thamrin No. 1","city":"JAKARTA PUSAT","country":"Indonesia","phone":"+62 21 23588000","officers":[{"name":"Jahja Setiaatmadja","title":"President Director","age":69,"year_born":1955,"total_pay":12000000000}]}
--- stderr

View file

@ -1,35 +1,4 @@
exit: 0
--- stdout
[
{
"symbol": "BBCA.JK",
"price": 9875,
"change": 117,
"change_pct": 1.2,
"volume": 12300000,
"market_cap": 1215200000000000,
"week52_high": 10250,
"week52_low": 7800,
"week52_position": 0.8469387755102041,
"range_signal": "upper",
"prev_close": 9758,
"avg_volume": 10000000,
"as_of": null
},
{
"symbol": "BBRI.JK",
"price": 9875,
"change": 117,
"change_pct": 1.2,
"volume": 12300000,
"market_cap": 1215200000000000,
"week52_high": 10250,
"week52_low": 7800,
"week52_position": 0.8469387755102041,
"range_signal": "upper",
"prev_close": 9758,
"avg_volume": 10000000,
"as_of": null
}
]
[{"symbol":"BBCA.JK","price":9875,"change":117,"change_pct":1.2,"volume":12300000,"market_cap":1215200000000000,"week52_high":10250,"week52_low":7800,"week52_position":0.8469387755102041,"range_signal":"upper","prev_close":9758,"avg_volume":10000000,"as_of":null},{"symbol":"BBRI.JK","price":9875,"change":117,"change_pct":1.2,"volume":12300000,"market_cap":1215200000000000,"week52_high":10250,"week52_low":7800,"week52_position":0.8469387755102041,"range_signal":"upper","prev_close":9758,"avg_volume":10000000,"as_of":null}]
--- stderr

View file

@ -0,0 +1,5 @@
exit: 0
--- stdout
{"symbol":"BBCA.JK","price":9875,"change":117,"change_pct":1.2,"volume":12300000,"market_cap":1215200000000000,"week52_high":10250,"week52_low":7800,"week52_position":0.8469387755102041,"range_signal":"upper","prev_close":9758,"avg_volume":10000000,"as_of":null}
{"symbol":"BBRI.JK","price":9875,"change":117,"change_pct":1.2,"volume":12300000,"market_cap":1215200000000000,"week52_high":10250,"week52_low":7800,"week52_position":0.8469387755102041,"range_signal":"upper","prev_close":9758,"avg_volume":10000000,"as_of":null}
--- stderr

View file

@ -1,20 +1,4 @@
exit: 0
--- stdout
[
{
"symbol": "BBCA.JK",
"price": 9875,
"change": 117,
"change_pct": 1.2,
"volume": 12300000,
"market_cap": 1215200000000000,
"week52_high": 10250,
"week52_low": 7800,
"week52_position": 0.8469387755102041,
"range_signal": "upper",
"prev_close": 9758,
"avg_volume": 10000000,
"as_of": null
}
]
[{"symbol":"BBCA.JK","price":9875,"change":117,"change_pct":1.2,"volume":12300000,"market_cap":1215200000000000,"week52_high":10250,"week52_low":7800,"week52_position":0.8469387755102041,"range_signal":"upper","prev_close":9758,"avg_volume":10000000,"as_of":null}]
--- stderr

View file

@ -0,0 +1,4 @@
exit: 0
--- stdout
[{"symbol":"BBCA.JK","price":9875,"change":117,"change_pct":1.2,"volume":12300000,"market_cap":1215200000000000,"week52_high":10250,"week52_low":7800,"week52_position":0.8469387755102041,"range_signal":"upper","prev_close":9758,"avg_volume":10000000,"as_of":null},{"symbol":"BBRI.JK","price":9875,"change":117,"change_pct":1.2,"volume":12300000,"market_cap":1215200000000000,"week52_high":10250,"week52_low":7800,"week52_position":0.8469387755102041,"range_signal":"upper","prev_close":9758,"avg_volume":10000000,"as_of":null}]
--- stderr

View file

@ -0,0 +1,10 @@
exit: 0
--- stdout
┌─────────┬───────┬──────┬────────┬────────────┬───────────────────────┬────────────┐
│ SYMBOL ┆ PRICE ┆ CHG ┆ CHG% ┆ VOLUME ┆ MKT CAP ┆ 52W RANGE │
╞═════════╪═══════╪══════╪════════╪════════════╪═══════════════════════╪════════════╡
│ BBCA.JK ┆ 9,875 ┆ +117 ┆ +1.20% ┆ 12,300,000 ┆ 1,215,200,000,000,000 ┆ ████████░░ │
├╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤
│ BBRI.JK ┆ 9,875 ┆ +117 ┆ +1.20% ┆ 12,300,000 ┆ 1,215,200,000,000,000 ┆ ████████░░ │
└─────────┴───────┴──────┴────────┴────────────┴───────────────────────┴────────────┘
--- stderr

View file

@ -1,20 +1,4 @@
exit: 0
--- stdout
[
{
"symbol": "BBCA.JK",
"price": 9875,
"change": 117,
"change_pct": 1.2,
"volume": 12300000,
"market_cap": 1215200000000000,
"week52_high": 10250,
"week52_low": 7800,
"week52_position": 0.8469387755102041,
"range_signal": "upper",
"prev_close": 9758,
"avg_volume": 10000000,
"as_of": null
}
]
[{"symbol":"BBCA.JK","price":9875,"change":117,"change_pct":1.2,"volume":12300000,"market_cap":1215200000000000,"week52_high":10250,"week52_low":7800,"week52_position":0.8469387755102041,"range_signal":"upper","prev_close":9758,"avg_volume":10000000,"as_of":null}]
--- stderr

View file

@ -1,12 +1,4 @@
exit: 0
--- stdout
{
"debt_to_equity": 0.42,
"current_ratio": 1.18,
"roa": 0.031,
"roa_pct": 3.1,
"de_signal": "conservative",
"current_ratio_signal": "tight",
"overall_signal": "moderate risk"
}
{"debt_to_equity":0.42,"current_ratio":1.18,"roa":0.031,"roa_pct":3.1,"de_signal":"conservative","current_ratio_signal":"tight","overall_signal":"moderate risk"}
--- stderr

View file

@ -1,15 +1,15 @@
exit: 0
--- stdout
Risk Analysis for BBCA.JK
┌───────────────┬────────┬─────────────────────────┐
│ METRIC ┆ VALUE ┆ SIGNAL │
╞═══════════════╪════════╪═════════════════════════╡
│ Debt/Equity ┆ 0.42 ┆ conservative │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Current Ratio ┆ 1.18 ┆ tight │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ ROA ┆ +3.10% ┆ - │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Overall ┆ - ┆ moderate risk │
└───────────────┴────────┴─────────────────────────┘
Risk Analysis for BBCA.JK
┌───────────────┬────────┬───────────────┐
│ METRIC ┆ VALUE ┆ SIGNAL │
╞═══════════════╪════════╪═══════════════╡
│ Debt/Equity ┆ 0.42 ┆ conservative │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Current Ratio ┆ 1.18 ┆ tight │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ ROA ┆ +3.10% ┆ - │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Overall ┆ - ┆ moderate risk │
└───────────────┴────────┴───────────────┘
--- stderr

View file

@ -1,35 +1,4 @@
exit: 0
--- stdout
[
{
"symbol": "BBRI.JK",
"price": 5100,
"change": 210,
"change_pct": 4.3,
"volume": 22200000,
"market_cap": 780000000000000,
"week52_high": 5400,
"week52_low": 3900,
"week52_position": 0.8,
"range_signal": "upper",
"prev_close": 4890,
"avg_volume": 18000000,
"as_of": null
},
{
"symbol": "BBCA.JK",
"price": 9875,
"change": 117,
"change_pct": 1.2,
"volume": 12300000,
"market_cap": 1215200000000000,
"week52_high": 10500,
"week52_low": 8000,
"week52_position": 0.75,
"range_signal": "upper",
"prev_close": 9758,
"avg_volume": 10000000,
"as_of": null
}
]
[{"symbol":"BBRI.JK","price":5100,"change":210,"change_pct":4.3,"volume":22200000,"market_cap":780000000000000,"week52_high":5400,"week52_low":3900,"week52_position":0.8,"range_signal":"upper","prev_close":4890,"avg_volume":18000000,"as_of":null},{"symbol":"BBCA.JK","price":9875,"change":117,"change_pct":1.2,"volume":12300000,"market_cap":1215200000000000,"week52_high":10500,"week52_low":8000,"week52_position":0.75,"range_signal":"upper","prev_close":9758,"avg_volume":10000000,"as_of":null}]
--- stderr

View file

@ -1,35 +1,4 @@
exit: 0
--- stdout
[
{
"symbol": "BBCA.JK",
"price": 9875,
"change": 117,
"change_pct": 1.2,
"volume": 12300000,
"market_cap": 1215200000000000,
"week52_high": 10500,
"week52_low": 8000,
"week52_position": 0.75,
"range_signal": "upper",
"prev_close": 9758,
"avg_volume": 10000000,
"as_of": null
},
{
"symbol": "BBRI.JK",
"price": 5100,
"change": 210,
"change_pct": 4.3,
"volume": 22200000,
"market_cap": 780000000000000,
"week52_high": 5400,
"week52_low": 3900,
"week52_position": 0.8,
"range_signal": "upper",
"prev_close": 4890,
"avg_volume": 18000000,
"as_of": null
}
]
[{"symbol":"BBCA.JK","price":9875,"change":117,"change_pct":1.2,"volume":12300000,"market_cap":1215200000000000,"week52_high":10500,"week52_low":8000,"week52_position":0.75,"range_signal":"upper","prev_close":9758,"avg_volume":10000000,"as_of":null},{"symbol":"BBRI.JK","price":5100,"change":210,"change_pct":4.3,"volume":22200000,"market_cap":780000000000000,"week52_high":5400,"week52_low":3900,"week52_position":0.8,"range_signal":"upper","prev_close":4890,"avg_volume":18000000,"as_of":null}]
--- stderr

View file

@ -1,35 +1,4 @@
exit: 0
--- stdout
[
{
"symbol": "BBCA.JK",
"price": 9875,
"change": 117,
"change_pct": 1.2,
"volume": 12300000,
"market_cap": 1215200000000000,
"week52_high": 10500,
"week52_low": 8000,
"week52_position": 0.75,
"range_signal": "upper",
"prev_close": 9758,
"avg_volume": 10000000,
"as_of": null
},
{
"symbol": "BBRI.JK",
"price": 5100,
"change": 210,
"change_pct": 4.3,
"volume": 22200000,
"market_cap": 780000000000000,
"week52_high": 5400,
"week52_low": 3900,
"week52_position": 0.8,
"range_signal": "upper",
"prev_close": 4890,
"avg_volume": 18000000,
"as_of": null
}
]
[{"symbol":"BBCA.JK","price":9875,"change":117,"change_pct":1.2,"volume":12300000,"market_cap":1215200000000000,"week52_high":10500,"week52_low":8000,"week52_position":0.75,"range_signal":"upper","prev_close":9758,"avg_volume":10000000,"as_of":null},{"symbol":"BBRI.JK","price":5100,"change":210,"change_pct":4.3,"volume":22200000,"market_cap":780000000000000,"week52_high":5400,"week52_low":3900,"week52_position":0.8,"range_signal":"upper","prev_close":4890,"avg_volume":18000000,"as_of":null}]
--- stderr

View file

@ -1,35 +1,4 @@
exit: 0
--- stdout
[
{
"symbol": "BBRI.JK",
"price": 5100,
"change": 210,
"change_pct": 4.3,
"volume": 22200000,
"market_cap": 780000000000000,
"week52_high": 5400,
"week52_low": 3900,
"week52_position": 0.8,
"range_signal": "upper",
"prev_close": 4890,
"avg_volume": 18000000,
"as_of": null
},
{
"symbol": "BBCA.JK",
"price": 9875,
"change": 117,
"change_pct": 1.2,
"volume": 12300000,
"market_cap": 1215200000000000,
"week52_high": 10500,
"week52_low": 8000,
"week52_position": 0.75,
"range_signal": "upper",
"prev_close": 9758,
"avg_volume": 10000000,
"as_of": null
}
]
[{"symbol":"BBRI.JK","price":5100,"change":210,"change_pct":4.3,"volume":22200000,"market_cap":780000000000000,"week52_high":5400,"week52_low":3900,"week52_position":0.8,"range_signal":"upper","prev_close":4890,"avg_volume":18000000,"as_of":null},{"symbol":"BBCA.JK","price":9875,"change":117,"change_pct":1.2,"volume":12300000,"market_cap":1215200000000000,"week52_high":10500,"week52_low":8000,"week52_position":0.75,"range_signal":"upper","prev_close":9758,"avg_volume":10000000,"as_of":null}]
--- stderr

View file

@ -1,20 +1,4 @@
exit: 0
--- stdout
{
"symbol": "BBCA.JK",
"statistics": [
{
"time_range": "1D",
"bullish": 10,
"bearish": 2,
"neutral": 3
},
{
"time_range": "1W",
"bullish": 25,
"bearish": 5,
"neutral": 7
}
]
}
{"symbol":"BBCA.JK","statistics":[{"time_range":"1D","bullish":10,"bearish":2,"neutral":3},{"time_range":"1W","bullish":25,"bearish":5,"neutral":7}]}
--- stderr

View file

@ -1,28 +1,4 @@
exit: 0
--- stdout
{
"symbol": "BBCA.JK",
"as_of": "2024-03-03",
"current_price": 9925,
"sma20": null,
"sma50": null,
"sma200": null,
"rsi14": null,
"macd": {
"line": null,
"signal": null,
"histogram": null
},
"volume": {
"current": 14000000,
"average20": null,
"ratio20": null
},
"signals": {
"rsi": "Neutral",
"macd": "Neutral",
"trend": "Neutral",
"overall": "Neutral"
}
}
{"symbol":"BBCA.JK","as_of":"2024-03-03","current_price":9925,"sma20":null,"sma50":null,"sma200":null,"rsi14":null,"macd":{"line":null,"signal":null,"histogram":null},"volume":{"current":14000000,"average20":null,"ratio20":null},"signals":{"rsi":"Neutral","macd":"Neutral","trend":"Neutral","overall":"Neutral"}}
--- stderr

View file

@ -1,26 +1,26 @@
exit: 0
--- stdout
Technical Analysis for BBCA.JK (2024-03-03)
┌───────────────────┬─────────────────────────────────────────────────────┬───────────────────┐
│ METRIC ┆ VALUE ┆ SIGNAL │
╞═══════════════════╪═════════════════════════════════════════════════════╪═══════════════════╡
│ Current Price ┆ 9,925 ┆ - │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ SMA 20 ┆ - ┆ - │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ SMA 50 ┆ - ┆ - │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ SMA 200 ┆ - ┆ - │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ RSI (14) ┆ - ┆ Neutral │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ MACD (12,26,9) ┆ -/-/- ┆ Neutral │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Trend ┆ Trend unavailable (need at least 200 daily candles) ┆ Neutral │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Volume Ratio (20) ┆ - ┆ - │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Overall Signal ┆ - ┆ NEUTRAL │
└───────────────────┴─────────────────────────────────────────────────────┴───────────────────┘
Technical Analysis for BBCA.JK (2024-03-03)
┌───────────────────┬─────────────────────────────────────────────────────┬─────────┐
│ METRIC ┆ VALUE ┆ SIGNAL │
╞═══════════════════╪═════════════════════════════════════════════════════╪═════════╡
│ Current Price ┆ 9,925 ┆ - │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤
│ SMA 20 ┆ - ┆ - │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤
│ SMA 50 ┆ - ┆ - │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤
│ SMA 200 ┆ - ┆ - │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤
│ RSI (14) ┆ - ┆ Neutral │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤
│ MACD (12,26,9) ┆ -/-/- ┆ Neutral │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤
│ Trend ┆ Trend unavailable (need at least 200 daily candles) ┆ Neutral │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤
│ Volume Ratio (20) ┆ - ┆ - │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤
│ Overall Signal ┆ - ┆ NEUTRAL │
└───────────────────┴─────────────────────────────────────────────────────┴─────────┘
--- stderr
info: history provider fallback active (msn -> yahoo)

View file

@ -1,19 +1,4 @@
exit: 0
--- stdout
{
"pe_trailing": null,
"pe_forward": null,
"pb": 4.6,
"roe": 0.198,
"roe_pct": 19.8,
"net_margin": 0.442,
"net_margin_pct": 44.2,
"ev_ebitda": null,
"pe_signal": "no data",
"pb_signal": "expensive",
"roe_signal": "strong",
"margin_signal": "excellent",
"ev_ebitda_signal": "no data",
"overall_signal": "expensive"
}
{"pe_trailing":null,"pe_forward":null,"pb":4.6,"roe":0.198,"roe_pct":19.8,"net_margin":0.442,"net_margin_pct":44.2,"ev_ebitda":null,"pe_signal":"no data","pb_signal":"expensive","roe_signal":"strong","margin_signal":"excellent","ev_ebitda_signal":"no data","overall_signal":"expensive"}
--- stderr

View file

@ -1,21 +1,21 @@
exit: 0
--- stdout
Valuation Analysis for BBCA.JK
┌────────────────┬─────────┬─────────────────────┐
│ METRIC ┆ VALUE ┆ SIGNAL │
╞════════════════╪═════════╪═════════════════════╡
│ P/E (Trailing) ┆ - ┆ no data │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ P/E (Forward) ┆ - ┆ - │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Price/Book ┆ 4.60 ┆ expensive │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ ROE ┆ +19.80% ┆ strong │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Net Margin ┆ +44.20% ┆ excellent │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ EV/EBITDA ┆ - ┆ no data │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Overall ┆ - ┆ expensive │
└────────────────┴─────────┴─────────────────────┘
Valuation Analysis for BBCA.JK
┌────────────────┬─────────┬───────────┐
│ METRIC ┆ VALUE ┆ SIGNAL │
╞════════════════╪═════════╪═══════════╡
│ P/E (Trailing) ┆ - ┆ no data │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤
│ P/E (Forward) ┆ - ┆ - │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤
│ Price/Book ┆ 4.60 ┆ expensive │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤
│ ROE ┆ +19.80% ┆ strong │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤
│ Net Margin ┆ +44.20% ┆ excellent │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤
│ EV/EBITDA ┆ - ┆ no data │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤
│ Overall ┆ - ┆ expensive │
└────────────────┴─────────┴───────────┘
--- stderr

View file

@ -1,19 +1,4 @@
exit: 0
--- stdout
{
"pe_trailing": 25.4,
"pe_forward": null,
"pb": 4.6,
"roe": 0.198,
"roe_pct": 19.8,
"net_margin": 0.324,
"net_margin_pct": 32.4,
"ev_ebitda": null,
"pe_signal": "premium",
"pb_signal": "expensive",
"roe_signal": "strong",
"margin_signal": "excellent",
"ev_ebitda_signal": "no data",
"overall_signal": "expensive"
}
{"pe_trailing":25.4,"pe_forward":null,"pb":4.6,"roe":0.198,"roe_pct":19.8,"net_margin":0.324,"net_margin_pct":32.4,"ev_ebitda":null,"pe_signal":"premium","pb_signal":"expensive","roe_signal":"strong","margin_signal":"excellent","ev_ebitda_signal":"no data","overall_signal":"expensive"}
--- stderr

View file

@ -1,21 +1,21 @@
exit: 0
--- stdout
Valuation Analysis for BBCA.JK
┌────────────────┬─────────┬─────────────────────┐
│ METRIC ┆ VALUE ┆ SIGNAL │
╞════════════════╪═════════╪═════════════════════╡
│ P/E (Trailing) ┆ 25.40 ┆ premium │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ P/E (Forward) ┆ - ┆ - │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Price/Book ┆ 4.60 ┆ expensive │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ ROE ┆ +19.80% ┆ strong │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Net Margin ┆ +32.40% ┆ excellent │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ EV/EBITDA ┆ - ┆ no data │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Overall ┆ - ┆ expensive │
└────────────────┴─────────┴─────────────────────┘
Valuation Analysis for BBCA.JK
┌────────────────┬─────────┬───────────┐
│ METRIC ┆ VALUE ┆ SIGNAL │
╞════════════════╪═════════╪═══════════╡
│ P/E (Trailing) ┆ 25.40 ┆ premium │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤
│ P/E (Forward) ┆ - ┆ - │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤
│ Price/Book ┆ 4.60 ┆ expensive │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤
│ ROE ┆ +19.80% ┆ strong │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤
│ Net Margin ┆ +32.40% ┆ excellent │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤
│ EV/EBITDA ┆ - ┆ no data │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤
│ Overall ┆ - ┆ expensive │
└────────────────┴─────────┴───────────┘
--- stderr

View file

@ -1,41 +1,4 @@
exit: 0
--- stdout
{
"symbol": "BBCA.JK",
"growth": {
"revenue_growth": 0.118,
"earnings_growth": 0.121,
"revenue_growth_pct": 11.8,
"earnings_growth_pct": 12.1,
"revenue_signal": "moderate",
"earnings_signal": "moderate",
"overall_signal": "growing"
},
"valuation": {
"pe_trailing": 25.4,
"pe_forward": 23.1,
"pb": 4.6,
"roe": 0.202,
"roe_pct": 20.2,
"net_margin": 0.385,
"net_margin_pct": 38.5,
"ev_ebitda": 21.28,
"pe_signal": "premium",
"pb_signal": "expensive",
"roe_signal": "excellent",
"margin_signal": "excellent",
"ev_ebitda_signal": "expensive",
"overall_signal": "expensive"
},
"risk": {
"debt_to_equity": 18.5,
"current_ratio": 1.21,
"roa": 0.038,
"roa_pct": 3.8,
"de_signal": "conservative",
"current_ratio_signal": "tight",
"overall_signal": "moderate risk"
},
"overall_signal": "mixed"
}
{"symbol":"BBCA.JK","growth":{"revenue_growth":0.118,"earnings_growth":0.121,"revenue_growth_pct":11.8,"earnings_growth_pct":12.1,"revenue_signal":"moderate","earnings_signal":"moderate","overall_signal":"growing"},"valuation":{"pe_trailing":25.4,"pe_forward":23.1,"pb":4.6,"roe":0.202,"roe_pct":20.2,"net_margin":0.385,"net_margin_pct":38.5,"ev_ebitda":21.28,"pe_signal":"premium","pb_signal":"expensive","roe_signal":"excellent","margin_signal":"excellent","ev_ebitda_signal":"expensive","overall_signal":"expensive"},"risk":{"debt_to_equity":18.5,"current_ratio":1.21,"roa":0.038,"roa_pct":3.8,"de_signal":"conservative","current_ratio_signal":"tight","overall_signal":"moderate risk"},"overall_signal":"mixed"}
--- stderr

View file

@ -1,49 +1,49 @@
exit: 0
--- stdout
Fundamental Analysis for BBCA.JK
Fundamental Analysis for BBCA.JK
Growth Analysis for BBCA.JK
┌─────────────────┬─────────┬────────────────────┐
│ METRIC ┆ VALUE ┆ SIGNAL │
╞═════════════════╪═════════╪════════════════════╡
│ Revenue Growth ┆ +11.80% ┆ moderate │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Earnings Growth ┆ +12.10% ┆ moderate │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Overall ┆ - ┆ growing │
└─────────────────┴─────────┴────────────────────┘
Growth Analysis for BBCA.JK
┌─────────────────┬─────────┬──────────┐
│ METRIC ┆ VALUE ┆ SIGNAL │
╞═════════════════╪═════════╪══════════╡
│ Revenue Growth ┆ +11.80% ┆ moderate │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┤
│ Earnings Growth ┆ +12.10% ┆ moderate │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┤
│ Overall ┆ - ┆ growing │
└─────────────────┴─────────┴──────────┘
Valuation Analysis for BBCA.JK
┌────────────────┬─────────┬─────────────────────┐
│ METRIC ┆ VALUE ┆ SIGNAL │
╞════════════════╪═════════╪═════════════════════╡
│ P/E (Trailing) ┆ 25.40 ┆ premium │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ P/E (Forward) ┆ 23.10 ┆ - │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Price/Book ┆ 4.60 ┆ expensive │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ ROE ┆ +20.20% ┆ excellent │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Net Margin ┆ +38.50% ┆ excellent │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ EV/EBITDA ┆ 21.28 ┆ expensive │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Overall ┆ - ┆ expensive │
└────────────────┴─────────┴─────────────────────┘
Valuation Analysis for BBCA.JK
┌────────────────┬─────────┬───────────┐
│ METRIC ┆ VALUE ┆ SIGNAL │
╞════════════════╪═════════╪═══════════╡
│ P/E (Trailing) ┆ 25.40 ┆ premium │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤
│ P/E (Forward) ┆ 23.10 ┆ - │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤
│ Price/Book ┆ 4.60 ┆ expensive │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤
│ ROE ┆ +20.20% ┆ excellent │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤
│ Net Margin ┆ +38.50% ┆ excellent │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤
│ EV/EBITDA ┆ 21.28 ┆ expensive │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤
│ Overall ┆ - ┆ expensive │
└────────────────┴─────────┴───────────┘
Risk Analysis for BBCA.JK
┌───────────────┬────────┬─────────────────────────┐
│ METRIC ┆ VALUE ┆ SIGNAL │
╞═══════════════╪════════╪═════════════════════════╡
│ Debt/Equity ┆ 18.50 ┆ conservative │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Current Ratio ┆ 1.21 ┆ tight │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ ROA ┆ +3.80% ┆ - │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Overall ┆ - ┆ moderate risk │
└───────────────┴────────┴─────────────────────────┘
Risk Analysis for BBCA.JK
┌───────────────┬────────┬───────────────┐
│ METRIC ┆ VALUE ┆ SIGNAL │
╞═══════════════╪════════╪═══════════════╡
│ Debt/Equity ┆ 18.50 ┆ conservative │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Current Ratio ┆ 1.21 ┆ tight │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ ROA ┆ +3.80% ┆ - │
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
│ Overall ┆ - ┆ moderate risk │
└───────────────┴────────┴───────────────┘
Overall Signal: mixed
Overall Signal: mixed
--- stderr

View file

@ -1,29 +1,4 @@
exit: 0
--- stdout
[
{
"date": "2024-03-01",
"open": 9800,
"high": 9900,
"low": 9750,
"close": 9875,
"volume": 12300000
},
{
"date": "2024-03-02",
"open": 9850,
"high": 9920,
"low": 9800,
"close": 9880,
"volume": 11000000
},
{
"date": "2024-03-03",
"open": 9860,
"high": 9950,
"low": 9820,
"close": 9925,
"volume": 14000000
}
]
[{"date":"2024-03-01","open":9800,"high":9900,"low":9750,"close":9875,"volume":12300000},{"date":"2024-03-02","open":9850,"high":9920,"low":9800,"close":9880,"volume":11000000},{"date":"2024-03-03","open":9860,"high":9950,"low":9820,"close":9925,"volume":14000000}]
--- stderr

Some files were not shown because too many files have changed in this diff Show more