IB@stoqey/ib
@stoqey/ibkr (High-Level Wrapper)Accounts & Portfolios

Accounts & Portfolio Positions

Accessing automatically updated account summaries and portfolio position caches in @stoqey/ibkr.

Managing Account Summaries (AccountSummary)

AccountSummary.Instance automatically maintains cached account values (Net Liquidation Value, Total Cash Value, Buying Power, Margin Requirements) so you never need to manually manage subscription streams.

Accessing Account Balances

import ibkr, { AccountSummary } from "@stoqey/ibkr";

await ibkr();

const accountInstance = AccountSummary.Instance;

// Access cached account summary snapshot
const summary = accountInstance.accountSummary;

console.log("Account ID:", summary.accountId);
console.log("Net Liquidation Value:", summary.NetLiquidation.value, summary.NetLiquidation.currency);
console.log("Total Cash Value:", summary.TotalCashValue.value);
console.log("Buying Power:", summary.BuyingPower.value);

Listening for Account Updates

import { IBKREvents, IBKREVENTS, AccountSummary } from "@stoqey/ibkr";

IBKREvents.Instance.on(IBKREVENTS.IBKR_ACCOUNT_UPDATED, () => {
  const latestNetLiquidation = AccountSummary.Instance.accountSummary.NetLiquidation.value;
  console.log("Updated Net Liquidation Value:", latestNetLiquidation);
});

Managing Portfolio Positions (Portfolios)

Portfolios.Instance automatically tracks all open positions across managed accounts.

Accessing Open Positions Snapshot

import ibkr, { Portfolios } from "@stoqey/ibkr";

await ibkr();

const portfolios = Portfolios.Instance;

// Get snapshot of current open positions
const openPositions = portfolios.positions;

openPositions.forEach((pos) => {
  console.log(`Account: ${pos.account} | ${pos.position} x ${pos.symbol} @ $${pos.marketPrice}`);
});

Listening for Position Updates

import { IBKREvents, IBKREVENTS, Portfolios } from "@stoqey/ibkr";

IBKREvents.Instance.on(IBKREVENTS.IBKR_POSITIONS_UPDATED, () => {
  const updatedPositions = Portfolios.Instance.positions;
  console.log("Portfolio updated! Total positions:", updatedPositions.length);
});

On this page