@stocksharp/trading-controls 1.1.1 → 1.3.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.
Files changed (77) hide show
  1. package/README.md +95 -16
  2. package/dist/esm/active-orders-widget.js +38 -25
  3. package/dist/esm/active-orders-widget.js.map +1 -1
  4. package/dist/esm/black-scholes.js +147 -0
  5. package/dist/esm/black-scholes.js.map +1 -0
  6. package/dist/esm/control-types.js +4 -0
  7. package/dist/esm/control-types.js.map +1 -1
  8. package/dist/esm/index.js +18 -0
  9. package/dist/esm/index.js.map +1 -1
  10. package/dist/esm/log-monitor-widget.js +265 -0
  11. package/dist/esm/log-monitor-widget.js.map +1 -0
  12. package/dist/esm/log-tree.js +96 -0
  13. package/dist/esm/log-tree.js.map +1 -0
  14. package/dist/esm/option-desk-widget.js +322 -0
  15. package/dist/esm/option-desk-widget.js.map +1 -0
  16. package/dist/esm/pnl-curve.js +129 -0
  17. package/dist/esm/pnl-curve.js.map +1 -0
  18. package/dist/esm/statistics-widget.js +194 -0
  19. package/dist/esm/statistics-widget.js.map +1 -0
  20. package/dist/esm/strategies-widget.js +348 -0
  21. package/dist/esm/strategies-widget.js.map +1 -0
  22. package/dist/esm/trade-history-widget.js +14 -6
  23. package/dist/esm/trade-history-widget.js.map +1 -1
  24. package/dist/esm/tradefeed-widget.js +3 -3
  25. package/dist/esm/tradefeed-widget.js.map +1 -1
  26. package/dist/esm/trading-host.js +1 -0
  27. package/dist/esm/trading-host.js.map +1 -1
  28. package/dist/sstradingcontrols.js +1358 -78
  29. package/dist/sstradingcontrols.js.map +4 -4
  30. package/dist/types/active-orders-widget.d.ts +11 -3
  31. package/dist/types/active-orders-widget.d.ts.map +1 -1
  32. package/dist/types/black-scholes.d.ts +28 -0
  33. package/dist/types/black-scholes.d.ts.map +1 -0
  34. package/dist/types/control-types.d.ts +4 -0
  35. package/dist/types/control-types.d.ts.map +1 -1
  36. package/dist/types/index.d.ts +16 -1
  37. package/dist/types/index.d.ts.map +1 -1
  38. package/dist/types/log-monitor-widget.d.ts +42 -0
  39. package/dist/types/log-monitor-widget.d.ts.map +1 -0
  40. package/dist/types/log-tree.d.ts +34 -0
  41. package/dist/types/log-tree.d.ts.map +1 -0
  42. package/dist/types/option-desk-widget.d.ts +68 -0
  43. package/dist/types/option-desk-widget.d.ts.map +1 -0
  44. package/dist/types/pnl-curve.d.ts +43 -0
  45. package/dist/types/pnl-curve.d.ts.map +1 -0
  46. package/dist/types/statistics-widget.d.ts +29 -0
  47. package/dist/types/statistics-widget.d.ts.map +1 -0
  48. package/dist/types/strategies-widget.d.ts +63 -0
  49. package/dist/types/strategies-widget.d.ts.map +1 -0
  50. package/dist/types/trade-history-widget.d.ts +3 -1
  51. package/dist/types/trade-history-widget.d.ts.map +1 -1
  52. package/dist/types/trading-data.d.ts +9 -0
  53. package/dist/types/trading-data.d.ts.map +1 -1
  54. package/dist/types/trading-host.d.ts +1 -0
  55. package/dist/types/trading-host.d.ts.map +1 -1
  56. package/package.json +27 -2
  57. package/screenshots/log-monitor.png +0 -0
  58. package/screenshots/option-desk.png +0 -0
  59. package/screenshots/panels.jpg +0 -0
  60. package/screenshots/statistics.png +0 -0
  61. package/screenshots/strategies.png +0 -0
  62. package/src/active-orders-widget.ts +49 -25
  63. package/src/black-scholes.ts +199 -0
  64. package/src/control-types.ts +4 -0
  65. package/src/index.ts +41 -0
  66. package/src/log-monitor-widget.ts +312 -0
  67. package/src/log-tree.ts +131 -0
  68. package/src/option-desk-widget.ts +422 -0
  69. package/src/pnl-curve.ts +204 -0
  70. package/src/statistics-widget.ts +226 -0
  71. package/src/strategies-widget.ts +435 -0
  72. package/src/trade-history-widget.ts +19 -6
  73. package/src/tradefeed-widget.ts +3 -3
  74. package/src/trading-data.ts +22 -0
  75. package/src/trading-host.ts +8 -0
  76. package/styles/trading-controls.css +356 -0
  77. package/translation-keys.json +70 -1
