@vuu-ui/vuu-data-test 0.0.26
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/LICENSE +201 -0
- package/README.md +0 -0
- package/cjs/ArrayProxy.js +80 -0
- package/cjs/ArrayProxy.js.map +1 -0
- package/cjs/Table.js +186 -0
- package/cjs/Table.js.map +1 -0
- package/cjs/TickingArrayDataSource.js +134 -0
- package/cjs/TickingArrayDataSource.js.map +1 -0
- package/cjs/UpdateGenerator.js +87 -0
- package/cjs/UpdateGenerator.js.map +1 -0
- package/cjs/basket/basket-module.js +236 -0
- package/cjs/basket/basket-module.js.map +1 -0
- package/cjs/basket/basket-schemas.js +121 -0
- package/cjs/basket/basket-schemas.js.map +1 -0
- package/cjs/basket/reference-data/constituents.js +40 -0
- package/cjs/basket/reference-data/constituents.js.map +1 -0
- package/cjs/basket/reference-data/ftse100.js +105 -0
- package/cjs/basket/reference-data/ftse100.js.map +1 -0
- package/cjs/basket/reference-data/hsi.js +87 -0
- package/cjs/basket/reference-data/hsi.js.map +1 -0
- package/cjs/basket/reference-data/nasdaq100.js +108 -0
- package/cjs/basket/reference-data/nasdaq100.js.map +1 -0
- package/cjs/basket/reference-data/prices.js +51 -0
- package/cjs/basket/reference-data/prices.js.map +1 -0
- package/cjs/basket/reference-data/sp500.js +46 -0
- package/cjs/basket/reference-data/sp500.js.map +1 -0
- package/cjs/data-utils.js +58 -0
- package/cjs/data-utils.js.map +1 -0
- package/cjs/index.js +36 -0
- package/cjs/index.js.map +1 -0
- package/cjs/makeSuggestions.js +37 -0
- package/cjs/makeSuggestions.js.map +1 -0
- package/cjs/schemas.js +28 -0
- package/cjs/schemas.js.map +1 -0
- package/cjs/simul/reference-data/currencies.js +6 -0
- package/cjs/simul/reference-data/currencies.js.map +1 -0
- package/cjs/simul/reference-data/instruments-extended.js +18 -0
- package/cjs/simul/reference-data/instruments-extended.js.map +1 -0
- package/cjs/simul/reference-data/instruments.js +74 -0
- package/cjs/simul/reference-data/instruments.js.map +1 -0
- package/cjs/simul/reference-data/locations.js +17 -0
- package/cjs/simul/reference-data/locations.js.map +1 -0
- package/cjs/simul/reference-data/lotsizes.js +28 -0
- package/cjs/simul/reference-data/lotsizes.js.map +1 -0
- package/cjs/simul/reference-data/orders.js +43 -0
- package/cjs/simul/reference-data/orders.js.map +1 -0
- package/cjs/simul/reference-data/prices.js +71 -0
- package/cjs/simul/reference-data/prices.js.map +1 -0
- package/cjs/simul/simul-module.js +122 -0
- package/cjs/simul/simul-module.js.map +1 -0
- package/cjs/simul/simul-schemas.js +137 -0
- package/cjs/simul/simul-schemas.js.map +1 -0
- package/cjs/test/test-module.js +58 -0
- package/cjs/test/test-module.js.map +1 -0
- package/cjs/test/test-schemas.js +17 -0
- package/cjs/test/test-schemas.js.map +1 -0
- package/cjs/vuu-modules.js +15 -0
- package/cjs/vuu-modules.js.map +1 -0
- package/cjs/vuu-row-generator.js +74 -0
- package/cjs/vuu-row-generator.js.map +1 -0
- package/esm/ArrayProxy.js +78 -0
- package/esm/ArrayProxy.js.map +1 -0
- package/esm/Table.js +182 -0
- package/esm/Table.js.map +1 -0
- package/esm/TickingArrayDataSource.js +132 -0
- package/esm/TickingArrayDataSource.js.map +1 -0
- package/esm/UpdateGenerator.js +85 -0
- package/esm/UpdateGenerator.js.map +1 -0
- package/esm/basket/basket-module.js +232 -0
- package/esm/basket/basket-module.js.map +1 -0
- package/esm/basket/basket-schemas.js +119 -0
- package/esm/basket/basket-schemas.js.map +1 -0
- package/esm/basket/reference-data/constituents.js +38 -0
- package/esm/basket/reference-data/constituents.js.map +1 -0
- package/esm/basket/reference-data/ftse100.js +103 -0
- package/esm/basket/reference-data/ftse100.js.map +1 -0
- package/esm/basket/reference-data/hsi.js +85 -0
- package/esm/basket/reference-data/hsi.js.map +1 -0
- package/esm/basket/reference-data/nasdaq100.js +106 -0
- package/esm/basket/reference-data/nasdaq100.js.map +1 -0
- package/esm/basket/reference-data/prices.js +49 -0
- package/esm/basket/reference-data/prices.js.map +1 -0
- package/esm/basket/reference-data/sp500.js +44 -0
- package/esm/basket/reference-data/sp500.js.map +1 -0
- package/esm/data-utils.js +53 -0
- package/esm/data-utils.js.map +1 -0
- package/esm/index.js +11 -0
- package/esm/index.js.map +1 -0
- package/esm/makeSuggestions.js +35 -0
- package/esm/makeSuggestions.js.map +1 -0
- package/esm/schemas.js +24 -0
- package/esm/schemas.js.map +1 -0
- package/esm/simul/reference-data/currencies.js +4 -0
- package/esm/simul/reference-data/currencies.js.map +1 -0
- package/esm/simul/reference-data/instruments-extended.js +16 -0
- package/esm/simul/reference-data/instruments-extended.js.map +1 -0
- package/esm/simul/reference-data/instruments.js +69 -0
- package/esm/simul/reference-data/instruments.js.map +1 -0
- package/esm/simul/reference-data/locations.js +14 -0
- package/esm/simul/reference-data/locations.js.map +1 -0
- package/esm/simul/reference-data/lotsizes.js +26 -0
- package/esm/simul/reference-data/lotsizes.js.map +1 -0
- package/esm/simul/reference-data/orders.js +40 -0
- package/esm/simul/reference-data/orders.js.map +1 -0
- package/esm/simul/reference-data/prices.js +68 -0
- package/esm/simul/reference-data/prices.js.map +1 -0
- package/esm/simul/simul-module.js +120 -0
- package/esm/simul/simul-module.js.map +1 -0
- package/esm/simul/simul-schemas.js +135 -0
- package/esm/simul/simul-schemas.js.map +1 -0
- package/esm/test/test-module.js +56 -0
- package/esm/test/test-module.js.map +1 -0
- package/esm/test/test-schemas.js +15 -0
- package/esm/test/test-schemas.js.map +1 -0
- package/esm/vuu-modules.js +13 -0
- package/esm/vuu-modules.js.map +1 -0
- package/esm/vuu-row-generator.js +68 -0
- package/esm/vuu-row-generator.js.map +1 -0
- package/package.json +34 -0
- package/types/ArrayProxy.d.ts +8 -0
- package/types/Table.d.ts +23 -0
- package/types/TickingArrayDataSource.d.ts +27 -0
- package/types/UpdateGenerator.d.ts +18 -0
- package/types/basket/basket-module.d.ts +6 -0
- package/types/basket/basket-schemas.d.ts +3 -0
- package/types/basket/index.d.ts +2 -0
- package/types/basket/reference-data/constituents.d.ts +3 -0
- package/types/basket/reference-data/ftse100.d.ts +2 -0
- package/types/basket/reference-data/hsi.d.ts +2 -0
- package/types/basket/reference-data/nasdaq100.d.ts +2 -0
- package/types/basket/reference-data/prices.d.ts +25 -0
- package/types/basket/reference-data/sp500.d.ts +2 -0
- package/types/data-utils.d.ts +6 -0
- package/types/index.d.ts +9 -0
- package/types/makeSuggestions.d.ts +2 -0
- package/types/rowUpdates.d.ts +15 -0
- package/types/schemas.d.ts +8 -0
- package/types/simul/index.d.ts +2 -0
- package/types/simul/reference-data/currencies.d.ts +1 -0
- package/types/simul/reference-data/index.d.ts +5 -0
- package/types/simul/reference-data/instrument-prices.d.ts +54 -0
- package/types/simul/reference-data/instruments-extended.d.ts +2 -0
- package/types/simul/reference-data/instruments.d.ts +31 -0
- package/types/simul/reference-data/locations.d.ts +4 -0
- package/types/simul/reference-data/lotsizes.d.ts +1 -0
- package/types/simul/reference-data/orders.d.ts +35 -0
- package/types/simul/reference-data/priceStrategies.d.ts +1 -0
- package/types/simul/reference-data/prices.d.ts +27 -0
- package/types/simul/simul-module.d.ts +3 -0
- package/types/simul/simul-schemas.d.ts +3 -0
- package/types/test/index.d.ts +1 -0
- package/types/test/test-module.d.ts +4 -0
- package/types/test/test-schemas.d.ts +3 -0
- package/types/vuu-modules.d.ts +7 -0
- package/types/vuu-row-generator.d.ts +17 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"makeSuggestions.js","sources":["../src/makeSuggestions.ts"],"sourcesContent":["import { DataItem } from \"@vuu-ui/vuu-utils\";\nimport { Table } from \"./Table\";\n\nconst cachedValues = new Map<Table, Map<string, DataItem[]>>();\n\nconst getUniqueValues = (table: Table, column: string, pattern = \"\") => {\n let uniqueValues;\n const cachedEntry = cachedValues.get(table);\n if (cachedEntry && cachedEntry.has(column)) {\n uniqueValues = cachedEntry.get(column) as DataItem[];\n } else {\n const { data, map } = table;\n const key = map[column];\n uniqueValues = [];\n const set = new Set();\n for (const row of data) {\n const value = row[key];\n if (!set.has(value)) {\n set.add(value);\n uniqueValues.push(value);\n }\n }\n uniqueValues.sort();\n if (cachedEntry) {\n cachedEntry.set(column, uniqueValues);\n } else {\n cachedValues.set(table, new Map([[column, uniqueValues]]));\n }\n }\n return pattern\n ? uniqueValues.filter((value) => value.toString().startsWith(pattern))\n : uniqueValues;\n};\n\n// export const makeSuggestions = (\n// table: Table,\n// column: string,\n// pattern?: string\n// ) => {\n// const uniqueValues = getUniqueValues(table, column, pattern);\n// if (uniqueValues.length > 20) {\n// return uniqueValues?.slice(0, 20).map((v) => v.toString());\n// } else {\n// return uniqueValues.map((v) => v.toString());\n// }\n// };\nexport const makeSuggestions = (\n table: Table,\n column: string,\n pattern?: string\n): Promise<string[]> =>\n new Promise((resolve) => {\n const uniqueValues = getUniqueValues(table, column, pattern);\n const result =\n uniqueValues.length > 20\n ? uniqueValues?.slice(0, 20).map((v) => v.toString())\n : uniqueValues.map((v) => v.toString());\n setTimeout(() => resolve(result), 100);\n });\n"],"names":[],"mappings":"AAGA,MAAM,YAAA,uBAAmB,GAAoC,EAAA,CAAA;AAE7D,MAAM,eAAkB,GAAA,CAAC,KAAc,EAAA,MAAA,EAAgB,UAAU,EAAO,KAAA;AACtE,EAAI,IAAA,YAAA,CAAA;AACJ,EAAM,MAAA,WAAA,GAAc,YAAa,CAAA,GAAA,CAAI,KAAK,CAAA,CAAA;AAC1C,EAAA,IAAI,WAAe,IAAA,WAAA,CAAY,GAAI,CAAA,MAAM,CAAG,EAAA;AAC1C,IAAe,YAAA,GAAA,WAAA,CAAY,IAAI,MAAM,CAAA,CAAA;AAAA,GAChC,MAAA;AACL,IAAM,MAAA,EAAE,IAAM,EAAA,GAAA,EAAQ,GAAA,KAAA,CAAA;AACtB,IAAM,MAAA,GAAA,GAAM,IAAI,MAAM,CAAA,CAAA;AACtB,IAAA,YAAA,GAAe,EAAC,CAAA;AAChB,IAAM,MAAA,GAAA,uBAAU,GAAI,EAAA,CAAA;AACpB,IAAA,KAAA,MAAW,OAAO,IAAM,EAAA;AACtB,MAAM,MAAA,KAAA,GAAQ,IAAI,GAAG,CAAA,CAAA;AACrB,MAAA,IAAI,CAAC,GAAA,CAAI,GAAI,CAAA,KAAK,CAAG,EAAA;AACnB,QAAA,GAAA,CAAI,IAAI,KAAK,CAAA,CAAA;AACb,QAAA,YAAA,CAAa,KAAK,KAAK,CAAA,CAAA;AAAA,OACzB;AAAA,KACF;AACA,IAAA,YAAA,CAAa,IAAK,EAAA,CAAA;AAClB,IAAA,IAAI,WAAa,EAAA;AACf,MAAY,WAAA,CAAA,GAAA,CAAI,QAAQ,YAAY,CAAA,CAAA;AAAA,KAC/B,MAAA;AACL,MAAa,YAAA,CAAA,GAAA,CAAI,KAAO,kBAAA,IAAI,GAAI,CAAA,CAAC,CAAC,MAAQ,EAAA,YAAY,CAAC,CAAC,CAAC,CAAA,CAAA;AAAA,KAC3D;AAAA,GACF;AACA,EAAO,OAAA,OAAA,GACH,YAAa,CAAA,MAAA,CAAO,CAAC,KAAA,KAAU,KAAM,CAAA,QAAA,EAAW,CAAA,UAAA,CAAW,OAAO,CAAC,CACnE,GAAA,YAAA,CAAA;AACN,CAAA,CAAA;AAca,MAAA,eAAA,GAAkB,CAC7B,KACA,EAAA,MAAA,EACA,YAEA,IAAI,OAAA,CAAQ,CAAC,OAAY,KAAA;AACvB,EAAA,MAAM,YAAe,GAAA,eAAA,CAAgB,KAAO,EAAA,MAAA,EAAQ,OAAO,CAAA,CAAA;AAC3D,EAAM,MAAA,MAAA,GACJ,aAAa,MAAS,GAAA,EAAA,GAClB,cAAc,KAAM,CAAA,CAAA,EAAG,EAAE,CAAA,CAAE,GAAI,CAAA,CAAC,MAAM,CAAE,CAAA,QAAA,EAAU,CAClD,GAAA,YAAA,CAAa,IAAI,CAAC,CAAA,KAAM,CAAE,CAAA,QAAA,EAAU,CAAA,CAAA;AAC1C,EAAA,UAAA,CAAW,MAAM,OAAA,CAAQ,MAAM,CAAA,EAAG,GAAG,CAAA,CAAA;AACvC,CAAC;;;;"}
|
package/esm/schemas.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { schemas as schemas$1 } from './basket/basket-schemas.js';
|
|
2
|
+
import { schemas as schemas$2 } from './simul/simul-schemas.js';
|
|
3
|
+
import { schemas as schemas$3 } from './test/test-schemas.js';
|
|
4
|
+
|
|
5
|
+
const schemas = {
|
|
6
|
+
...schemas$1,
|
|
7
|
+
...schemas$2,
|
|
8
|
+
...schemas$3
|
|
9
|
+
};
|
|
10
|
+
const allSchemas = {
|
|
11
|
+
...schemas$1,
|
|
12
|
+
...schemas$2,
|
|
13
|
+
...schemas$3
|
|
14
|
+
};
|
|
15
|
+
const getAllSchemas = () => schemas;
|
|
16
|
+
const getSchema = (tableName) => {
|
|
17
|
+
if (allSchemas[tableName]) {
|
|
18
|
+
return allSchemas[tableName];
|
|
19
|
+
}
|
|
20
|
+
throw Error(`getSchema no schema for table ${tableName}`);
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export { getAllSchemas, getSchema, schemas };
|
|
24
|
+
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sources":["../src/schemas.ts"],"sourcesContent":["import { TableSchema } from \"@vuu-ui/vuu-data-types\";\nimport {\n type BasketsTableName,\n schemas as basketSchemas,\n} from \"./basket/basket-schemas\";\nimport {\n type SimulTableName,\n schemas as simulSchemas,\n} from \"./simul/simul-schemas\";\nimport {\n type TestTableName,\n schemas as testSchemas,\n} from \"./test/test-schemas\";\n\nexport type VuuTableName = BasketsTableName | SimulTableName | TestTableName;\nexport const schemas: Record<VuuTableName, TableSchema> = {\n ...basketSchemas,\n ...simulSchemas,\n ...testSchemas,\n};\n\nconst allSchemas: Readonly<Record<VuuTableName, Readonly<TableSchema>>> = {\n ...basketSchemas,\n ...simulSchemas,\n ...testSchemas,\n};\n\nexport const getAllSchemas = () => schemas;\n\nexport const getSchema = (tableName: VuuTableName) => {\n if (allSchemas[tableName]) {\n return allSchemas[tableName];\n }\n throw Error(`getSchema no schema for table ${tableName}`);\n};\n"],"names":["basketSchemas","simulSchemas","testSchemas"],"mappings":";;;;AAeO,MAAM,OAA6C,GAAA;AAAA,EACxD,GAAGA,SAAA;AAAA,EACH,GAAGC,SAAA;AAAA,EACH,GAAGC,SAAA;AACL,EAAA;AAEA,MAAM,UAAoE,GAAA;AAAA,EACxE,GAAGF,SAAA;AAAA,EACH,GAAGC,SAAA;AAAA,EACH,GAAGC,SAAA;AACL,CAAA,CAAA;AAEO,MAAM,gBAAgB,MAAM,QAAA;AAEtB,MAAA,SAAA,GAAY,CAAC,SAA4B,KAAA;AACpD,EAAI,IAAA,UAAA,CAAW,SAAS,CAAG,EAAA;AACzB,IAAA,OAAO,WAAW,SAAS,CAAA,CAAA;AAAA,GAC7B;AACA,EAAM,MAAA,KAAA,CAAM,CAAiC,8BAAA,EAAA,SAAS,CAAE,CAAA,CAAA,CAAA;AAC1D;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"currencies.js","sources":["../../../src/simul/reference-data/currencies.ts"],"sourcesContent":["export const currencies = [\"CAD\", \"GBX\", \"USD\", \"EUR\", \"GBP\"];\n"],"names":[],"mappings":"AAAO,MAAM,aAAa,CAAC,KAAA,EAAO,KAAO,EAAA,KAAA,EAAO,OAAO,KAAK;;;;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { random } from '../../data-utils.js';
|
|
2
|
+
import { Table, buildDataColumnMap } from '../../Table.js';
|
|
3
|
+
import { schemas } from '../simul-schemas.js';
|
|
4
|
+
import { instrumentsData } from './instruments.js';
|
|
5
|
+
|
|
6
|
+
const instrumentsExtendedData = instrumentsData.map(
|
|
7
|
+
(row) => row.slice(0, -1).concat([random(0, 1) === 1, random(0, 1) === 1, (/* @__PURE__ */ new Date()).getTime()])
|
|
8
|
+
);
|
|
9
|
+
const instrumentsExtendedTable = new Table(
|
|
10
|
+
schemas.instrumentsExtended,
|
|
11
|
+
instrumentsExtendedData,
|
|
12
|
+
buildDataColumnMap(schemas.instrumentsExtended)
|
|
13
|
+
);
|
|
14
|
+
|
|
15
|
+
export { instrumentsExtendedTable };
|
|
16
|
+
//# sourceMappingURL=instruments-extended.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instruments-extended.js","sources":["../../../src/simul/reference-data/instruments-extended.ts"],"sourcesContent":["import { VuuRowDataItemType } from \"@vuu-ui/vuu-protocol-types\";\nimport { random } from \"../../data-utils\";\nimport { buildDataColumnMap, Table } from \"../../Table\";\nimport { schemas } from \"../simul-schemas\";\nimport { instrumentsData } from \"./instruments\";\n\nconst instrumentsExtendedData = instrumentsData.map((row) =>\n (row as VuuRowDataItemType[])\n .slice(0, -1)\n .concat([random(0, 1) === 1, random(0, 1) === 1, new Date().getTime()])\n);\n\nexport const instrumentsExtendedTable = new Table(\n schemas.instrumentsExtended,\n instrumentsExtendedData,\n buildDataColumnMap(schemas.instrumentsExtended)\n);\n"],"names":[],"mappings":";;;;;AAMA,MAAM,0BAA0B,eAAgB,CAAA,GAAA;AAAA,EAAI,CAAC,GAClD,KAAA,GAAA,CACE,KAAM,CAAA,CAAA,EAAG,EAAE,CACX,CAAA,MAAA,CAAO,CAAC,MAAA,CAAO,CAAG,EAAA,CAAC,MAAM,CAAG,EAAA,MAAA,CAAO,CAAG,EAAA,CAAC,CAAM,KAAA,CAAA,EAAA,qBAAO,IAAK,EAAA,EAAE,OAAQ,EAAC,CAAC,CAAA;AAC1E,CAAA,CAAA;AAEO,MAAM,2BAA2B,IAAI,KAAA;AAAA,EAC1C,OAAQ,CAAA,mBAAA;AAAA,EACR,uBAAA;AAAA,EACA,kBAAA,CAAmB,QAAQ,mBAAmB,CAAA;AAChD;;;;"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { isinGenerator } from '@thomaschaplin/isin-generator';
|
|
2
|
+
import { currencies } from './currencies.js';
|
|
3
|
+
import { suffixes, locations } from './locations.js';
|
|
4
|
+
import { lotsizes } from './lotsizes.js';
|
|
5
|
+
import { random } from '../../data-utils.js';
|
|
6
|
+
import { Table, buildDataColumnMap } from '../../Table.js';
|
|
7
|
+
import { schemas } from '../simul-schemas.js';
|
|
8
|
+
|
|
9
|
+
const InstrumentColumnMap = {
|
|
10
|
+
bbg: 0,
|
|
11
|
+
currency: 1,
|
|
12
|
+
description: 2,
|
|
13
|
+
exchange: 3,
|
|
14
|
+
string: 4,
|
|
15
|
+
number: 5,
|
|
16
|
+
ric: 6,
|
|
17
|
+
price: 7
|
|
18
|
+
};
|
|
19
|
+
const instrumentsData = [];
|
|
20
|
+
const chars1 = Array.from("ABCEFGHKMN");
|
|
21
|
+
const chars2 = Array.from("ABCEFGHKMN");
|
|
22
|
+
const chars3 = Array.from("OPQRTUVWYZ");
|
|
23
|
+
const chars4 = Array.from("OPQRTUVWYZ");
|
|
24
|
+
const randomPrice = () => {
|
|
25
|
+
const price = random(0, 1e4);
|
|
26
|
+
const multiplier = random(1, 10);
|
|
27
|
+
return price / multiplier;
|
|
28
|
+
};
|
|
29
|
+
let count = 0;
|
|
30
|
+
for (const char1 of chars1) {
|
|
31
|
+
for (const char2 of chars2) {
|
|
32
|
+
for (const char3 of chars3) {
|
|
33
|
+
for (const char4 of chars4) {
|
|
34
|
+
const suffix = suffixes[count % 8];
|
|
35
|
+
const ric = char1 + char2 + char3 + char4 + "." + suffix;
|
|
36
|
+
const bbg = char1 + char2 + char3 + char4 + " " + suffix;
|
|
37
|
+
const description = `${ric} description`;
|
|
38
|
+
const currency = currencies[random(0, 4)];
|
|
39
|
+
const isin = isinGenerator();
|
|
40
|
+
const lotSize = lotsizes[random(0, lotsizes.length - 1)];
|
|
41
|
+
const exchange = locations[suffix][1];
|
|
42
|
+
const price = randomPrice();
|
|
43
|
+
instrumentsData.push([
|
|
44
|
+
bbg,
|
|
45
|
+
currency,
|
|
46
|
+
description,
|
|
47
|
+
exchange,
|
|
48
|
+
String(isin),
|
|
49
|
+
lotSize,
|
|
50
|
+
ric,
|
|
51
|
+
price
|
|
52
|
+
]);
|
|
53
|
+
count++;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const getRic = (defaultRic) => {
|
|
59
|
+
const row = instrumentsData.at(random(0, instrumentsData.length));
|
|
60
|
+
return row?.[InstrumentColumnMap.ric] ?? defaultRic;
|
|
61
|
+
};
|
|
62
|
+
const instrumentsTable = new Table(
|
|
63
|
+
schemas.instruments,
|
|
64
|
+
instrumentsData,
|
|
65
|
+
buildDataColumnMap(schemas.instruments)
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
export { InstrumentColumnMap, getRic, instrumentsData, instrumentsTable };
|
|
69
|
+
//# sourceMappingURL=instruments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instruments.js","sources":["../../../src/simul/reference-data/instruments.ts"],"sourcesContent":["import { isinGenerator } from \"@thomaschaplin/isin-generator\";\nimport { currencies } from \"./currencies\";\nimport { locations, suffixes } from \"./locations\";\nimport { lotsizes } from \"./lotsizes\";\nimport { random } from \"../../data-utils\";\nimport { buildDataColumnMap, Table } from \"../../Table\";\nimport { schemas } from \"../simul-schemas\";\n\nexport type bbg = string;\nexport type currency = string;\nexport type ric = string;\nexport type description = string;\nexport type exchange = string;\n// seed for price generation\nexport type price = number;\n\nexport type InstrumentsDataRow = [\n bbg,\n currency,\n description,\n exchange,\n string,\n number,\n ric,\n price\n];\n\nexport const InstrumentColumnMap = {\n bbg: 0,\n currency: 1,\n description: 2,\n exchange: 3,\n string: 4,\n number: 5,\n ric: 6,\n price: 7,\n} as const;\n\nconst instrumentsData: InstrumentsDataRow[] = [];\n\nconst chars1 = Array.from(\"ABCEFGHKMN\");\nconst chars2 = Array.from(\"ABCEFGHKMN\");\nconst chars3 = Array.from(\"OPQRTUVWYZ\");\nconst chars4 = Array.from(\"OPQRTUVWYZ\");\n\nconst randomPrice = () => {\n const price = random(0, 10000);\n const multiplier = random(1, 10);\n return price / multiplier;\n};\n\n// const start = performance.now();\n// Create 10_000 Instruments\nlet count = 0;\nfor (const char1 of chars1) {\n for (const char2 of chars2) {\n for (const char3 of chars3) {\n for (const char4 of chars4) {\n const suffix = suffixes[count % 8];\n const ric = char1 + char2 + char3 + char4 + \".\" + suffix;\n const bbg = char1 + char2 + char3 + char4 + \" \" + suffix;\n const description = `${ric} description`;\n const currency = currencies[random(0, 4)];\n const isin = isinGenerator();\n const lotSize = lotsizes[random(0, lotsizes.length - 1)];\n\n const exchange = locations[suffix][1];\n const price = randomPrice();\n\n instrumentsData.push([\n bbg,\n currency,\n description,\n exchange,\n String(isin),\n lotSize,\n ric,\n price,\n ]);\n count++;\n }\n }\n }\n}\n\n// const end = performance.now();\n// console.log(`generating 10,000 instruments took ${end - start} ms`);\n\nexport const getRic = (defaultRic: string) => {\n const row = instrumentsData.at(random(0, instrumentsData.length));\n return row?.[InstrumentColumnMap.ric] ?? defaultRic;\n};\n\nexport const instrumentsTable = new Table(\n schemas.instruments,\n instrumentsData,\n buildDataColumnMap(schemas.instruments)\n);\n\nexport { instrumentsData };\n"],"names":[],"mappings":";;;;;;;;AA2BO,MAAM,mBAAsB,GAAA;AAAA,EACjC,GAAK,EAAA,CAAA;AAAA,EACL,QAAU,EAAA,CAAA;AAAA,EACV,WAAa,EAAA,CAAA;AAAA,EACb,QAAU,EAAA,CAAA;AAAA,EACV,MAAQ,EAAA,CAAA;AAAA,EACR,MAAQ,EAAA,CAAA;AAAA,EACR,GAAK,EAAA,CAAA;AAAA,EACL,KAAO,EAAA,CAAA;AACT,EAAA;AAEA,MAAM,kBAAwC,GAAC;AAE/C,MAAM,MAAA,GAAS,KAAM,CAAA,IAAA,CAAK,YAAY,CAAA,CAAA;AACtC,MAAM,MAAA,GAAS,KAAM,CAAA,IAAA,CAAK,YAAY,CAAA,CAAA;AACtC,MAAM,MAAA,GAAS,KAAM,CAAA,IAAA,CAAK,YAAY,CAAA,CAAA;AACtC,MAAM,MAAA,GAAS,KAAM,CAAA,IAAA,CAAK,YAAY,CAAA,CAAA;AAEtC,MAAM,cAAc,MAAM;AACxB,EAAM,MAAA,KAAA,GAAQ,MAAO,CAAA,CAAA,EAAG,GAAK,CAAA,CAAA;AAC7B,EAAM,MAAA,UAAA,GAAa,MAAO,CAAA,CAAA,EAAG,EAAE,CAAA,CAAA;AAC/B,EAAA,OAAO,KAAQ,GAAA,UAAA,CAAA;AACjB,CAAA,CAAA;AAIA,IAAI,KAAQ,GAAA,CAAA,CAAA;AACZ,KAAA,MAAW,SAAS,MAAQ,EAAA;AAC1B,EAAA,KAAA,MAAW,SAAS,MAAQ,EAAA;AAC1B,IAAA,KAAA,MAAW,SAAS,MAAQ,EAAA;AAC1B,MAAA,KAAA,MAAW,SAAS,MAAQ,EAAA;AAC1B,QAAM,MAAA,MAAA,GAAS,QAAS,CAAA,KAAA,GAAQ,CAAC,CAAA,CAAA;AACjC,QAAA,MAAM,GAAM,GAAA,KAAA,GAAQ,KAAQ,GAAA,KAAA,GAAQ,QAAQ,GAAM,GAAA,MAAA,CAAA;AAClD,QAAA,MAAM,GAAM,GAAA,KAAA,GAAQ,KAAQ,GAAA,KAAA,GAAQ,QAAQ,GAAM,GAAA,MAAA,CAAA;AAClD,QAAM,MAAA,WAAA,GAAc,GAAG,GAAG,CAAA,YAAA,CAAA,CAAA;AAC1B,QAAA,MAAM,QAAW,GAAA,UAAA,CAAW,MAAO,CAAA,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA;AACxC,QAAA,MAAM,OAAO,aAAc,EAAA,CAAA;AAC3B,QAAA,MAAM,UAAU,QAAS,CAAA,MAAA,CAAO,GAAG,QAAS,CAAA,MAAA,GAAS,CAAC,CAAC,CAAA,CAAA;AAEvD,QAAA,MAAM,QAAW,GAAA,SAAA,CAAU,MAAM,CAAA,CAAE,CAAC,CAAA,CAAA;AACpC,QAAA,MAAM,QAAQ,WAAY,EAAA,CAAA;AAE1B,QAAA,eAAA,CAAgB,IAAK,CAAA;AAAA,UACnB,GAAA;AAAA,UACA,QAAA;AAAA,UACA,WAAA;AAAA,UACA,QAAA;AAAA,UACA,OAAO,IAAI,CAAA;AAAA,UACX,OAAA;AAAA,UACA,GAAA;AAAA,UACA,KAAA;AAAA,SACD,CAAA,CAAA;AACD,QAAA,KAAA,EAAA,CAAA;AAAA,OACF;AAAA,KACF;AAAA,GACF;AACF,CAAA;AAKa,MAAA,MAAA,GAAS,CAAC,UAAuB,KAAA;AAC5C,EAAA,MAAM,MAAM,eAAgB,CAAA,EAAA,CAAG,OAAO,CAAG,EAAA,eAAA,CAAgB,MAAM,CAAC,CAAA,CAAA;AAChE,EAAO,OAAA,GAAA,GAAM,mBAAoB,CAAA,GAAG,CAAK,IAAA,UAAA,CAAA;AAC3C,EAAA;AAEO,MAAM,mBAAmB,IAAI,KAAA;AAAA,EAClC,OAAQ,CAAA,WAAA;AAAA,EACR,eAAA;AAAA,EACA,kBAAA,CAAmB,QAAQ,WAAW,CAAA;AACxC;;;;"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const locations = {
|
|
2
|
+
L: ["London PLC", "XLON/LSE-SETS"],
|
|
3
|
+
N: ["Corporation", "XNGS/NAS-GSM"],
|
|
4
|
+
AS: ["B.V.", "XAMS/ENA-MAIN"],
|
|
5
|
+
OQ: ["Co.", "XNYS/NYS-MAIN"],
|
|
6
|
+
PA: ["Paris", "PAR/EUR_FR"],
|
|
7
|
+
MI: ["Milan", "MIL/EUR_IT"],
|
|
8
|
+
FR: ["Frankfurt", "FR/EUR_DE"],
|
|
9
|
+
AT: ["Athens", "AT/EUR_GR"]
|
|
10
|
+
};
|
|
11
|
+
const suffixes = ["L", "N", "OQ", "AS", "PA", "MI", "FR", "AT"];
|
|
12
|
+
|
|
13
|
+
export { locations, suffixes };
|
|
14
|
+
//# sourceMappingURL=locations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locations.js","sources":["../../../src/simul/reference-data/locations.ts"],"sourcesContent":["export const locations: { [key: string]: string[] } = {\n L: [\"London PLC\", \"XLON/LSE-SETS\"],\n N: [\"Corporation\", \"XNGS/NAS-GSM\"],\n AS: [\"B.V.\", \"XAMS/ENA-MAIN\"],\n OQ: [\"Co.\", \"XNYS/NYS-MAIN\"],\n PA: [\"Paris\", \"PAR/EUR_FR\"],\n MI: [\"Milan\", \"MIL/EUR_IT\"],\n FR: [\"Frankfurt\", \"FR/EUR_DE\"],\n AT: [\"Athens\", \"AT/EUR_GR\"],\n};\nexport const suffixes = [\"L\", \"N\", \"OQ\", \"AS\", \"PA\", \"MI\", \"FR\", \"AT\"];\n"],"names":[],"mappings":"AAAO,MAAM,SAAyC,GAAA;AAAA,EACpD,CAAA,EAAG,CAAC,YAAA,EAAc,eAAe,CAAA;AAAA,EACjC,CAAA,EAAG,CAAC,aAAA,EAAe,cAAc,CAAA;AAAA,EACjC,EAAA,EAAI,CAAC,MAAA,EAAQ,eAAe,CAAA;AAAA,EAC5B,EAAA,EAAI,CAAC,KAAA,EAAO,eAAe,CAAA;AAAA,EAC3B,EAAA,EAAI,CAAC,OAAA,EAAS,YAAY,CAAA;AAAA,EAC1B,EAAA,EAAI,CAAC,OAAA,EAAS,YAAY,CAAA;AAAA,EAC1B,EAAA,EAAI,CAAC,WAAA,EAAa,WAAW,CAAA;AAAA,EAC7B,EAAA,EAAI,CAAC,QAAA,EAAU,WAAW,CAAA;AAC5B,EAAA;AACa,MAAA,QAAA,GAAW,CAAC,GAAK,EAAA,GAAA,EAAK,MAAM,IAAM,EAAA,IAAA,EAAM,IAAM,EAAA,IAAA,EAAM,IAAI;;;;"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const lotsizes = [
|
|
2
|
+
1,
|
|
3
|
+
2,
|
|
4
|
+
5,
|
|
5
|
+
10,
|
|
6
|
+
50,
|
|
7
|
+
50,
|
|
8
|
+
70,
|
|
9
|
+
100,
|
|
10
|
+
100,
|
|
11
|
+
100,
|
|
12
|
+
120,
|
|
13
|
+
150,
|
|
14
|
+
150,
|
|
15
|
+
200,
|
|
16
|
+
500,
|
|
17
|
+
700,
|
|
18
|
+
1e3,
|
|
19
|
+
2e3,
|
|
20
|
+
2500,
|
|
21
|
+
5e3,
|
|
22
|
+
1e4
|
|
23
|
+
];
|
|
24
|
+
|
|
25
|
+
export { lotsizes };
|
|
26
|
+
//# sourceMappingURL=lotsizes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lotsizes.js","sources":["../../../src/simul/reference-data/lotsizes.ts"],"sourcesContent":["export const lotsizes = [\n 1, 2, 5, 10, 50, 50, 70, 100, 100, 100, 120, 150, 150, 200, 500, 700, 1000,\n 2000, 2500, 5000, 10000,\n];\n"],"names":[],"mappings":"AAAO,MAAM,QAAW,GAAA;AAAA,EACtB,CAAA;AAAA,EAAG,CAAA;AAAA,EAAG,CAAA;AAAA,EAAG,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EACtE,GAAA;AAAA,EAAM,IAAA;AAAA,EAAM,GAAA;AAAA,EAAM,GAAA;AACpB;;;;"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { currencies } from './currencies.js';
|
|
2
|
+
import { getRic } from './instruments.js';
|
|
3
|
+
import { random } from '../../data-utils.js';
|
|
4
|
+
import { Table, buildDataColumnMap } from '../../Table.js';
|
|
5
|
+
import { schemas } from '../simul-schemas.js';
|
|
6
|
+
|
|
7
|
+
const SIDE = ["BUY", "SELL"];
|
|
8
|
+
const traders = ["Trader A", "Trader B", "Trader C"];
|
|
9
|
+
const ordersData = [];
|
|
10
|
+
const now = +/* @__PURE__ */ new Date();
|
|
11
|
+
for (let i = 0; i < 100; i++) {
|
|
12
|
+
const ccy = currencies[random(0, currencies.length - 1)];
|
|
13
|
+
const created = now;
|
|
14
|
+
const filledQuantity = 100;
|
|
15
|
+
const lastUpdate = now;
|
|
16
|
+
const orderId = `ORD${("0000" + i).slice(-4)}`;
|
|
17
|
+
const quantity = 1e3;
|
|
18
|
+
const ric = getRic("AAP.L");
|
|
19
|
+
const side = SIDE[random(0, 1)];
|
|
20
|
+
const trader = traders[random(0, traders.length - 1)];
|
|
21
|
+
ordersData.push([
|
|
22
|
+
ccy,
|
|
23
|
+
created,
|
|
24
|
+
filledQuantity,
|
|
25
|
+
lastUpdate,
|
|
26
|
+
orderId,
|
|
27
|
+
quantity,
|
|
28
|
+
ric,
|
|
29
|
+
side,
|
|
30
|
+
trader
|
|
31
|
+
]);
|
|
32
|
+
}
|
|
33
|
+
const ordersTable = new Table(
|
|
34
|
+
schemas.orders,
|
|
35
|
+
ordersData,
|
|
36
|
+
buildDataColumnMap(schemas.instruments)
|
|
37
|
+
);
|
|
38
|
+
|
|
39
|
+
export { ordersData, ordersTable };
|
|
40
|
+
//# sourceMappingURL=orders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orders.js","sources":["../../../src/simul/reference-data/orders.ts"],"sourcesContent":["import { currencies } from \"./currencies\";\nimport { getRic } from \"./instruments\";\nimport { random } from \"../../data-utils\";\nimport { buildDataColumnMap, Table } from \"../../Table\";\nimport { schemas } from \"../simul-schemas\";\n\nexport type ccy = string;\nexport type created = number;\nexport type filledQuantity = number;\nexport type lastUpdate = number;\nexport type orderId = string;\nexport type quantity = number;\nexport type ric = string;\nexport type side = string;\nexport type trader = string;\n\nconst SIDE = [\"BUY\", \"SELL\"];\nconst traders = [\"Trader A\", \"Trader B\", \"Trader C\"];\n\nexport type OrdersDataRow = [\n ccy,\n created,\n filledQuantity,\n lastUpdate,\n orderId,\n quantity,\n ric,\n side,\n trader\n];\n\nexport const OrderColumnMap = {\n ccy: 0,\n created: 1,\n filledQuantity: 2,\n lastUpdate: 3,\n orderId: 4,\n quantity: 5,\n ric: 6,\n side: 7,\n trader: 8,\n} as const;\n\nconst ordersData: OrdersDataRow[] = [];\n\n// const start = performance.now();\n// Create 10_000 Instruments\n\nconst now = +new Date();\nfor (let i = 0; i < 100; i++) {\n const ccy = currencies[random(0, currencies.length - 1)];\n const created = now;\n const filledQuantity = 100;\n const lastUpdate = now;\n const orderId = `ORD${(\"0000\" + i).slice(-4)}`;\n const quantity = 1000;\n const ric = getRic(\"AAP.L\");\n const side = SIDE[random(0, 1)];\n const trader = traders[random(0, traders.length - 1)];\n\n ordersData.push([\n ccy,\n created,\n filledQuantity,\n lastUpdate,\n orderId,\n quantity,\n ric,\n side,\n trader,\n ]);\n}\n// const end = performance.now();\n// console.log(`generating 10,000 instruments took ${end - start} ms`);\n\nexport const ordersTable = new Table(\n schemas.orders,\n ordersData,\n buildDataColumnMap(schemas.instruments)\n);\n\nexport { ordersData };\n"],"names":[],"mappings":";;;;;;AAgBA,MAAM,IAAA,GAAO,CAAC,KAAA,EAAO,MAAM,CAAA,CAAA;AAC3B,MAAM,OAAU,GAAA,CAAC,UAAY,EAAA,UAAA,EAAY,UAAU,CAAA,CAAA;AA0BnD,MAAM,aAA8B,GAAC;AAKrC,MAAM,GAAA,GAAM,iBAAC,IAAI,IAAK,EAAA,CAAA;AACtB,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,GAAA,EAAK,CAAK,EAAA,EAAA;AAC5B,EAAA,MAAM,MAAM,UAAW,CAAA,MAAA,CAAO,GAAG,UAAW,CAAA,MAAA,GAAS,CAAC,CAAC,CAAA,CAAA;AACvD,EAAA,MAAM,OAAU,GAAA,GAAA,CAAA;AAChB,EAAA,MAAM,cAAiB,GAAA,GAAA,CAAA;AACvB,EAAA,MAAM,UAAa,GAAA,GAAA,CAAA;AACnB,EAAA,MAAM,UAAU,CAAO,GAAA,EAAA,CAAA,MAAA,GAAS,CAAG,EAAA,KAAA,CAAM,EAAE,CAAC,CAAA,CAAA,CAAA;AAC5C,EAAA,MAAM,QAAW,GAAA,GAAA,CAAA;AACjB,EAAM,MAAA,GAAA,GAAM,OAAO,OAAO,CAAA,CAAA;AAC1B,EAAA,MAAM,IAAO,GAAA,IAAA,CAAK,MAAO,CAAA,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA;AAC9B,EAAA,MAAM,SAAS,OAAQ,CAAA,MAAA,CAAO,GAAG,OAAQ,CAAA,MAAA,GAAS,CAAC,CAAC,CAAA,CAAA;AAEpD,EAAA,UAAA,CAAW,IAAK,CAAA;AAAA,IACd,GAAA;AAAA,IACA,OAAA;AAAA,IACA,cAAA;AAAA,IACA,UAAA;AAAA,IACA,OAAA;AAAA,IACA,QAAA;AAAA,IACA,GAAA;AAAA,IACA,IAAA;AAAA,IACA,MAAA;AAAA,GACD,CAAA,CAAA;AACH,CAAA;AAIO,MAAM,cAAc,IAAI,KAAA;AAAA,EAC7B,OAAQ,CAAA,MAAA;AAAA,EACR,UAAA;AAAA,EACA,kBAAA,CAAmB,QAAQ,WAAW,CAAA;AACxC;;;;"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { buildDataColumnMap, Table } from '../../Table.js';
|
|
2
|
+
import { BaseUpdateGenerator } from '../../UpdateGenerator.js';
|
|
3
|
+
import { schemas } from '../simul-schemas.js';
|
|
4
|
+
import { instrumentsData, InstrumentColumnMap } from './instruments.js';
|
|
5
|
+
import { random } from '../../data-utils.js';
|
|
6
|
+
import basketConstituentData from '../../basket/reference-data/constituents.js';
|
|
7
|
+
|
|
8
|
+
const { bid, bidSize, ask, askSize } = buildDataColumnMap(schemas.prices);
|
|
9
|
+
const pricesUpdateGenerator = new BaseUpdateGenerator({
|
|
10
|
+
bid,
|
|
11
|
+
bidSize,
|
|
12
|
+
ask,
|
|
13
|
+
askSize
|
|
14
|
+
});
|
|
15
|
+
const requiredInstrumentFields = ["ric", "price"];
|
|
16
|
+
const pricesData = instrumentsData.map((instrument) => {
|
|
17
|
+
const { ric, price: priceSeed } = requiredInstrumentFields.reduce(
|
|
18
|
+
(obj, f) => ({ ...obj, [f]: instrument[InstrumentColumnMap[f]] }),
|
|
19
|
+
{}
|
|
20
|
+
);
|
|
21
|
+
const spread = random(0, 10);
|
|
22
|
+
const ask2 = priceSeed + spread / 2;
|
|
23
|
+
const askSize2 = random(1e3, 3e3);
|
|
24
|
+
const bid2 = priceSeed - spread / 2;
|
|
25
|
+
const bidSize2 = random(1e3, 3e3);
|
|
26
|
+
const close = priceSeed + random(0, 1) / 10;
|
|
27
|
+
const last = priceSeed + random(0, 1) / 10;
|
|
28
|
+
const open = priceSeed + random(0, 1) / 10;
|
|
29
|
+
const phase = "C";
|
|
30
|
+
const scenario = "close";
|
|
31
|
+
return [ask2, askSize2, bid2, bidSize2, close, last, open, phase, ric, scenario];
|
|
32
|
+
});
|
|
33
|
+
for (const [, , , lastTrade, ric] of basketConstituentData) {
|
|
34
|
+
const priceSeed = parseFloat(String(lastTrade));
|
|
35
|
+
if (!isNaN(priceSeed)) {
|
|
36
|
+
const spread = random(0, 10);
|
|
37
|
+
const ask2 = priceSeed + spread / 2;
|
|
38
|
+
const askSize2 = random(1e3, 3e3);
|
|
39
|
+
const bid2 = priceSeed - spread / 2;
|
|
40
|
+
const bidSize2 = random(1e3, 3e3);
|
|
41
|
+
const close = priceSeed + random(0, 1) / 10;
|
|
42
|
+
const last = priceSeed + random(0, 1) / 10;
|
|
43
|
+
const open = priceSeed + random(0, 1) / 10;
|
|
44
|
+
const phase = "C";
|
|
45
|
+
const scenario = "close";
|
|
46
|
+
pricesData.push([
|
|
47
|
+
ask2,
|
|
48
|
+
askSize2,
|
|
49
|
+
bid2,
|
|
50
|
+
bidSize2,
|
|
51
|
+
close,
|
|
52
|
+
last,
|
|
53
|
+
open,
|
|
54
|
+
phase,
|
|
55
|
+
ric,
|
|
56
|
+
scenario
|
|
57
|
+
]);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const pricesTable = new Table(
|
|
61
|
+
schemas.prices,
|
|
62
|
+
pricesData,
|
|
63
|
+
buildDataColumnMap(schemas.prices),
|
|
64
|
+
pricesUpdateGenerator
|
|
65
|
+
);
|
|
66
|
+
|
|
67
|
+
export { pricesData, pricesTable };
|
|
68
|
+
//# sourceMappingURL=prices.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prices.js","sources":["../../../src/simul/reference-data/prices.ts"],"sourcesContent":["import { buildDataColumnMap, Table } from \"../../Table\";\nimport { BaseUpdateGenerator } from \"../../UpdateGenerator\";\nimport { schemas } from \"../simul-schemas\";\nimport { instrumentsData, InstrumentColumnMap } from \"./instruments\";\nimport { random } from \"../../data-utils\";\nimport basketConstituentData from \"../../basket/reference-data/constituents\";\n\ntype ask = number;\ntype askSize = number;\ntype bid = number;\ntype bidSize = number;\ntype close = number;\ntype last = number;\ntype open = number;\ntype phase = \"C\";\ntype ric = string;\ntype scenario = \"close\";\n\nexport type PricesDataRow = [\n ask,\n askSize,\n bid,\n bidSize,\n close,\n last,\n open,\n phase,\n ric,\n scenario\n];\n\nconst { bid, bidSize, ask, askSize } = buildDataColumnMap(schemas.prices);\nconst pricesUpdateGenerator = new BaseUpdateGenerator({\n bid,\n bidSize,\n ask,\n askSize,\n});\n\n// const start = performance.now();\n// Create 100_000 Instruments\nconst requiredInstrumentFields = [\"ric\", \"price\"] as const;\nconst pricesData: Array<PricesDataRow> = instrumentsData.map((instrument) => {\n const { ric, price: priceSeed } = requiredInstrumentFields.reduce(\n (obj, f) => ({ ...obj, [f]: instrument[InstrumentColumnMap[f]] }),\n {} as { ric: string; price: number }\n );\n const spread = random(0, 10);\n\n const ask = priceSeed + spread / 2;\n const askSize = random(1000, 3000);\n const bid = priceSeed - spread / 2;\n const bidSize = random(1000, 3000);\n const close = priceSeed + random(0, 1) / 10;\n const last = priceSeed + random(0, 1) / 10;\n const open = priceSeed + random(0, 1) / 10;\n const phase = \"C\";\n const scenario = \"close\";\n return [ask, askSize, bid, bidSize, close, last, open, phase, ric, scenario];\n});\n\n// prettier-ignore\nfor (const [,,,lastTrade,ric] of basketConstituentData) {\n const priceSeed = parseFloat(String(lastTrade));\n if (!isNaN(priceSeed)) {\n const spread = random(0, 10);\n const ask = priceSeed + spread / 2;\n const askSize = random(1000, 3000);\n const bid = priceSeed - spread / 2;\n const bidSize = random(1000, 3000);\n const close = priceSeed + random(0, 1) / 10;\n const last = priceSeed + random(0, 1) / 10;\n const open = priceSeed + random(0, 1) / 10;\n const phase = \"C\";\n const scenario = \"close\";\n pricesData.push([\n ask,\n askSize,\n bid,\n bidSize,\n close,\n last,\n open,\n phase,\n ric as string,\n scenario,\n ]);\n }\n}\n\n// const end = performance.now();\n// console.log(`generating 100,000 prices took ${end - start} ms`);\n\nexport const pricesTable = new Table(\n schemas.prices,\n pricesData,\n buildDataColumnMap(schemas.prices),\n pricesUpdateGenerator\n);\n\nexport { pricesData };\n"],"names":["ask","askSize","bid","bidSize"],"mappings":"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"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { makeSuggestions } from '../makeSuggestions.js';
|
|
2
|
+
import { Table, buildDataColumnMap, joinTables } from '../Table.js';
|
|
3
|
+
import { TickingArrayDataSource } from '../TickingArrayDataSource.js';
|
|
4
|
+
import { instrumentsTable } from './reference-data/instruments.js';
|
|
5
|
+
import { instrumentsExtendedTable } from './reference-data/instruments-extended.js';
|
|
6
|
+
import { ordersTable } from './reference-data/orders.js';
|
|
7
|
+
import { pricesTable } from './reference-data/prices.js';
|
|
8
|
+
import { schemas } from './simul-schemas.js';
|
|
9
|
+
|
|
10
|
+
const tables = {
|
|
11
|
+
childOrders: new Table(
|
|
12
|
+
schemas.childOrders,
|
|
13
|
+
[],
|
|
14
|
+
buildDataColumnMap(schemas.childOrders)
|
|
15
|
+
),
|
|
16
|
+
instruments: instrumentsTable,
|
|
17
|
+
instrumentsExtended: instrumentsExtendedTable,
|
|
18
|
+
instrumentPrices: joinTables(
|
|
19
|
+
{ module: "SIMUL", table: "instrumentPrices" },
|
|
20
|
+
instrumentsTable,
|
|
21
|
+
pricesTable,
|
|
22
|
+
"ric"
|
|
23
|
+
),
|
|
24
|
+
orders: ordersTable,
|
|
25
|
+
parentOrders: new Table(
|
|
26
|
+
schemas.parentOrders,
|
|
27
|
+
[],
|
|
28
|
+
buildDataColumnMap(schemas.parentOrders)
|
|
29
|
+
),
|
|
30
|
+
prices: pricesTable
|
|
31
|
+
};
|
|
32
|
+
const getColumnDescriptors = (tableName) => {
|
|
33
|
+
const schema = schemas[tableName];
|
|
34
|
+
if (schema) {
|
|
35
|
+
return schema.columns;
|
|
36
|
+
} else {
|
|
37
|
+
throw Error(`simul-module no schema found for table SIMUL ${tableName}`);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
const menus = {
|
|
41
|
+
childOrders: void 0,
|
|
42
|
+
instruments: {
|
|
43
|
+
name: "ROOT",
|
|
44
|
+
menus: [
|
|
45
|
+
{
|
|
46
|
+
context: "selected-rows",
|
|
47
|
+
filter: "",
|
|
48
|
+
name: "Add Instruments To Order",
|
|
49
|
+
rpcName: "ADD_INSTRUMENTS_TO_ORDER"
|
|
50
|
+
}
|
|
51
|
+
]
|
|
52
|
+
},
|
|
53
|
+
instrumentsExtended: void 0,
|
|
54
|
+
instrumentPrices: void 0,
|
|
55
|
+
orders: void 0,
|
|
56
|
+
parentOrders: void 0,
|
|
57
|
+
prices: void 0
|
|
58
|
+
};
|
|
59
|
+
async function addInstrumentsToOrder() {
|
|
60
|
+
new Table(
|
|
61
|
+
schemas.instruments,
|
|
62
|
+
[],
|
|
63
|
+
buildDataColumnMap(schemas.instruments)
|
|
64
|
+
);
|
|
65
|
+
return {
|
|
66
|
+
action: {
|
|
67
|
+
renderComponent: "grid",
|
|
68
|
+
table: {
|
|
69
|
+
module: "SIMUL",
|
|
70
|
+
table: "session-table-1"
|
|
71
|
+
},
|
|
72
|
+
type: "OPEN_DIALOG_ACTION"
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
const services = {
|
|
77
|
+
childOrders: void 0,
|
|
78
|
+
instruments: [
|
|
79
|
+
{
|
|
80
|
+
rpcName: "ADD_INSTRUMENTS_TO_ORDER",
|
|
81
|
+
service: addInstrumentsToOrder
|
|
82
|
+
}
|
|
83
|
+
],
|
|
84
|
+
instrumentsExtended: void 0,
|
|
85
|
+
instrumentPrices: void 0,
|
|
86
|
+
orders: void 0,
|
|
87
|
+
parentOrders: void 0,
|
|
88
|
+
prices: void 0
|
|
89
|
+
};
|
|
90
|
+
const createDataSource = (tableName) => {
|
|
91
|
+
const columnDescriptors = getColumnDescriptors(tableName);
|
|
92
|
+
return new TickingArrayDataSource({
|
|
93
|
+
columnDescriptors,
|
|
94
|
+
keyColumn: schemas[tableName].key,
|
|
95
|
+
table: tables[tableName],
|
|
96
|
+
menu: menus[tableName],
|
|
97
|
+
rpcServices: services[tableName]
|
|
98
|
+
});
|
|
99
|
+
};
|
|
100
|
+
const suggestionFetcher = ([
|
|
101
|
+
vuuTable,
|
|
102
|
+
column,
|
|
103
|
+
pattern
|
|
104
|
+
]) => {
|
|
105
|
+
const table = tables[vuuTable.table];
|
|
106
|
+
if (table) {
|
|
107
|
+
return makeSuggestions(table, column, pattern);
|
|
108
|
+
} else {
|
|
109
|
+
throw Error(
|
|
110
|
+
`SIMUL suggestionFetcher, unknown table ${vuuTable.module} ${vuuTable.table}`
|
|
111
|
+
);
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
const simulModule = {
|
|
115
|
+
createDataSource,
|
|
116
|
+
typeaheadHook: () => suggestionFetcher
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
export { simulModule };
|
|
120
|
+
//# sourceMappingURL=simul-module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simul-module.js","sources":["../../src/simul/simul-module.ts"],"sourcesContent":["import { SuggestionFetcher } from \"@vuu-ui/vuu-data-types\";\nimport { TypeaheadParams, VuuMenu } from \"@vuu-ui/vuu-protocol-types\";\nimport { makeSuggestions } from \"../makeSuggestions\";\nimport { buildDataColumnMap, joinTables, Table } from \"../Table\";\nimport { TickingArrayDataSource } from \"../TickingArrayDataSource\";\nimport type { VuuModule } from \"../vuu-modules\";\nimport { instrumentsTable } from \"./reference-data/instruments\";\nimport { instrumentsExtendedTable } from \"./reference-data/instruments-extended\";\nimport { ordersTable } from \"./reference-data/orders\";\nimport { pricesTable } from \"./reference-data/prices\";\nimport { schemas, type SimulTableName } from \"./simul-schemas\";\n\ntype RpcService = {\n rpcName: string;\n service: (rpcRequest: any) => Promise<unknown>;\n};\n\nconst sessionTables: Record<string, Table> = {};\n\nconst tables: Record<SimulTableName, Table> = {\n childOrders: new Table(\n schemas.childOrders,\n [],\n buildDataColumnMap(schemas.childOrders)\n ),\n instruments: instrumentsTable,\n instrumentsExtended: instrumentsExtendedTable,\n instrumentPrices: joinTables(\n { module: \"SIMUL\", table: \"instrumentPrices\" },\n instrumentsTable,\n pricesTable,\n \"ric\"\n ),\n orders: ordersTable,\n parentOrders: new Table(\n schemas.parentOrders,\n [],\n buildDataColumnMap(schemas.parentOrders)\n ),\n prices: pricesTable,\n};\n\nconst getColumnDescriptors = (tableName: SimulTableName) => {\n const schema = schemas[tableName];\n if (schema) {\n return schema.columns;\n } else {\n throw Error(`simul-module no schema found for table SIMUL ${tableName}`);\n }\n};\n\nconst menus: Record<SimulTableName, VuuMenu | undefined> = {\n childOrders: undefined,\n instruments: {\n name: \"ROOT\",\n menus: [\n {\n context: \"selected-rows\",\n filter: \"\",\n name: \"Add Instruments To Order\",\n rpcName: \"ADD_INSTRUMENTS_TO_ORDER\",\n },\n ],\n },\n instrumentsExtended: undefined,\n instrumentPrices: undefined,\n orders: undefined,\n parentOrders: undefined,\n prices: undefined,\n};\n\nasync function addInstrumentsToOrder(/*rpcRequest: unknown*/) {\n // create a `session table`,\n // populate with selected Instruments\n // sens subscriptionn details to user\n\n const sessionTableId = \"session-table-1\";\n sessionTables[sessionTableId] = new Table(\n schemas.instruments,\n [],\n buildDataColumnMap(schemas.instruments)\n );\n\n return {\n action: {\n renderComponent: \"grid\",\n table: {\n module: \"SIMUL\",\n table: \"session-table-1\",\n },\n type: \"OPEN_DIALOG_ACTION\",\n },\n };\n}\n\nconst services: Record<SimulTableName, RpcService[] | undefined> = {\n childOrders: undefined,\n instruments: [\n {\n rpcName: \"ADD_INSTRUMENTS_TO_ORDER\",\n service: addInstrumentsToOrder,\n },\n ],\n instrumentsExtended: undefined,\n instrumentPrices: undefined,\n orders: undefined,\n parentOrders: undefined,\n prices: undefined,\n};\n\nconst createDataSource = (tableName: SimulTableName) => {\n const columnDescriptors = getColumnDescriptors(tableName);\n return new TickingArrayDataSource({\n columnDescriptors,\n keyColumn: schemas[tableName].key,\n table: tables[tableName],\n menu: menus[tableName],\n rpcServices: services[tableName],\n });\n};\n\nconst suggestionFetcher: SuggestionFetcher = ([\n vuuTable,\n column,\n pattern,\n]: TypeaheadParams) => {\n const table = tables[vuuTable.table as SimulTableName];\n if (table) {\n return makeSuggestions(table, column, pattern);\n } else {\n throw Error(\n `SIMUL suggestionFetcher, unknown table ${vuuTable.module} ${vuuTable.table}`\n );\n }\n};\n\nexport const simulModule: VuuModule<SimulTableName> = {\n createDataSource,\n typeaheadHook: () => suggestionFetcher,\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
const schemas = {
|
|
2
|
+
instruments: {
|
|
3
|
+
columns: [
|
|
4
|
+
{ name: "bbg", serverDataType: "string" },
|
|
5
|
+
{ name: "currency", serverDataType: "string" },
|
|
6
|
+
{ name: "description", serverDataType: "string" },
|
|
7
|
+
{ name: "exchange", serverDataType: "string" },
|
|
8
|
+
{ name: "isin", serverDataType: "string" },
|
|
9
|
+
{ name: "lotSize", serverDataType: "int" },
|
|
10
|
+
{ name: "ric", serverDataType: "string" }
|
|
11
|
+
],
|
|
12
|
+
key: "ric",
|
|
13
|
+
table: { module: "SIMUL", table: "instruments" }
|
|
14
|
+
},
|
|
15
|
+
instrumentsExtended: {
|
|
16
|
+
columns: [
|
|
17
|
+
{ name: "bbg", serverDataType: "string" },
|
|
18
|
+
{ name: "currency", serverDataType: "string" },
|
|
19
|
+
{ name: "description", serverDataType: "string" },
|
|
20
|
+
{ name: "exchange", serverDataType: "string" },
|
|
21
|
+
{ name: "isin", serverDataType: "string" },
|
|
22
|
+
{ name: "lotSize", serverDataType: "int" },
|
|
23
|
+
{ name: "ric", serverDataType: "string" },
|
|
24
|
+
{ name: "supported", serverDataType: "boolean" },
|
|
25
|
+
{ name: "wishlist", serverDataType: "boolean" },
|
|
26
|
+
{ name: "lastUpdated", serverDataType: "long" }
|
|
27
|
+
],
|
|
28
|
+
key: "ric",
|
|
29
|
+
table: { module: "SIMUL", table: "instruments" }
|
|
30
|
+
},
|
|
31
|
+
instrumentPrices: {
|
|
32
|
+
columns: [
|
|
33
|
+
{ name: "ask", serverDataType: "double" },
|
|
34
|
+
{ name: "askSize", serverDataType: "double" },
|
|
35
|
+
// type: "int"
|
|
36
|
+
{ name: "bbg", serverDataType: "string" },
|
|
37
|
+
{ name: "bid", serverDataType: "double" },
|
|
38
|
+
{ name: "bidSize", serverDataType: "double" },
|
|
39
|
+
{ name: "close", serverDataType: "double" },
|
|
40
|
+
{ name: "currency", serverDataType: "string" },
|
|
41
|
+
{ name: "description", serverDataType: "string" },
|
|
42
|
+
{ name: "exchange", serverDataType: "string" },
|
|
43
|
+
{ name: "isin", serverDataType: "string" },
|
|
44
|
+
{ name: "last", serverDataType: "double" },
|
|
45
|
+
{ name: "lotSize", serverDataType: "int" },
|
|
46
|
+
{ name: "open", serverDataType: "double" },
|
|
47
|
+
{ name: "phase", serverDataType: "string" },
|
|
48
|
+
{ name: "ric", serverDataType: "string" },
|
|
49
|
+
{ name: "scenario", serverDataType: "string" }
|
|
50
|
+
],
|
|
51
|
+
key: "ric",
|
|
52
|
+
table: { module: "SIMUL", table: "instrumentPrices" }
|
|
53
|
+
},
|
|
54
|
+
orders: {
|
|
55
|
+
columns: [
|
|
56
|
+
{ name: "ccy", serverDataType: "string" },
|
|
57
|
+
{ name: "created", serverDataType: "long" },
|
|
58
|
+
{ name: "filledQuantity", serverDataType: "double" },
|
|
59
|
+
{ name: "lastUpdate", serverDataType: "long" },
|
|
60
|
+
{ name: "orderId", serverDataType: "string" },
|
|
61
|
+
{ name: "quantity", serverDataType: "double" },
|
|
62
|
+
{ name: "ric", serverDataType: "string" },
|
|
63
|
+
{ name: "side", serverDataType: "string" },
|
|
64
|
+
{ name: "trader", serverDataType: "string" }
|
|
65
|
+
],
|
|
66
|
+
key: "orderId",
|
|
67
|
+
table: { module: "SIMUL", table: "orders" }
|
|
68
|
+
},
|
|
69
|
+
childOrders: {
|
|
70
|
+
columns: [
|
|
71
|
+
{ name: "account", serverDataType: "string" },
|
|
72
|
+
{ name: "averagePrice", serverDataType: "double" },
|
|
73
|
+
{ name: "ccy", serverDataType: "string" },
|
|
74
|
+
{ name: "exchange", serverDataType: "string" },
|
|
75
|
+
{ name: "filledQty", serverDataType: "double" },
|
|
76
|
+
{ name: "id", serverDataType: "string" },
|
|
77
|
+
{ name: "idAsInt", serverDataType: "int" },
|
|
78
|
+
{ name: "lastUpdate", serverDataType: "long" },
|
|
79
|
+
{ name: "openQty", serverDataType: "double" },
|
|
80
|
+
{ name: "parentOrderId", serverDataType: "string" },
|
|
81
|
+
{ name: "price", serverDataType: "double" },
|
|
82
|
+
{ name: "quantity", serverDataType: "double" },
|
|
83
|
+
{ name: "ric", serverDataType: "string" },
|
|
84
|
+
{ name: "side", serverDataType: "string" },
|
|
85
|
+
{ name: "status", serverDataType: "string" },
|
|
86
|
+
{ name: "strategy", serverDataType: "string" },
|
|
87
|
+
{ name: "volLimit", serverDataType: "int" }
|
|
88
|
+
],
|
|
89
|
+
key: "id",
|
|
90
|
+
table: { module: "SIMUL", table: "childOrders" }
|
|
91
|
+
},
|
|
92
|
+
parentOrders: {
|
|
93
|
+
columns: [
|
|
94
|
+
{ name: "account", serverDataType: "string" },
|
|
95
|
+
{ name: "algo", serverDataType: "string" },
|
|
96
|
+
{ name: "averagePrice", serverDataType: "double" },
|
|
97
|
+
{ name: "ccy", serverDataType: "string" },
|
|
98
|
+
{ name: "childCount", serverDataType: "int" },
|
|
99
|
+
{ name: "exchange", serverDataType: "string" },
|
|
100
|
+
{ name: "filledQty", serverDataType: "double" },
|
|
101
|
+
{ name: "id", serverDataType: "string" },
|
|
102
|
+
{ name: "idAsInt", serverDataType: "int" },
|
|
103
|
+
{ name: "lastUpdate", serverDataType: "long" },
|
|
104
|
+
{ name: "openQty", serverDataType: "double" },
|
|
105
|
+
{ name: "price", serverDataType: "double" },
|
|
106
|
+
{ name: "quantity", serverDataType: "double" },
|
|
107
|
+
{ name: "ric", serverDataType: "string" },
|
|
108
|
+
{ name: "side", serverDataType: "string" },
|
|
109
|
+
{ name: "status", serverDataType: "string" },
|
|
110
|
+
{ name: "volLimit", serverDataType: "int" }
|
|
111
|
+
],
|
|
112
|
+
key: "id",
|
|
113
|
+
table: { module: "SIMUL", table: "parentOrders" }
|
|
114
|
+
},
|
|
115
|
+
prices: {
|
|
116
|
+
columns: [
|
|
117
|
+
{ name: "ask", serverDataType: "double" },
|
|
118
|
+
{ name: "askSize", serverDataType: "double" },
|
|
119
|
+
// type: "int"
|
|
120
|
+
{ name: "bid", serverDataType: "double" },
|
|
121
|
+
{ name: "bidSize", serverDataType: "double" },
|
|
122
|
+
{ name: "close", serverDataType: "double" },
|
|
123
|
+
{ name: "last", serverDataType: "double" },
|
|
124
|
+
{ name: "open", serverDataType: "double" },
|
|
125
|
+
{ name: "phase", serverDataType: "string" },
|
|
126
|
+
{ name: "ric", serverDataType: "string" },
|
|
127
|
+
{ name: "scenario", serverDataType: "string" }
|
|
128
|
+
],
|
|
129
|
+
key: "ric",
|
|
130
|
+
table: { module: "SIMUL", table: "prices" }
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
export { schemas };
|
|
135
|
+
//# sourceMappingURL=simul-schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"simul-schemas.js","sources":["../../src/simul/simul-schemas.ts"],"sourcesContent":["import { TableSchema } from \"@vuu-ui/vuu-data-types\";\n\nexport type SimulTableName =\n | \"instruments\"\n | \"instrumentsExtended\"\n | \"instrumentPrices\"\n | \"orders\"\n | \"childOrders\"\n | \"parentOrders\"\n | \"prices\";\n\n// These Schemas take the form of the schemas that we create\n// with TABLE_META returned by Vuu.\nexport const schemas: Readonly<Record<SimulTableName, Readonly<TableSchema>>> =\n {\n instruments: {\n columns: [\n { name: \"bbg\", serverDataType: \"string\" },\n { name: \"currency\", serverDataType: \"string\" },\n { name: \"description\", serverDataType: \"string\" },\n { name: \"exchange\", serverDataType: \"string\" },\n { name: \"isin\", serverDataType: \"string\" },\n { name: \"lotSize\", serverDataType: \"int\" },\n { name: \"ric\", serverDataType: \"string\" },\n ],\n key: \"ric\",\n table: { module: \"SIMUL\", table: \"instruments\" },\n },\n instrumentsExtended: {\n columns: [\n { name: \"bbg\", serverDataType: \"string\" },\n { name: \"currency\", serverDataType: \"string\" },\n { name: \"description\", serverDataType: \"string\" },\n { name: \"exchange\", serverDataType: \"string\" },\n { name: \"isin\", serverDataType: \"string\" },\n { name: \"lotSize\", serverDataType: \"int\" },\n { name: \"ric\", serverDataType: \"string\" },\n { name: \"supported\", serverDataType: \"boolean\" },\n { name: \"wishlist\", serverDataType: \"boolean\" },\n { name: \"lastUpdated\", serverDataType: \"long\" },\n ],\n key: \"ric\",\n table: { module: \"SIMUL\", table: \"instruments\" },\n },\n instrumentPrices: {\n columns: [\n { name: \"ask\", serverDataType: \"double\" },\n { name: \"askSize\", serverDataType: \"double\" }, // type: \"int\"\n { name: \"bbg\", serverDataType: \"string\" },\n { name: \"bid\", serverDataType: \"double\" },\n { name: \"bidSize\", serverDataType: \"double\" },\n { name: \"close\", serverDataType: \"double\" },\n { name: \"currency\", serverDataType: \"string\" },\n { name: \"description\", serverDataType: \"string\" },\n { name: \"exchange\", serverDataType: \"string\" },\n { name: \"isin\", serverDataType: \"string\" },\n { name: \"last\", serverDataType: \"double\" },\n { name: \"lotSize\", serverDataType: \"int\" },\n { name: \"open\", serverDataType: \"double\" },\n { name: \"phase\", serverDataType: \"string\" },\n { name: \"ric\", serverDataType: \"string\" },\n { name: \"scenario\", serverDataType: \"string\" },\n ],\n key: \"ric\",\n table: { module: \"SIMUL\", table: \"instrumentPrices\" },\n },\n orders: {\n columns: [\n { name: \"ccy\", serverDataType: \"string\" },\n { name: \"created\", serverDataType: \"long\" },\n { name: \"filledQuantity\", serverDataType: \"double\" },\n { name: \"lastUpdate\", serverDataType: \"long\" },\n { name: \"orderId\", serverDataType: \"string\" },\n { name: \"quantity\", serverDataType: \"double\" },\n { name: \"ric\", serverDataType: \"string\" },\n { name: \"side\", serverDataType: \"string\" },\n { name: \"trader\", serverDataType: \"string\" },\n ],\n key: \"orderId\",\n table: { module: \"SIMUL\", table: \"orders\" },\n },\n childOrders: {\n columns: [\n { name: \"account\", serverDataType: \"string\" },\n { name: \"averagePrice\", serverDataType: \"double\" },\n { name: \"ccy\", serverDataType: \"string\" },\n { name: \"exchange\", serverDataType: \"string\" },\n { name: \"filledQty\", serverDataType: \"double\" },\n { name: \"id\", serverDataType: \"string\" },\n { name: \"idAsInt\", serverDataType: \"int\" },\n { name: \"lastUpdate\", serverDataType: \"long\" },\n { name: \"openQty\", serverDataType: \"double\" },\n { name: \"parentOrderId\", serverDataType: \"string\" },\n { name: \"price\", serverDataType: \"double\" },\n { name: \"quantity\", serverDataType: \"double\" },\n { name: \"ric\", serverDataType: \"string\" },\n { name: \"side\", serverDataType: \"string\" },\n { name: \"status\", serverDataType: \"string\" },\n { name: \"strategy\", serverDataType: \"string\" },\n { name: \"volLimit\", serverDataType: \"int\" },\n ],\n key: \"id\",\n table: { module: \"SIMUL\", table: \"childOrders\" },\n },\n parentOrders: {\n columns: [\n { name: \"account\", serverDataType: \"string\" },\n { name: \"algo\", serverDataType: \"string\" },\n { name: \"averagePrice\", serverDataType: \"double\" },\n { name: \"ccy\", serverDataType: \"string\" },\n { name: \"childCount\", serverDataType: \"int\" },\n { name: \"exchange\", serverDataType: \"string\" },\n { name: \"filledQty\", serverDataType: \"double\" },\n { name: \"id\", serverDataType: \"string\" },\n { name: \"idAsInt\", serverDataType: \"int\" },\n { name: \"lastUpdate\", serverDataType: \"long\" },\n { name: \"openQty\", serverDataType: \"double\" },\n { name: \"price\", serverDataType: \"double\" },\n { name: \"quantity\", serverDataType: \"double\" },\n { name: \"ric\", serverDataType: \"string\" },\n { name: \"side\", serverDataType: \"string\" },\n { name: \"status\", serverDataType: \"string\" },\n { name: \"volLimit\", serverDataType: \"int\" },\n ],\n key: \"id\",\n table: { module: \"SIMUL\", table: \"parentOrders\" },\n },\n prices: {\n columns: [\n { name: \"ask\", serverDataType: \"double\" },\n { name: \"askSize\", serverDataType: \"double\" }, // type: \"int\"\n { name: \"bid\", serverDataType: \"double\" },\n { name: \"bidSize\", serverDataType: \"double\" },\n { name: \"close\", serverDataType: \"double\" },\n { name: \"last\", serverDataType: \"double\" },\n { name: \"open\", serverDataType: \"double\" },\n { name: \"phase\", serverDataType: \"string\" },\n { name: \"ric\", serverDataType: \"string\" },\n { name: \"scenario\", serverDataType: \"string\" },\n ],\n key: \"ric\",\n table: { module: \"SIMUL\", table: \"prices\" },\n },\n };\n"],"names":[],"mappings":"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"}
|