agentsclimarketplace

Ib portfolio analyst

Skill luyangkk/ib-suite/skills/ib-suite/ib-portfolio-analyst

Read-only Interactive Brokers (IBKR) diagnostics as portable AI-agent skills: account health, positions, daily P&L, trade history, dividends, options Greeks, and a P0–P3 graded portfolio report. Never places orders.

Install
npx -y skills add luyangkk/ib-suite --skill ib-portfolio-analyst

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • 17 days oldThe repository was created 17 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Read-only IB diagnostics: account health, concentration, P&L attribution, trade review, portfolio risk, pre-trade check — a P0-P3 findings report with charts.

SKILL.md

2.9 KB, 665 tokens by cl100k_base, as published. Nobody here has run it

ib-portfolio-analyst

Turns the local data lake (populated by ib-gateway) into a structured P0–P3 diagnostic report. Never contacts IB and never places orders — it reads snapshots, bars and executions that were already synced.

Prerequisite

Config and the shared venv are owned by the ib-suite index skill (see its first-run setup). Run ib-gateway's /ib-sync first so a snapshot exists under data/snapshots/.

v1 input note: /ib-sync currently lands only the account snapshot and positions. Daily bars, executions and dividends are optional JSON inputs you supply directly (arrays matching the DailyBar / Execution / Dividend schema — e.g. exported from a Flex report). Landing them into the lake as a /ib-sync step is deferred to a later iteration.

/ib-analyze — run all diagnostics

{baseDir}/../.venv/bin/python {baseDir}/scripts/analyze.py \
  --config .ib-suite/config.yaml \
  --snapshot data/snapshots/<account>/<ts>.json \
  --bars bars.json \
  --executions executions.json \
  --out data/runs/$(date +%Y%m%dT%H%M%S)

Produces report.md plus interactive .html and static .png charts in the output directory. --bars/--executions are optional JSON arrays; the risk and trade-review sections appear only when their data is supplied.

Dividends

Pass Flex-sourced dividend history (a JSON array of Dividend rows) to include income diagnostics:

{baseDir}/../.venv/bin/python {baseDir}/scripts/analyze.py \
  --config .ib-suite/config.yaml \
  --snapshot data/snapshots/<account>/<ts>.json \
  --dividends dividends.json \
  --out data/runs/$(date +%Y%m%dT%H%M%S)

Adds Yield-on-Cost and withholding-tax findings plus an income-by-symbol chart.

Withholding-tax note (v1): the Flex parser does not yet extract the separate withholding-tax cash rows, so tax defaults to 0 unless you set it in the supplied JSON. The withholding-drag finding therefore reads 0% against unedited Flex output until tax parsing lands in a later iteration.

Findings

Each finding carries: priority (P0–P3), dimension, finding, evidence, impact, suggestion, trigger condition, confidence, and data limitations. Findings are diagnostic and directional only — never return promises.

Notes

  • All thresholds live in config.yaml under thresholds: (see ib-common's config.example.yaml).
  • Pre-trade check is a separate local simulation (ib_analyst.pretrade_check.simulate), not part of the /ib-analyze auto report — it estimates post-trade weight/leverage for a hypothetical order. A real IB WhatIf margin check is planned for v2.

What ships with it: 30 files

57.4 KB alongside SKILL.md, 26 of them executable

ib_analyst/

scripts/

Keep looking

Skills are one crate of 326,984. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.