IBKR Chokepoint Equity Scan Skill
Use this when the user asks for aerospace, semiconductor, defense, AI infrastructure, or other industrial-chain equities and explicitly wants IBKR API price/contract evidence. It produces research candidates, not orders, and must not place trades.
When to Use
Use when the request includes one or more of:
- IBKR / TWS / Gateway / port 4002 / Interactive Brokers.
- 航天产业链, 半导体产业链, 上下游个股, 卡脖子, chokepoint.
- 买点, 止损, 止盈, 长拿理由.
- Qualification cycle, TAM, monopoly, functional exclusivity, value-chain climb.
- 需求浪反推, 架构性卡脖子, 龙头和买入逻辑, 越早市值越小越好, 不能被设计掉, material revenue.
- 第一行只给龙头, 全球股, 全球产业链, 排除大陆A股, 非A股龙头.
Do not use for live order execution. If the user asks to place orders, switch to an order-entry workflow and require explicit side/size/account confirmation.
Prerequisites
- IBKR TWS or IB Gateway running locally.
- Default API port:
127.0.0.1:4002.
- API read access enabled in TWS/Gateway.
terminal tool available.
- No Python package dependency required; use the raw IBKR socket helper if
ibapi / ib_insync is absent.
How to Run
First prove IBKR is reachable:
python3 - <<'PY'
import socket
s=socket.socket(); s.settimeout(2)
s.connect(('127.0.0.1',4002))
print('IBKR_PORT_OK 127.0.0.1:4002')
s.close()
PY
Then run the helper from this skill directory:
python3 ~/.hermes/skills/finance/ibkr-chokepoint-equity-scan/scripts/ibkr_chokepoint_scan.py ASTS RKLB RDW AEHR ACMR ICHR SKYT CAMT FORM VECO
The helper uses:
- handshake with TWS API server.
reqMatchingSymbols opcode 81 for contract discovery.
reqMarketDataType opcode 59, type 3 for delayed data fallback.
reqMktData opcode 1, version 11 for quotes.
Quick Reference
Use Feishu-safe output. Avoid wide Markdown tables for the main answer because they often render like broken text in chat.
Required fields per candidate:
- rank and ticker
- IBKR price, conId, exchange, delayed/live flag
- demand wave and architecture bottleneck
- chain position
- chokepoint reason
- why it cannot be designed away
- material revenue path and qualification-cycle evidence
- supply elasticity, market recognition, catalyst, and main risks
- buy zone
- stop
- take-profit or long-hold thesis
- thesis-break condition
First-line output contract:
- The first line of the answer must contain only the leader ticker/name list, with no explanation.
- For global-stock or global industrial-chain requests, the default leader list excludes mainland China A-shares. Include A-shares only when the user explicitly asks for A股/大陆A股/A-share coverage.
- After that first line, explain the ranking, evidence, buy logic, and rejects.
Chokepoint Research Mandate
When the user asks for industrial-chain leaders, AI-era suppliers, 龙头, 买入逻辑, or 卡脖子, use this ranking model:
excess return =
demand shock
× insufficient supply elasticity
× low market recognition
× catalyst
- valuation / liquidity / dilution / geopolitical risk
Start from the demand wave and reverse-map the system architecture before naming stocks. Prefer bottlenecks that sit earlier in the value chain, are smaller in market cap, and can climb from component/material supplier into higher-value qualified modules or systems.
Hard filter:
- The chokepoint must not be easily designed away by architecture, second-source qualification, software workaround, or customer vertical integration.
- The company must be able to convert the bottleneck into material revenue, not just small proof-of-concept revenue or narrative exposure.
Do not overweight current-quarter financials when the thesis is qualification-cycle driven. Instead, look for customer qualification, platform inclusion, tool/process qualification, flight heritage, fab/tool OEM approval, design wins, long-term capacity agreements, and timing from qualification to volume revenue.
Output Format
Default to compact candidate cards, not Markdown tables:
#1 SKYT | SkyWater
IBKR: 37.76 delayed | conId 482880559 | ISLAND
位置: 半导体上游 / trusted foundry / 特殊工艺
卡点: 国防+特殊工艺资格认证;替换成本高
买点: 34.7 / 32.1
止损: 29.5
止盈: 47.2 / 58.5
长拿: 若国防/先进封装订单持续兑现,可留核心仓
破局: 资格丢失、订单不转收入、持续稀释
If a dense overview is needed, use a monospace aligned code block:
Ticker Px Buy1 Buy2 Stop TP1 TP2 Grade
SKYT 37.76 34.7 32.1 29.5 47.2 58.5 A
AEHR 110.95 102.1 94.3 86.5 138.7 172.0 A
RDW 26.43 24.3 22.5 20.6 33.0 41.0 A-
Only use Markdown tables when the target channel is known to render them correctly.
Procedure
Parse scope.
- If market is unspecified, default to IBKR-accessible US/global listings outside mainland China A-shares.
- If the user says global stocks or 全球股, exclude mainland China A-shares unless A-shares are explicitly requested.
- If user names A/H/US, constrain candidates to that market.
Build candidate universe from demand waves, not from popularity lists.
- First write the demand wave in one line, then list the architecture bottlenecks it creates.
- Aerospace examples: LEO communications, satellite buses, launch, space components, ISR/geospatial data, rugged defense electronics.
- Semiconductor examples: HBM/advanced packaging, probe cards, wafer-level burn-in, wet clean, metrology/inspection, laser anneal, MOCVD, test handlers.
- AI infrastructure examples: liquid cooling CDUs, cold plates, quick disconnects, rack manifolds, power shelves, busbars, high-current connectors, FFKM/EPDM seals, high-purity elastomers, optics/interconnect test.
Apply the chokepoint filter.
- Pass only if the function cannot be easily designed away.
- Pass only if the company can turn the bottleneck into material revenue.
- Prefer qualification-cycle moats: defense, foundry, tool qualification, aerospace flight heritage, customer requalification cost.
- Prefer smaller/earlier companies only after the bottleneck passes.
- Reject popular leaders if the bottleneck is already fully understood, commoditizing, or too small inside a conglomerate to move revenue.
Query IBKR.
- Use
reqMatchingSymbols to prove the ticker maps to a real IBKR contract.
- Pick exact
STK + requested currency/market.
- Use delayed quotes if live market data is not subscribed.
- Label delayed data explicitly when IBKR returns code
10167.
Derive buy points mechanically unless user gives a chart model.
- Starter pullback: current price *
0.92.
- Add zone: current price *
0.85.
- Invalidation stop: current price *
0.78.
- First take-profit: current price *
1.25.
- Second take-profit: current price *
1.55.
- For very volatile pre-profit names, widen stop only if position size shrinks.
Long-hold exception.
- Only allow no-stop / long-hold framing when the thesis is qualification-cycle driven and the user accepts drawdown.
- Name the break condition anyway: loss of qualification, design-out evidence, canceled platform, dilution spiral, or material revenue not appearing after stated cycle window.
Output compactly.
- First line: only the leader ticker/name list.
- Rank candidates.
- Use candidate cards as the default user-facing shape.
- Use one monospace aligned overview block only when comparing many tickers.
- Avoid wide Markdown tables in Feishu/chat surfaces unless the user explicitly asks.
- Include IBKR price/evidence block.
- Include rejects/observations.
- State no order was placed.
Pitfalls
- Do not answer from memory when IBKR was required; at minimum prove port, contract, and price source.
- Do not treat market-data subscription errors as fatal if delayed data is available.
- Do not confuse a good product with a chokepoint; alternatives matter.
- Do not call something material revenue unless revenue path can plausibly scale with the bottleneck.
- Do not overfit to current financials when user asks for qualification cycle / forward TAM.
- Do not recommend no-stop long holds for binary execution names without naming thesis-break conditions.
Verification
Before finalizing:
- IBKR port check passed or blocker stated.
- Each recommended ticker has IBKR contract evidence.
- Each price is labeled live or delayed.
- Each buy plan has entry + stop + take-profit, or a no-stop long-hold thesis and break conditions.
- Candidate output uses Feishu-safe cards or monospace aligned code blocks, not wide Markdown tables.
- Rejected candidates are separated from buy candidates.
- No trades/orders were placed.
1---2name: ibkr-chokepoint-equity-scan3description: Screen demand-wave chokepoint equities through IBKR API. Use for global non-mainland-A-share industrial-chain leaders, early/smaller bottleneck suppliers, qualification-cycle moats, forward TAM, buy logic, and prompts such as 卡脖子, 龙头, 需求浪反推, 第一行只给龙头, 不能被设计掉, or material revenue.4license: MIT5---67# IBKR Chokepoint Equity Scan Skill89Use this when the user asks for aerospace, semiconductor, defense, AI infrastructure, or other industrial-chain equities and explicitly wants IBKR API price/contract evidence. It produces research candidates, not orders, and must not place trades.1011## When to Use1213Use when the request includes one or more of:14- IBKR / TWS / Gateway / port 4002 / Interactive Brokers.15- 航天产业链, 半导体产业链, 上下游个股, 卡脖子, chokepoint.16- 买点, 止损, 止盈, 长拿理由.17- Qualification cycle, TAM, monopoly, functional exclusivity, value-chain climb.18- 需求浪反推, 架构性卡脖子, 龙头和买入逻辑, 越早市值越小越好, 不能被设计掉, material revenue.19- 第一行只给龙头, 全球股, 全球产业链, 排除大陆A股, 非A股龙头.2021Do not use for live order execution. If the user asks to place orders, switch to an order-entry workflow and require explicit side/size/account confirmation.2223## Prerequisites2425- IBKR TWS or IB Gateway running locally.26- Default API port: `127.0.0.1:4002`.27- API read access enabled in TWS/Gateway.28- `terminal` tool available.29- No Python package dependency required; use the raw IBKR socket helper if `ibapi` / `ib_insync` is absent.3031## How to Run3233First prove IBKR is reachable:3435```bash36python3 - <<'PY'37import socket38s=socket.socket(); s.settimeout(2)39s.connect(('127.0.0.1',4002))40print('IBKR_PORT_OK 127.0.0.1:4002')41s.close()42PY43```4445Then run the helper from this skill directory:4647```bash48python3 ~/.hermes/skills/finance/ibkr-chokepoint-equity-scan/scripts/ibkr_chokepoint_scan.py ASTS RKLB RDW AEHR ACMR ICHR SKYT CAMT FORM VECO49```5051The helper uses:52- handshake with TWS API server.53- `reqMatchingSymbols` opcode `81` for contract discovery.54- `reqMarketDataType` opcode `59`, type `3` for delayed data fallback.55- `reqMktData` opcode `1`, version `11` for quotes.5657## Quick Reference5859Use Feishu-safe output. Avoid wide Markdown tables for the main answer because they often render like broken text in chat.6061Required fields per candidate:62- rank and ticker63- IBKR price, conId, exchange, delayed/live flag64- demand wave and architecture bottleneck65- chain position66- chokepoint reason67- why it cannot be designed away68- material revenue path and qualification-cycle evidence69- supply elasticity, market recognition, catalyst, and main risks70- buy zone71- stop72- take-profit or long-hold thesis73- thesis-break condition7475First-line output contract:76- The first line of the answer must contain only the leader ticker/name list, with no explanation.77- For global-stock or global industrial-chain requests, the default leader list excludes mainland China A-shares. Include A-shares only when the user explicitly asks for A股/大陆A股/A-share coverage.78- After that first line, explain the ranking, evidence, buy logic, and rejects.7980## Chokepoint Research Mandate8182When the user asks for industrial-chain leaders, AI-era suppliers, 龙头, 买入逻辑, or 卡脖子, use this ranking model:8384```text85excess return =86 demand shock87 × insufficient supply elasticity88 × low market recognition89 × catalyst90 - valuation / liquidity / dilution / geopolitical risk91```9293Start from the demand wave and reverse-map the system architecture before naming stocks. Prefer bottlenecks that sit earlier in the value chain, are smaller in market cap, and can climb from component/material supplier into higher-value qualified modules or systems.9495Hard filter:96- The chokepoint must not be easily designed away by architecture, second-source qualification, software workaround, or customer vertical integration.97- The company must be able to convert the bottleneck into material revenue, not just small proof-of-concept revenue or narrative exposure.9899Do not overweight current-quarter financials when the thesis is qualification-cycle driven. Instead, look for customer qualification, platform inclusion, tool/process qualification, flight heritage, fab/tool OEM approval, design wins, long-term capacity agreements, and timing from qualification to volume revenue.100101## Output Format102103Default to compact candidate cards, not Markdown tables:104105```text106#1 SKYT | SkyWater107IBKR: 37.76 delayed | conId 482880559 | ISLAND108位置: 半导体上游 / trusted foundry / 特殊工艺109卡点: 国防+特殊工艺资格认证;替换成本高110买点: 34.7 / 32.1111止损: 29.5112止盈: 47.2 / 58.5113长拿: 若国防/先进封装订单持续兑现,可留核心仓114破局: 资格丢失、订单不转收入、持续稀释115```116117If a dense overview is needed, use a monospace aligned code block:118119```text120Ticker Px Buy1 Buy2 Stop TP1 TP2 Grade121SKYT 37.76 34.7 32.1 29.5 47.2 58.5 A122AEHR 110.95 102.1 94.3 86.5 138.7 172.0 A123RDW 26.43 24.3 22.5 20.6 33.0 41.0 A-124```125126Only use Markdown tables when the target channel is known to render them correctly.127128## Procedure1291301. Parse scope.131 - If market is unspecified, default to IBKR-accessible US/global listings outside mainland China A-shares.132 - If the user says global stocks or 全球股, exclude mainland China A-shares unless A-shares are explicitly requested.133 - If user names A/H/US, constrain candidates to that market.1341352. Build candidate universe from demand waves, not from popularity lists.136 - First write the demand wave in one line, then list the architecture bottlenecks it creates.137 - Aerospace examples: LEO communications, satellite buses, launch, space components, ISR/geospatial data, rugged defense electronics.138 - Semiconductor examples: HBM/advanced packaging, probe cards, wafer-level burn-in, wet clean, metrology/inspection, laser anneal, MOCVD, test handlers.139 - AI infrastructure examples: liquid cooling CDUs, cold plates, quick disconnects, rack manifolds, power shelves, busbars, high-current connectors, FFKM/EPDM seals, high-purity elastomers, optics/interconnect test.1401413. Apply the chokepoint filter.142 - Pass only if the function cannot be easily designed away.143 - Pass only if the company can turn the bottleneck into material revenue.144 - Prefer qualification-cycle moats: defense, foundry, tool qualification, aerospace flight heritage, customer requalification cost.145 - Prefer smaller/earlier companies only after the bottleneck passes.146 - Reject popular leaders if the bottleneck is already fully understood, commoditizing, or too small inside a conglomerate to move revenue.1471484. Query IBKR.149 - Use `reqMatchingSymbols` to prove the ticker maps to a real IBKR contract.150 - Pick exact `STK` + requested currency/market.151 - Use delayed quotes if live market data is not subscribed.152 - Label delayed data explicitly when IBKR returns code `10167`.1531545. Derive buy points mechanically unless user gives a chart model.155 - Starter pullback: current price * `0.92`.156 - Add zone: current price * `0.85`.157 - Invalidation stop: current price * `0.78`.158 - First take-profit: current price * `1.25`.159 - Second take-profit: current price * `1.55`.160 - For very volatile pre-profit names, widen stop only if position size shrinks.1611626. Long-hold exception.163 - Only allow no-stop / long-hold framing when the thesis is qualification-cycle driven and the user accepts drawdown.164 - Name the break condition anyway: loss of qualification, design-out evidence, canceled platform, dilution spiral, or material revenue not appearing after stated cycle window.1651667. Output compactly.167 - First line: only the leader ticker/name list.168 - Rank candidates.169 - Use candidate cards as the default user-facing shape.170 - Use one monospace aligned overview block only when comparing many tickers.171 - Avoid wide Markdown tables in Feishu/chat surfaces unless the user explicitly asks.172 - Include IBKR price/evidence block.173 - Include rejects/observations.174 - State no order was placed.175176## Pitfalls177178- Do not answer from memory when IBKR was required; at minimum prove port, contract, and price source.179- Do not treat market-data subscription errors as fatal if delayed data is available.180- Do not confuse a good product with a chokepoint; alternatives matter.181- Do not call something material revenue unless revenue path can plausibly scale with the bottleneck.182- Do not overfit to current financials when user asks for qualification cycle / forward TAM.183- Do not recommend no-stop long holds for binary execution names without naming thesis-break conditions.184185## Verification186187Before finalizing:188- IBKR port check passed or blocker stated.189- Each recommended ticker has IBKR contract evidence.190- Each price is labeled live or delayed.191- Each buy plan has entry + stop + take-profit, or a no-stop long-hold thesis and break conditions.192- Candidate output uses Feishu-safe cards or monospace aligned code blocks, not wide Markdown tables.193- Rejected candidates are separated from buy candidates.194- No trades/orders were placed.