package/README.md CHANGED
@@ -4,10 +4,11 @@
4
4
  [![npm version](https://img.shields.io/npm/v/%40stocksharp%2Ftrading-controls.svg)](https://www.npmjs.com/package/@stocksharp/trading-controls)
5
5
  [![License](https://img.shields.io/badge/license-StockSharp%20EULA-c8202f.svg)](LICENSE)
6
6
 
7
- **StockSharp JS Trading Controls** are the browser panels a trading screen is
8
- made of: an **active orders** blotter with inline edit, a **positions** blotter
9
- with a pinned cash balance, a **trade history** blotter, and a **watchlist**
10
- with live quotes, favourites and category tabs.
7
+ **StockSharp JS Trading Controls** are the browser panels a trading screen is made
8
+ of. Eleven of them: the **active orders**, **positions** and **trade history**
9
+ blotters, a **watchlist** with live quotes and category tabs, an **order entry**
10
+ pad, a **trade feed**, an **order book** ladder, a **statistics** table, a
11
+ **strategies** dashboard, a **log monitor**, and an **option desk**.
11
12
 
12
13
  Each control builds its own DOM, renders its own table through
13
14
  [`@stocksharp/grids`](https://www.npmjs.com/package/@stocksharp/grids), and reaches
@@ -86,15 +87,18 @@ clicking something that does nothing. So a missing member throws at construction
86
87
  naming the path — `WatchlistWidget: host.trading.api.getExecutions is required` —
87
88
  nested members included.
88
89
 
89
- **Seven of them no shipped control calls**: `spawn`, `persistState`,
90
- `saveLayout`, `log`, `trading.pickInstrument`, `marketData.resubscribe` and
91
- `marketData.getOrders`. They are required anyway, and not on speculation — the
92
- terminal this was extracted from has seven controls, and the three still on its
93
- side of the boundary (order book, order entry, trade feed) are already written
94
- against this same interface and call every one of those members. Narrowing the
95
- port now and widening it again as each moves in would break every host twice.
96
- If you are adopting only the four controls here, stubs are a correct answer: a
97
- no-op `spawn`, a `log` that forwards to the console.
90
+ **Every member is now reached by some shipped control.** When four of them were
91
+ here the port was already this wide, and the seven members nothing yet called —
92
+ `spawn`, `persistState`, `saveLayout`, `log`, `trading.pickInstrument`,
93
+ `marketData.resubscribe`, `marketData.getOrders` were required anyway, because
94
+ the controls still on the terminal's side of the boundary were written against
95
+ this same interface and called them. Those controls have since moved in and do
96
+ call them, which is the argument for not having narrowed the port and widened it
97
+ again seven times.
98
+
99
+ A host adopting a subset still has to answer for all of it. Stubs are a correct
100
+ answer where a capability genuinely does not exist on that page: a no-op `spawn`,
101
+ a `log` that forwards to the console.
98
102
 
99
103
  Two pairs are deliberately separate rather than merged:
100
104
 
@@ -121,7 +125,7 @@ Two pairs are deliberately separate rather than merged:
121
125
  reads the port names (`getExecutions`, `searchInstruments`), which the host
122
126
  implements.
123
127
 
124
- ### The 114 keys a host has to answer
128
+ ### The 222 keys a host has to answer
125
129
 
126
130
  `t()` cannot fail. A key the host does not know is rendered to the user as
127
131
  itself, so `NoActiveOrders` appears in the empty blotter and `ClosePanel`
@@ -130,11 +134,20 @@ error. The complete list ships with the package:
130
134
 
131
135
  ```ts
132
136
  import keys from '@stocksharp/trading-controls/translation-keys.json';
133
- // { count: 114, keys: ['Actions', 'ActiveOrders', …] }
137
+ // { count: 222, keys: ['Actions', 'ActiveOrders', …] }
134
138
  ```
135
139
 
136
140
  It is **generated from the sources** (`npm run i18n:update`) and re-checked by
137
- `npm test`, so it cannot drift from what the controls actually ask for.
141
+ `npm test`, so it cannot drift from what the controls actually ask for. Because it
142
+ is generated by scanning for `t('literal')`, no control may assemble a key from a
143
+ value: a computed key would be invisible to the scan, absent from the list, and
144
+ would reach a user as itself. A test renders each control over data that takes
145
+ every branch of its wording and asserts that everything it asked for is on the
146
+ list.
147
+
148
+ One set of keys is deliberately not: the trading modes a host hands
149
+ `StrategiesWidget`. The host says what a run may be put in and therefore words
150
+ them, so those strings are its vocabulary and answering for them is its job.
138
151
 
139
152
  The keys are not derivable, which is why the list is shipped rather than
140
153
  described. Most are resource identifiers (`ClosePanel`, `ExportToExcel`,
@@ -304,6 +317,72 @@ is class names: the volume bar's share of its side and the heat behind a level
304
317
  reach the stylesheet as measured custom properties (`--t-ob-bar`, `--t-ob-heat`,
305
318
  `--t-ob-sent`), so no width and no colour is decided in TypeScript.
306
319
 
320
+ ### `StatisticsWidget`
321
+
322
+ What a run made, one parameter per row, grouped by category and left in the order
323
+ the host sent them — the registry's order, which puts profit before trades before
324
+ positions before orders, and is not alphabetical. The panel measures nothing: a
325
+ statistic is produced by whatever ran the strategy, so the whole set arrives at
326
+ once through `update` and a row that stopped being sent has stopped existing.
327
+ There are no deps beyond the host, because there is nothing on the table to act
328
+ on. A value is a number, a moment or nothing at all, and nothing is a blank cell
329
+ rather than a zero: a figure that has not been measured yet is not a measured
330
+ zero.
331
+
332
+ ![The statistics table: profit, drawdown and trade counts grouped by category, derived from the demo's own fills and moving with them](screenshots/statistics.png)
333
+
334
+ ### `StrategiesWidget`
335
+
336
+ A row per run: its state, whether it is online, the mode it trades in, its
337
+ instrument, position, order and trade counts, what it has made, and a sparkline of
338
+ how it got there. Every action is a dep and a row only offers what the host can
339
+ carry out — start appears on a stopped run and stop on a started one, the
340
+ trading-mode cell is a plain caption unless `setTradingMode` was supplied. The
341
+ modes themselves come from the host and are worded through `t()`, which makes them
342
+ the one set of keys in this package that the host answers for rather than the
343
+ shipped list.
344
+
345
+ The sparkline is a canvas sized in device pixels and drawn from
346
+ `presentation.canvasPalette()`, so it is as sharp as the text beside it and green
347
+ and red mean there what they mean everywhere else on the page.
348
+
349
+ ![The strategies dashboard: three runs with their state, trading mode, P&L and a sparkline each, one of them stopped and reporting why](screenshots/strategies.png)
350
+
351
+ ### `LogMonitorWidget`
352
+
353
+ A source tree beside the messages, which is how a log with more than one writer is
354
+ read: pick a node and the table shows that source and everything under it. Sources
355
+ arrive whole through `setSources` and messages accumulate through `append`, capped
356
+ (`maxMessages`, five thousand by default) so a session left running overnight
357
+ cannot grow without bound. The five levels toggle independently and the filter is
358
+ a substring over the message and its source together.
359
+
360
+ A message names its source by id; what that id is *called* comes from the tree, so
361
+ renaming a source — or switching the page's language — re-captions the messages
362
+ that were already in the table.
363
+
364
+ ![The log monitor: the demo board as a source tree, with every host-port call the controls made filed under the panel that made it](screenshots/log-monitor.png)
365
+
366
+ ### `OptionDeskWidget`
367
+
368
+ One expiry of a chain, the call side mirrored against the put side around the
369
+ strike. Volume and open interest are scaled per side, because calls and puts trade
370
+ in different sizes and comparing one against the busiest of the other says
371
+ nothing; volatility is scaled across both at once, because a skew is exactly the
372
+ comparison between them.
373
+
374
+ Greeks arrive one of two ways and the desk does not care which: a host that prices
375
+ its own sends them on the contract, and a host that has quotes and an expiry sends
376
+ the volatility instead and the desk prices delta through rho itself, from the
377
+ Black-Scholes that ships with the package (`premium`, `greeks`,
378
+ `impliedVolatility` — exported, because a host that wants the arithmetic without
379
+ the table should not have to reimplement it). The number of decimal places in a
380
+ greek column comes from the numbers in it: gamma on an underlying at sixty
381
+ thousand is about 0.00003, and the four places that suit a delta would show every
382
+ strike as nothing.
383
+
384
+ ![The option desk: a BTC chain mirrored around the strike, its smile, per-side volume bars and a green-to-red split at the money](screenshots/option-desk.png)
385
+
307
386
  ## Exported sheets say what the screen says
308
387
 
309
388
  Every blotter exports to `.xlsx` through the grid, and a column states both
@@ -37,7 +37,7 @@ export class ActiveOrdersWidget {
37
37
  // host, so a missing host has to fail here rather than render a panel
38
38
  // captioned with raw English keys.
39
39
  const host = assertHost(deps?.host, 'ActiveOrdersWidget');
40
- const root = ActiveOrdersWidget._buildRoot(host);
40
+ const root = ActiveOrdersWidget._buildRoot(host, deps?.readOnly === true);
41
41
  root.id = makePanelId(ActiveOrdersWidget.TYPE);
42
42
  hostEl.appendChild(root);
43
43
  return new ActiveOrdersWidget(root, state || {}, deps);
@@ -53,7 +53,7 @@ export class ActiveOrdersWidget {
53
53
  // already give the identical button — and are wired to deps. Cancel-all
54
54
  // keeps a distinct accessible name from its tooltip, which is why it states
55
55
  // `aria-label` rather than taking the tooltip for both.
56
- static _buildRoot(host) {
56
+ static _buildRoot(host, readOnly = false) {
57
57
  return makePanelRoot('active-orders-panel', host.t('ActiveOrders'), [
58
58
  makeElement('div', 'panel-header', {}, [
59
59
  makeElement('span', '', {}, [host.t('OpenOrders')]),
@@ -67,8 +67,10 @@ export class ActiveOrdersWidget {
67
67
  ]),
68
68
  ]),
69
69
  makeElement('div', 'panel-rail', { role: 'toolbar', 'aria-label': host.t('ActiveOrdersActions') }, [
70
- makeIconButton('bt-icon-btn bt-icon-cancel-all panel-cancel-all-btn', host.t('CancelAll'), 'bi-x-circle', { 'aria-label': host.t('CancelAllOrders') }),
71
- makeIconButton('bt-icon-btn panel-refresh-btn', host.t('Refresh'), 'bi-arrow-clockwise', {}),
70
+ ...(readOnly ? [] : [
71
+ makeIconButton('bt-icon-btn bt-icon-cancel-all panel-cancel-all-btn', host.t('CancelAll'), 'bi-x-circle', { 'aria-label': host.t('CancelAllOrders') }),
72
+ makeIconButton('bt-icon-btn panel-refresh-btn', host.t('Refresh'), 'bi-arrow-clockwise', {}),
73
+ ]),
72
74
  makeIconButton('bt-icon-btn panel-export-btn', host.t('ExportToExcel'), 'bi-file-earmark-spreadsheet', {}),
73
75
  ]),
74
76
  ]),
@@ -76,9 +78,17 @@ export class ActiveOrdersWidget {
76
78
  }
77
79
  constructor(rootEl, _state, deps) {
78
80
  this._host = assertHost(deps?.host, 'ActiveOrdersWidget');
79
- for (const name of ['cancelOrder', 'dismissOrder', 'editOrderField', 'replaceOrder', 'cancelAllOrders', 'refreshOrders']) {
80
- if (typeof deps?.[name] !== 'function')
81
- throw new Error(`ActiveOrdersWidget: dep "${name}" is required`);
81
+ this._readOnly = deps?.readOnly === true;
82
+ if (this._readOnly) {
83
+ this._actions = null;
84
+ }
85
+ else {
86
+ const actions = deps;
87
+ for (const name of ['cancelOrder', 'dismissOrder', 'editOrderField', 'replaceOrder', 'cancelAllOrders', 'refreshOrders']) {
88
+ if (typeof actions?.[name] !== 'function')
89
+ throw new Error(`ActiveOrdersWidget: dep "${name}" is required`);
90
+ }
91
+ this._actions = actions;
82
92
  }
83
93
  this.rootEl = rootEl;
84
94
  this._deps = deps;
@@ -94,11 +104,11 @@ export class ActiveOrdersWidget {
94
104
  });
95
105
  this._cancelAllBtn?.addEventListener('click', (e) => {
96
106
  e.preventDefault();
97
- this._deps.cancelAllOrders();
107
+ this._actions?.cancelAllOrders();
98
108
  });
99
109
  this._refreshBtn?.addEventListener('click', (e) => {
100
110
  e.preventDefault();
101
- this._deps.refreshOrders();
111
+ this._actions?.refreshOrders();
102
112
  });
103
113
  this._exportBtn?.addEventListener('click', (e) => {
104
114
  e.preventDefault();
@@ -212,7 +222,7 @@ export class ActiveOrdersWidget {
212
222
  }
213
223
  const updated = { quantity: order.quantity, limitPrice: order.limitPrice, stopPrice: order.stopPrice };
214
224
  updated[field] = newVal;
215
- this._deps.replaceOrder(orderId, updated.quantity, updated.limitPrice, updated.stopPrice);
225
+ this._actions?.replaceOrder(orderId, updated.quantity, updated.limitPrice, updated.stopPrice);
216
226
  };
217
227
  input.addEventListener('blur', commit);
218
228
  input.addEventListener('keydown', (e) => {
@@ -275,7 +285,7 @@ export class ActiveOrdersWidget {
275
285
  exportable: true,
276
286
  value: (o) => o.quantity,
277
287
  render: (o) => formatQty(o.quantity),
278
- cellClass: (o) => ActiveOrdersWidget._editableClass(o, 'quantity'),
288
+ cellClass: (o) => this._readOnly ? '' : ActiveOrdersWidget._editableClass(o, 'quantity'),
279
289
  bindCell: (td, o) => this._bindInlineEdit(td, o, 'quantity'),
280
290
  },
281
291
  {
@@ -284,7 +294,7 @@ export class ActiveOrdersWidget {
284
294
  exportable: true,
285
295
  value: (o) => o.limitPrice,
286
296
  render: (o) => o.limitPrice ? formatPrice(o.limitPrice) : label('MKT'),
287
- cellClass: (o) => ActiveOrdersWidget._editableClass(o, 'limitPrice'),
297
+ cellClass: (o) => this._readOnly ? '' : ActiveOrdersWidget._editableClass(o, 'limitPrice'),
288
298
  bindCell: (td, o) => this._bindInlineEdit(td, o, 'limitPrice'),
289
299
  exportValue: (o) => o.limitPrice ?? label('MKT'),
290
300
  },
@@ -294,7 +304,7 @@ export class ActiveOrdersWidget {
294
304
  exportable: true,
295
305
  value: (o) => o.stopPrice,
296
306
  render: (o) => o.stopPrice ? formatPrice(o.stopPrice) : '--',
297
- cellClass: (o) => ActiveOrdersWidget._editableClass(o, 'stopPrice'),
307
+ cellClass: (o) => this._readOnly ? '' : ActiveOrdersWidget._editableClass(o, 'stopPrice'),
298
308
  bindCell: (td, o) => this._bindInlineEdit(td, o, 'stopPrice'),
299
309
  exportValue: (o) => o.stopPrice ?? '',
300
310
  },
@@ -306,14 +316,14 @@ export class ActiveOrdersWidget {
306
316
  render: (o) => this._statusCell(o),
307
317
  exportValue: (o) => presentation.statusText(o.status),
308
318
  },
309
- {
310
- key: 'actions',
311
- header: label('Actions'),
312
- headerHidden: true,
313
- exportable: false,
314
- cellClass: () => 'position-actions',
315
- render: (o) => this._actionButton(o),
316
- },
319
+ ...(this._readOnly ? [] : [{
320
+ key: 'actions',
321
+ header: label('Actions'),
322
+ headerHidden: true,
323
+ exportable: false,
324
+ cellClass: () => 'position-actions',
325
+ render: (o) => this._actionButton(o),
326
+ }]),
317
327
  ];
318
328
  }
319
329
  static _rowClass(order) {
@@ -338,9 +348,10 @@ export class ActiveOrdersWidget {
338
348
  // Double-click to edit belongs to the whole cell rather than to a control
339
349
  // inside it, which is why it is wired here instead of returned by render().
340
350
  _bindInlineEdit(td, order, field) {
341
- if (!ActiveOrdersWidget._canEdit(order, field))
351
+ if (this._actions === null || !ActiveOrdersWidget._canEdit(order, field))
342
352
  return;
343
- td.addEventListener('dblclick', () => this._deps.editOrderField(order.id, field));
353
+ const edit = this._actions.editOrderField;
354
+ td.addEventListener('dblclick', () => edit(order.id, field));
344
355
  }
345
356
  // Status text, plus a hoverable icon carrying the rejection reason. Some
346
357
  // venues wrap the human-readable rejection inside a JSON blob;
@@ -379,10 +390,12 @@ export class ActiveOrdersWidget {
379
390
  icon.className = 'bi bi-x-circle';
380
391
  button.appendChild(icon);
381
392
  button.addEventListener('click', () => {
393
+ if (this._actions === null)
394
+ return;
382
395
  if (isTerminal)
383
- this._deps.dismissOrder(order.id);
396
+ this._actions.dismissOrder(order.id);
384
397
  else
385
- this._deps.cancelOrder(order.id);
398
+ this._actions.cancelOrder(order.id);
386
399
  });
387
400
  return button;
388
401
  }
@@ -1 +1 @@
1
- {"version":3,"file":"active-orders-widget.js","sourceRoot":"","sources":["../../src/active-orders-widget.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"active-orders-widget.js","sourceRoot":"","sources":["../../src/active-orders-widget.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,147 @@
1
+ // Option pricing and the greeks, as pure functions.
2
+ //
3
+ // The desktop desk gets these from StockSharp.Algo.Derivatives, which a browser cannot call. A
4
+ // host could compute them and send them down, and one that already does should - the desk takes
5
+ // them either way. But a host that has bid, ask and an expiry has everything the arithmetic
6
+ // needs, and making it stand up a pricing service before it can draw a chain is a poor trade.
7
+ //
8
+ // So the maths ships, and it ships here, apart from the control: a wrong greek is not visible
9
+ // on screen the way a wrong column is, and the only defence is checking the numbers against
10
+ // values that are known.
11
+ //
12
+ // Conventions follow the desk that reads them, not the textbook: vega is per one point of
13
+ // volatility, theta is per calendar day, and rho is per one point of rate - the units a trader
14
+ // works in, rather than per 1.0 of each, which nobody quotes.
15
+ export const OptionTypes = {
16
+ Call: 'call',
17
+ Put: 'put',
18
+ };
19
+ const SQRT_2PI = Math.sqrt(2 * Math.PI);
20
+ const DAYS_IN_YEAR = 365;
21
+ /// The standard normal CDF.
22
+ ///
23
+ /// Hart's rational approximation, which is what pricing libraries use and what a desk's numbers
24
+ /// are expected to agree with: accurate to about 1e-15 across the range, and exactly a half at
25
+ /// the mean rather than nearly so. The cheaper Abramowitz-and-Stegun fit is good to 1e-7, which
26
+ /// sounds like enough until a greek that should be symmetric is not.
27
+ export function normalCdf(x) {
28
+ const z = Math.abs(x);
29
+ // Beyond this the tail is smaller than double precision can carry anyway.
30
+ if (z > 37)
31
+ return x > 0 ? 1 : 0;
32
+ const e = Math.exp(-(z * z) / 2);
33
+ let tail;
34
+ if (z < 7.07106781186547) {
35
+ let b = 3.52624965998911e-02 * z + 0.700383064443688;
36
+ b = b * z + 6.37396220353165;
37
+ b = b * z + 33.912866078383;
38
+ b = b * z + 112.079291497871;
39
+ b = b * z + 221.213596169931;
40
+ b = b * z + 220.206867912376;
41
+ let d = 8.83883476483184e-02 * z + 1.75566716318264;
42
+ d = d * z + 16.064177579207;
43
+ d = d * z + 86.7807322029461;
44
+ d = d * z + 296.564248779674;
45
+ d = d * z + 637.333633378831;
46
+ d = d * z + 793.826512519948;
47
+ d = d * z + 440.413735824752;
48
+ tail = (e * b) / d;
49
+ }
50
+ else {
51
+ // A continued fraction, which is what stays accurate once the polynomial ratio above
52
+ // starts losing digits to cancellation.
53
+ let b = z + 0.65;
54
+ b = z + 4 / b;
55
+ b = z + 3 / b;
56
+ b = z + 2 / b;
57
+ b = z + 1 / b;
58
+ tail = e / (b * 2.506628274631);
59
+ }
60
+ return x > 0 ? 1 - tail : tail;
61
+ }
62
+ /// The standard normal density.
63
+ export function normalPdf(x) {
64
+ return Math.exp(-0.5 * x * x) / SQRT_2PI;
65
+ }
66
+ /// d1, or zero when there is no time or no volatility for the division to mean anything.
67
+ export function d1(inputs) {
68
+ const { assetPrice, strike, timeToExpiry, riskFree, dividend, deviation } = inputs;
69
+ const spread = deviation * Math.sqrt(timeToExpiry);
70
+ if (spread === 0 || assetPrice <= 0 || strike <= 0)
71
+ return 0;
72
+ return (Math.log(assetPrice / strike) + (riskFree - dividend + (deviation * deviation) / 2) * timeToExpiry) / spread;
73
+ }
74
+ /// d2, which is d1 less one standard deviation of the remaining time.
75
+ export function d2(inputs) {
76
+ const spread = inputs.deviation * Math.sqrt(inputs.timeToExpiry);
77
+ return spread === 0 ? 0 : d1(inputs) - spread;
78
+ }
79
+ /// What the option is worth.
80
+ ///
81
+ /// At expiry, or with no volatility, that is its intrinsic value - the formula degenerates to
82
+ /// exactly that, and saying so explicitly keeps a zero denominator out of the general case.
83
+ export function premium(type, inputs) {
84
+ const { assetPrice, strike, timeToExpiry, riskFree, dividend, deviation } = inputs;
85
+ if (timeToExpiry <= 0 || deviation <= 0)
86
+ return Math.max(0, type === OptionTypes.Call ? assetPrice - strike : strike - assetPrice);
87
+ const a = d1(inputs);
88
+ const b = d2(inputs);
89
+ const carried = assetPrice * Math.exp(-dividend * timeToExpiry);
90
+ const discounted = strike * Math.exp(-riskFree * timeToExpiry);
91
+ return type === OptionTypes.Call
92
+ ? carried * normalCdf(a) - discounted * normalCdf(b)
93
+ : discounted * normalCdf(-b) - carried * normalCdf(-a);
94
+ }
95
+ /// Every greek at once: they share d1, and computing them together is both cheaper and the only
96
+ /// way they are guaranteed to describe the same moment.
97
+ export function greeks(type, inputs) {
98
+ const { assetPrice, strike, timeToExpiry, riskFree, dividend, deviation } = inputs;
99
+ const sign = type === OptionTypes.Call ? 1 : -1;
100
+ if (timeToExpiry <= 0 || deviation <= 0 || assetPrice <= 0) {
101
+ // An expired option still has a delta - it is one or nothing, depending on which side of
102
+ // the strike it finished. Everything else has stopped moving.
103
+ const inTheMoney = type === OptionTypes.Call ? assetPrice > strike : assetPrice < strike;
104
+ return { delta: inTheMoney ? sign : 0, gamma: 0, vega: 0, theta: 0, rho: 0 };
105
+ }
106
+ const a = d1(inputs);
107
+ const b = d2(inputs);
108
+ const sqrtT = Math.sqrt(timeToExpiry);
109
+ const density = normalPdf(a);
110
+ const carry = Math.exp(-dividend * timeToExpiry);
111
+ const discount = Math.exp(-riskFree * timeToExpiry);
112
+ const delta = sign * carry * normalCdf(sign * a);
113
+ const gamma = (carry * density) / (assetPrice * deviation * sqrtT);
114
+ // Scaled the way a desk quotes them: vega per one volatility point, rho per one rate point,
115
+ // theta per calendar day.
116
+ const vega = assetPrice * carry * density * sqrtT * 0.01;
117
+ const rho = sign * strike * timeToExpiry * discount * normalCdf(sign * b) * 0.01;
118
+ const theta = (-(assetPrice * carry * density * deviation) / (2 * sqrtT)
119
+ - sign * riskFree * strike * discount * normalCdf(sign * b)
120
+ + sign * dividend * assetPrice * carry * normalCdf(sign * a)) / DAYS_IN_YEAR;
121
+ return { delta, gamma, vega, theta, rho };
122
+ }
123
+ /// The volatility that would produce this price, or null when none would.
124
+ ///
125
+ /// Bisection rather than Newton: vega collapses far from the money and deep in time, and a
126
+ /// Newton step divided by a vanishing vega walks off to nonsense. Halving cannot, and forty
127
+ /// steps over a range this wide is finer than any quote.
128
+ export function impliedVolatility(type, inputs, price) {
129
+ if (!(price > 0) || inputs.timeToExpiry <= 0)
130
+ return null;
131
+ const at = (deviation) => premium(type, { ...inputs, deviation });
132
+ let low = 1e-6;
133
+ let high = 5;
134
+ // A price outside what any volatility in that range can produce has no answer, and
135
+ // returning the nearest bound would be a number that means nothing.
136
+ if (price < at(low) || price > at(high))
137
+ return null;
138
+ for (let step = 0; step < 60; step++) {
139
+ const mid = (low + high) / 2;
140
+ if (at(mid) < price)
141
+ low = mid;
142
+ else
143
+ high = mid;
144
+ }
145
+ return (low + high) / 2;
146
+ }
147
+ //# sourceMappingURL=black-scholes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"black-scholes.js","sourceRoot":"","sources":["../../src/black-scholes.ts"],"names":[],"mappings":"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"}
@@ -22,5 +22,9 @@ export const ControlTypes = {
22
22
  OrderBook: 'orderbook',
23
23
  TradeFeed: 'tradefeed',
24
24
  OrderEntry: 'orderEntry',
25
+ Statistics: 'statistics',
26
+ LogMonitor: 'logMonitor',
27
+ Strategies: 'strategies',
28
+ OptionDesk: 'optionDesk',
25
29
  };
26
30
  //# sourceMappingURL=control-types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"control-types.js","sourceRoot":"","sources":["../../src/control-types.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,iBAAiB;AACjB,EAAE;AACF,gFAAgF;AAChF,yEAAyE;AACzE,4EAA4E;AAC5E,8EAA8E;AAC9E,EAAE;AACF,8EAA8E;AAC9E,0EAA0E;AAC1E,2BAA2B;AAC3B,EAAE;AACF,8EAA8E;AAC9E,+EAA+E;AAC/E,+EAA+E;AAC/E,SAAS;AACT,MAAM,CAAC,MAAM,YAAY,GAAG;IACxB,SAAS,EAAE,WAAW;IACtB,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;CAClB,CAAC"}
1
+ {"version":3,"file":"control-types.js","sourceRoot":"","sources":["../../src/control-types.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,iBAAiB;AACjB,EAAE;AACF,gFAAgF;AAChF,yEAAyE;AACzE,4EAA4E;AAC5E,8EAA8E;AAC9E,EAAE;AACF,8EAA8E;AAC9E,0EAA0E;AAC1E,2BAA2B;AAC3B,EAAE;AACF,8EAA8E;AAC9E,+EAA+E;AAC/E,+EAA+E;AAC/E,SAAS;AACT,MAAM,CAAC,MAAM,YAAY,GAAG;IACxB,SAAS,EAAE,WAAW;IACtB,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;IACtB,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;IACxB,UAAU,EAAE,YAAY;IACxB,UAAU,EAAE,YAAY;IACxB,UAAU,EAAE,YAAY;IACxB,UAAU,EAAE,YAAY;CAClB,CAAC"}
package/dist/esm/index.js CHANGED
@@ -11,10 +11,28 @@ export { TradeHistoryWidget } from './trade-history-widget.js';
11
11
  export { WatchlistWidget } from './watchlist-widget.js';
12
12
  export { OrderEntrySides, OrderEntryTypes, OrderEntryWidget } from './order-entry-widget.js';
13
13
  export { OrderBookWidget } from './orderbook-widget.js';
14
+ // The cumulative P&L curve, shared by everything that draws one: a strategy row's
15
+ // sparkline and a statistics card are the same curve at two sizes. A backtest's own
16
+ // equity is not here - that one shares the price axis and belongs to the chart engine.
17
+ export { compressPnl, drawPnlCurve, pnlCurve } from './pnl-curve.js';
18
+ export { OptionDeskWidget, greekPlaces, greekScales, scaleChain, sideGreeks } from './option-desk-widget.js';
19
+ // Option pricing, for a host that has quotes and an expiry but no pricing service. A host
20
+ // that computes its own greeks sends them instead and none of this is reached.
21
+ export { OptionTypes, d1, d2, greeks, impliedVolatility, normalCdf, normalPdf, premium } from './black-scholes.js';
22
+ export { StrategiesWidget, StrategyStates } from './strategies-widget.js';
23
+ export { LogMonitorWidget } from './log-monitor-widget.js';
24
+ // The log's own shapes: how sources nest, and which messages a view of them keeps. A host
25
+ // rendering its own view of the same feed reads these rather than reinventing the filter.
26
+ export { LogLevels, buildLogTree, keepLog, subtreeOf } from './log-tree.js';
27
+ export { StatisticsWidget, formatStatistic } from './statistics-widget.js';
14
28
  export { TradeFeedWidget } from './tradefeed-widget.js';
15
29
  // The tape's own shapes: one print as the chart reads it, and the bubble a
16
30
  // print (or a slice of them) is drawn as. A host that renders its own view of
17
31
  // the same feed reads these rather than reinventing the compaction.
18
32
  export { aggregateBubbles } from './tradefeed-aggregator.js';
19
33
  export { layoutBubbles } from './tradefeed-bubbles.js';
34
+ // The grid's own menu, worded by the host. Exported because a host that builds a table of its
35
+ // own - a run's log beside the blotters, say - needs the same menu in the same words, and the
36
+ // alternative is every consumer restating thirty labels the package already knows.
37
+ export { makeGridMenu } from './grid-menu.js';
20
38
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AA0BvF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIlD,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEnG,8EAA8E;AAC9E,8EAA8E;AAC9E,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE7F,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAI5E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAI/D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIxD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAM7F,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAUxD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIxD,2EAA2E;AAC3E,8EAA8E;AAC9E,oEAAoE;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAI7D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AA2BvF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIlD,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAEnG,8EAA8E;AAC9E,8EAA8E;AAC9E,eAAe;AACf,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE7F,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAI5E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAI/D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIxD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAM7F,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAUxD,kFAAkF;AAClF,oFAAoF;AACpF,uFAAuF;AACvF,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAIrE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAI7G,0FAA0F;AAC1F,+EAA+E;AAC/E,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAInH,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAI1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAI3D,0FAA0F;AAC1F,0FAA0F;AAC1F,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAI5E,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI3E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIxD,2EAA2E;AAC3E,8EAA8E;AAC9E,oEAAoE;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAI7D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAIvD,8FAA8F;AAC9F,8FAA8F;AAC9F,mFAAmF;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}