Install
$ agentstack add skill-luyangkk-ib-suite-ib-options-overview ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
ib-options-overview
Read every open option position and return one JSON risk overview. This connects with readonly=True and never places, modifies, or cancels orders.
By default it runs in free mode (options.fetch_market_data: false): it reads only IB-computed portfolio fields (position, price, market value, unrealized P&L) and requests no market data, so it never risks IBKR snapshot charges. Greeks, IV, underlying price, and moneyness are unavailable in this mode.
To collect Greeks/IV, set options.fetch_market_data: true in config.yaml. The skill then briefly subscribes for model Greeks, requests one deduplicated underlying quote when option model data lacks an underlying price, and cancels both subscriptions afterward. This may incur IBKR snapshot charges for symbols without a real-time market-data subscription.
{baseDir}/../.venv/bin/python {baseDir}/scripts/options_overview.py --config .ib-suite/config.yaml
The JSON lists each contract's underlying, Call/Put, long/short side, strike, expiry, inclusive calendar DTE, quantity, cost, price, market value, unrealized P&L, IV, Delta, Gamma, Theta, Vega, and ITM/ATM/OTM state. summary includes aggregate Greeks, daily time-value decay, expiry distribution, and absolute market-value underlying concentration.
Present the result in the language of the user's current request. Start with a position-detail Markdown table, then a moneyness Markdown table, and only then the account overview, principal risk observations, and data limitations.
The position-detail table must contain these columns in order: underlying_symbol, right, expiry_date, days_to_expiry, strike, quantity, market_value, and unrealized_pnl. Localize the table title, headings, Call/Put labels, and surrounding prose; keep ticker symbols, dates, DTE values, currency values, and ITM/ATM/OTM/UNKNOWN unchanged. Sort rows by expiry_date, then underlying_symbol, then strike, all ascending. Render strikes compactly without unnecessary trailing zeros. Render market value and unrealized P&L to two decimal places with an explicit plus sign for positive values. Bold the unrealized_pnl cells for the two largest available losses (the two most negative values); if fewer than two losses exist, bold only those, and never bold zero or profitable values.
In the second table, group positions by moneyness in this order: ITM, ATM, OTM, and UNKNOWN, including empty groups. Within each group, sort by underlying_symbol, then expiry_date, then strike. For a classified position with an underlying price, show the underlying price and the in/out-of- the-money distance as the absolute difference between underlying_price and strike. You may combine strikes only when symbol, right, expiry, and moneyness are identical. Put positions with null moneyness in UNKNOWN and explain their matching data_limitations after the tables.
Delayed data is accepted. Unavailable price, underlying price, IV, or Greek fields remain null and are explained in data_limitations; no unavailable market data is fabricated as zero.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: luyangkk
- Source: luyangkk/ib-suite
- License: MIT
- Homepage: https://github.com/luyangkk/ib-suite
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.