@huskly/ibkr-client 0.5.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -51
- package/dist/ibkr/ibkrApiTypes.d.ts +74 -0
- package/dist/ibkr/ibkrApiTypes.d.ts.map +1 -1
- package/dist/ibkr/ibkrClient.d.ts +23 -2
- package/dist/ibkr/ibkrClient.d.ts.map +1 -1
- package/dist/ibkr/ibkrClient.js +347 -5
- package/dist/ibkr/ibkrClient.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +67 -9
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -6
- package/dist/types.js.map +1 -1
- package/package.json +4 -10
- package/dist/cli/account.d.ts +0 -7
- package/dist/cli/account.d.ts.map +0 -1
- package/dist/cli/account.js +0 -27
- package/dist/cli/account.js.map +0 -1
- package/dist/cli/index.d.ts +0 -3
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js +0 -50
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/orders.d.ts +0 -4
- package/dist/cli/orders.d.ts.map +0 -1
- package/dist/cli/orders.js +0 -5
- package/dist/cli/orders.js.map +0 -1
- package/dist/cli/positions.d.ts +0 -12
- package/dist/cli/positions.d.ts.map +0 -1
- package/dist/cli/positions.js +0 -106
- package/dist/cli/positions.js.map +0 -1
- package/dist/cli/quote.d.ts +0 -4
- package/dist/cli/quote.d.ts.map +0 -1
- package/dist/cli/quote.js +0 -5
- package/dist/cli/quote.js.map +0 -1
- package/dist/cli/shared.d.ts +0 -12
- package/dist/cli/shared.d.ts.map +0 -1
- package/dist/cli/shared.js +0 -31
- package/dist/cli/shared.js.map +0 -1
- package/dist/format.d.ts +0 -13
- package/dist/format.d.ts.map +0 -1
- package/dist/format.js +0 -32
- package/dist/format.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
# IBKR
|
|
1
|
+
# IBKR Client (`@huskly/ibkr-client`)
|
|
2
2
|
|
|
3
|
-
A
|
|
4
|
-
over **OAuth 1.0a**
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
A reusable TypeScript client for the **Interactive Brokers Web API**,
|
|
4
|
+
authenticating over **OAuth 1.0a** without the Client Portal Gateway. This
|
|
5
|
+
package contains no command-line interface; terminal commands and presentation
|
|
6
|
+
belong exclusively in
|
|
7
|
+
[huskly-cli](https://github.com/felipecsl/huskly-cli).
|
|
7
8
|
|
|
8
9
|
The OAuth 1.0a live-session-token handshake is performed by the
|
|
9
10
|
[`ibkr-client`](https://github.com/art1c0/ibkr-client) package. See the
|
|
@@ -12,17 +13,15 @@ the keys below are generated and registered in the IBKR self-service portal.
|
|
|
12
13
|
|
|
13
14
|
## Layout
|
|
14
15
|
|
|
15
|
-
The
|
|
16
|
-
huskly-cli's `@huskly/schwab-client` + CLI split:
|
|
16
|
+
The repository contains only the reusable client library:
|
|
17
17
|
|
|
18
18
|
| Path | Purpose |
|
|
19
19
|
| ------------------------ | ------------------------------------------------------------------------ |
|
|
20
|
-
| `src/types.ts` | Broker-neutral `BrokerClient` interface
|
|
20
|
+
| `src/types.ts` | Broker-neutral `BrokerClient` interface and normalized domain types |
|
|
21
21
|
| `src/ibkr/ibkrClient.ts` | `IbkrClient` — typed wrapper over `ibkr-client` implementing `BrokerClient` |
|
|
22
22
|
| `src/ibkr/oauthConfig.ts`| Builds the OAuth config from `.pem` files + env vars |
|
|
23
23
|
| `src/ibkr/dhPrime.ts` | Extracts the DH prime (hex) from `dhparam.pem` |
|
|
24
24
|
| `src/ibkr/optionContract.ts` | Canonical OSI parsing and formatting for IBKR option contracts |
|
|
25
|
-
| `src/cli/` | `commander` program, `--broker` flag, and command handlers |
|
|
26
25
|
|
|
27
26
|
The `*.pem` files (`private_signature.pem`, `private_encryption.pem`,
|
|
28
27
|
`dhparam.pem`, plus the public keys) are the cryptographic material from the
|
|
@@ -31,7 +30,7 @@ wiki setup step and are git-ignored.
|
|
|
31
30
|
## Setup
|
|
32
31
|
|
|
33
32
|
```bash
|
|
34
|
-
|
|
33
|
+
yarn install --frozen-lockfile
|
|
35
34
|
```
|
|
36
35
|
|
|
37
36
|
Provide the account-specific secrets, either by copying the template:
|
|
@@ -56,51 +55,29 @@ Optional environment variables:
|
|
|
56
55
|
- `IBKR_KEYS_DIR` — directory holding the `.pem` files (defaults to the current
|
|
57
56
|
working directory).
|
|
58
57
|
- `IBKR_ACCOUNT_ID` — target a specific account (otherwise the first is used).
|
|
58
|
+
- `IBKR_TRANSACTION_CURRENCY` — transaction-query currency (defaults to `USD`).
|
|
59
59
|
|
|
60
|
-
##
|
|
60
|
+
## Library API
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
`IbkrClient` owns IBKR authentication, requests, raw response types, and
|
|
63
|
+
normalization. Consumers such as huskly-cli provide presentation, command
|
|
64
|
+
routing, and caching. Its broker-neutral account API includes:
|
|
63
65
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
npm run dev -- positions --csv # CSV instead of a table
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
Or build and use the `ibkr-cli` binary:
|
|
73
|
-
|
|
74
|
-
```bash
|
|
75
|
-
npm run build
|
|
76
|
-
node dist/cli/index.js account
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
A global `--broker <ibkr|schwab>` flag (default `ibkr`) selects the broker.
|
|
80
|
-
Only IBKR is implemented today; `schwab` is reserved for the huskly-cli merge.
|
|
81
|
-
|
|
82
|
-
Example output:
|
|
83
|
-
|
|
84
|
-
```
|
|
85
|
-
💰 Account Summary
|
|
86
|
-
|
|
87
|
-
Authenticated: yes Competing: no
|
|
88
|
-
Account: U********
|
|
89
|
-
──────────────────────────────────────────────────
|
|
90
|
-
Net Liquidation: $123,456.78
|
|
91
|
-
Available Funds: $...
|
|
92
|
-
...
|
|
93
|
-
```
|
|
66
|
+
- `getAccountBalances()` and `getPositions()` for account state.
|
|
67
|
+
- `getQuotes()` and `searchInstruments()` for equity/ETF discovery and quotes.
|
|
68
|
+
- `fetchTransactionHistory()` for normalized portfolio transactions.
|
|
69
|
+
- `fetchOrders()` for normalized live orders, including aggregate `WORKING`
|
|
70
|
+
matching across IBKR's active order states.
|
|
94
71
|
|
|
95
|
-
|
|
72
|
+
### Strategy market data
|
|
96
73
|
|
|
97
74
|
The reusable `IbkrClient` also exposes typed, read-only strategy data:
|
|
98
75
|
|
|
99
76
|
- `getPriceHistory(...)` returns normalized OHLCV bars.
|
|
100
77
|
- `getOptionExpiries(...)` discovers weekly and monthly maturities across month buckets.
|
|
101
78
|
- `getOptionChain(...)` returns an exact-expiry chain with canonical OSI symbols, conids,
|
|
102
|
-
bid/ask/mid prices, and
|
|
103
|
-
- `getOptionQuote(...)` resolves and prices one exact contract.
|
|
79
|
+
bid/ask/mid prices, delta, session volume, and open interest.
|
|
80
|
+
- `getOptionQuote(...)` resolves and prices one exact contract with the same market-data shape.
|
|
104
81
|
- `getOptionContract(conid)` maps a broker conid back to durable OSI identity.
|
|
105
82
|
|
|
106
83
|
Contract discovery always calls `secdef/search` before `secdef/strikes`, because IBKR keeps
|
|
@@ -111,6 +88,8 @@ applies bounded batching for secondary-definition and market-data calls, and ret
|
|
|
111
88
|
requests on transient `429` responses with capped exponential backoff (including `Retry-After`
|
|
112
89
|
headers when available). If every returned contract is unusable (missing bid/ask/delta), the
|
|
113
90
|
client now fails noisily so callers can handle that condition explicitly.
|
|
91
|
+
Option volume and open interest are required nullable fields: numeric zero remains zero, while
|
|
92
|
+
missing, unsupported, or non-finite provider values are returned as `null`.
|
|
114
93
|
Conids are broker-boundary identifiers; consumers should persist the returned OSI `symbol`.
|
|
115
94
|
|
|
116
95
|
### Authorized read-only smoke test
|
|
@@ -150,12 +129,12 @@ NODE
|
|
|
150
129
|
## Development
|
|
151
130
|
|
|
152
131
|
```bash
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
132
|
+
yarn lint # eslint
|
|
133
|
+
yarn format # prettier --write
|
|
134
|
+
yarn typecheck # tsc --noEmit
|
|
135
|
+
yarn test # typecheck + native node:test suite
|
|
136
|
+
yarn build # tsc -> dist/
|
|
137
|
+
yarn run check # lint + format:check + typecheck
|
|
159
138
|
```
|
|
160
139
|
|
|
161
140
|
CI (`.github/workflows/ci.yml`) runs lint, format check, typecheck, tests, and build on
|
|
@@ -51,6 +51,80 @@ export interface IbkrStockListing {
|
|
|
51
51
|
}
|
|
52
52
|
/** `trsrv/stocks` response: keyed by the requested symbol. */
|
|
53
53
|
export type IbkrStocksResponse = Record<string, IbkrStockListing[] | undefined>;
|
|
54
|
+
export interface IbkrTransactionsResponse {
|
|
55
|
+
currency?: string;
|
|
56
|
+
from?: number;
|
|
57
|
+
to?: number;
|
|
58
|
+
includesRealTime?: boolean;
|
|
59
|
+
transactions?: IbkrTransaction[];
|
|
60
|
+
}
|
|
61
|
+
export interface IbkrTransaction {
|
|
62
|
+
date?: string;
|
|
63
|
+
rawDate?: string;
|
|
64
|
+
cur?: string;
|
|
65
|
+
fxRate?: number;
|
|
66
|
+
pr?: number;
|
|
67
|
+
qty?: number;
|
|
68
|
+
acctid?: string;
|
|
69
|
+
amt?: number;
|
|
70
|
+
conid?: number;
|
|
71
|
+
type?: string;
|
|
72
|
+
desc?: string;
|
|
73
|
+
}
|
|
74
|
+
export interface IbkrLiveOrdersResponse {
|
|
75
|
+
orders?: IbkrLiveOrder[];
|
|
76
|
+
snapshot?: boolean;
|
|
77
|
+
}
|
|
78
|
+
export interface IbkrBrokerageAccountsResponse {
|
|
79
|
+
accounts?: string[];
|
|
80
|
+
selectedAccount?: string;
|
|
81
|
+
}
|
|
82
|
+
export interface IbkrSwitchAccountResponse {
|
|
83
|
+
set?: boolean;
|
|
84
|
+
acctId?: string;
|
|
85
|
+
}
|
|
86
|
+
export interface IbkrLiveOrder {
|
|
87
|
+
account?: string;
|
|
88
|
+
acct?: string;
|
|
89
|
+
orderId?: number | string;
|
|
90
|
+
order_id?: number | string;
|
|
91
|
+
conid?: number;
|
|
92
|
+
ticker?: string;
|
|
93
|
+
symbol?: string;
|
|
94
|
+
description1?: string;
|
|
95
|
+
contractDescription1?: string;
|
|
96
|
+
contract_description_1?: string;
|
|
97
|
+
side?: string;
|
|
98
|
+
orderType?: string;
|
|
99
|
+
order_type?: string;
|
|
100
|
+
orderStatus?: string;
|
|
101
|
+
order_status?: string;
|
|
102
|
+
status?: string;
|
|
103
|
+
totalSize?: string | number;
|
|
104
|
+
total_size?: string | number;
|
|
105
|
+
size?: string | number;
|
|
106
|
+
cumFill?: string | number;
|
|
107
|
+
cum_fill?: string | number;
|
|
108
|
+
filledQuantity?: string | number;
|
|
109
|
+
remainingQuantity?: string | number;
|
|
110
|
+
sizeAndFills?: string;
|
|
111
|
+
size_and_fills?: string;
|
|
112
|
+
avgPrice?: string | number;
|
|
113
|
+
averagePrice?: string | number;
|
|
114
|
+
average_price?: string | number;
|
|
115
|
+
price?: string | number;
|
|
116
|
+
limitPrice?: string | number;
|
|
117
|
+
stopPrice?: string | number;
|
|
118
|
+
orderDescription?: string;
|
|
119
|
+
order_description?: string;
|
|
120
|
+
orderDesc?: string;
|
|
121
|
+
orderDescriptionWithContract?: string;
|
|
122
|
+
order_description_with_contract?: string;
|
|
123
|
+
lastExecutionTime?: string;
|
|
124
|
+
lastExecutionTime_r?: number;
|
|
125
|
+
orderTime?: string;
|
|
126
|
+
order_time?: string;
|
|
127
|
+
}
|
|
54
128
|
/** One OHLCV bar from `iserver/marketdata/history`. */
|
|
55
129
|
export interface IbkrMarketDataHistoryBar {
|
|
56
130
|
o?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ibkrApiTypes.d.ts","sourceRoot":"","sources":["../../src/ibkr/ibkrApiTypes.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ibkrApiTypes.d.ts","sourceRoot":"","sources":["../../src/ibkr/ibkrApiTypes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { IbkrOauth1Config } from "./oauthConfig.js";
|
|
2
|
-
import type { AccountBalances, AuthStatus, BrokerClient, BrokerPosition, BrokerQuote, OptionContract, OptionMarketQuote, OptionQuoteRequest, OptionRight, PriceHistoryBar, PriceHistoryRequest } from "../types.js";
|
|
2
|
+
import type { AccountBalances, AuthStatus, BrokerAccountOrders, BrokerClient, BrokerInstrument, BrokerInstrumentSearchProjection, BrokerOrdersOptions, BrokerPosition, BrokerQuote, BrokerTransactionHistory, OptionContract, OptionMarketQuote, OptionQuoteRequest, OptionRight, PriceHistoryBar, PriceHistoryRequest } from "../types.js";
|
|
3
3
|
/**
|
|
4
4
|
* Typed IBKR Web API client implementing the broker-neutral {@link BrokerClient}.
|
|
5
5
|
* Wraps the `ibkr-client` npm package, which performs the OAuth 1.0a
|
|
@@ -25,7 +25,10 @@ export declare class IbkrClient implements BrokerClient {
|
|
|
25
25
|
private normalizePosition;
|
|
26
26
|
getQuotes(symbols: string[]): Promise<Record<string, BrokerQuote>>;
|
|
27
27
|
/** Resolve equity/ETF symbols to IBKR contracts via `trsrv/stocks`. */
|
|
28
|
-
|
|
28
|
+
searchInstruments(symbol: string, projection?: BrokerInstrumentSearchProjection): Promise<BrokerInstrument[]>;
|
|
29
|
+
fetchTransactionHistory(startDate: Date, endDate: Date): Promise<BrokerTransactionHistory[]>;
|
|
30
|
+
fetchOrders(options: BrokerOrdersOptions): Promise<BrokerAccountOrders[]>;
|
|
31
|
+
private prepareBrokerageAccount;
|
|
29
32
|
private normalizeStockListing;
|
|
30
33
|
private normalizeStockContract;
|
|
31
34
|
private resolveQuoteContract;
|
|
@@ -45,6 +48,24 @@ export declare class IbkrClient implements BrokerClient {
|
|
|
45
48
|
private fetchOptionQuotes;
|
|
46
49
|
private historyDays;
|
|
47
50
|
private fetchQuoteHistory;
|
|
51
|
+
private normalizeTransaction;
|
|
52
|
+
private normalizeOrder;
|
|
53
|
+
private normalizeOrderLeg;
|
|
54
|
+
private normalizeOrderStatus;
|
|
55
|
+
private normalizeOrderType;
|
|
56
|
+
private normalizeOrderSide;
|
|
57
|
+
private ibkrStatusFilter;
|
|
58
|
+
private orderMatchesStatus;
|
|
59
|
+
private orderBelongsToAccount;
|
|
60
|
+
private orderInDateRange;
|
|
61
|
+
private orderTimeMs;
|
|
62
|
+
private parseOrderTime;
|
|
63
|
+
private firstNumber;
|
|
64
|
+
private firstPositiveNumber;
|
|
65
|
+
private quantityFromDescription;
|
|
66
|
+
private filledQuantityFromSizeAndFills;
|
|
67
|
+
private parseTransactionTime;
|
|
68
|
+
private transactionKey;
|
|
48
69
|
/** Overridable in request-level tests so snapshot warm-up does not sleep. */
|
|
49
70
|
protected wait(ms: number): Promise<void>;
|
|
50
71
|
private normalizeQuote;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ibkrClient.d.ts","sourceRoot":"","sources":["../../src/ibkr/ibkrClient.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EACV,eAAe,EACf,UAAU,EACV,YAAY,
|
|
1
|
+
{"version":3,"file":"ibkrClient.d.ts","sourceRoot":"","sources":["../../src/ibkr/ibkrClient.ts"],"names":[],"mappings":"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"}
|