@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.
Files changed (155) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +0 -0
  3. package/cjs/ArrayProxy.js +80 -0
  4. package/cjs/ArrayProxy.js.map +1 -0
  5. package/cjs/Table.js +186 -0
  6. package/cjs/Table.js.map +1 -0
  7. package/cjs/TickingArrayDataSource.js +134 -0
  8. package/cjs/TickingArrayDataSource.js.map +1 -0
  9. package/cjs/UpdateGenerator.js +87 -0
  10. package/cjs/UpdateGenerator.js.map +1 -0
  11. package/cjs/basket/basket-module.js +236 -0
  12. package/cjs/basket/basket-module.js.map +1 -0
  13. package/cjs/basket/basket-schemas.js +121 -0
  14. package/cjs/basket/basket-schemas.js.map +1 -0
  15. package/cjs/basket/reference-data/constituents.js +40 -0
  16. package/cjs/basket/reference-data/constituents.js.map +1 -0
  17. package/cjs/basket/reference-data/ftse100.js +105 -0
  18. package/cjs/basket/reference-data/ftse100.js.map +1 -0
  19. package/cjs/basket/reference-data/hsi.js +87 -0
  20. package/cjs/basket/reference-data/hsi.js.map +1 -0
  21. package/cjs/basket/reference-data/nasdaq100.js +108 -0
  22. package/cjs/basket/reference-data/nasdaq100.js.map +1 -0
  23. package/cjs/basket/reference-data/prices.js +51 -0
  24. package/cjs/basket/reference-data/prices.js.map +1 -0
  25. package/cjs/basket/reference-data/sp500.js +46 -0
  26. package/cjs/basket/reference-data/sp500.js.map +1 -0
  27. package/cjs/data-utils.js +58 -0
  28. package/cjs/data-utils.js.map +1 -0
  29. package/cjs/index.js +36 -0
  30. package/cjs/index.js.map +1 -0
  31. package/cjs/makeSuggestions.js +37 -0
  32. package/cjs/makeSuggestions.js.map +1 -0
  33. package/cjs/schemas.js +28 -0
  34. package/cjs/schemas.js.map +1 -0
  35. package/cjs/simul/reference-data/currencies.js +6 -0
  36. package/cjs/simul/reference-data/currencies.js.map +1 -0
  37. package/cjs/simul/reference-data/instruments-extended.js +18 -0
  38. package/cjs/simul/reference-data/instruments-extended.js.map +1 -0
  39. package/cjs/simul/reference-data/instruments.js +74 -0
  40. package/cjs/simul/reference-data/instruments.js.map +1 -0
  41. package/cjs/simul/reference-data/locations.js +17 -0
  42. package/cjs/simul/reference-data/locations.js.map +1 -0
  43. package/cjs/simul/reference-data/lotsizes.js +28 -0
  44. package/cjs/simul/reference-data/lotsizes.js.map +1 -0
  45. package/cjs/simul/reference-data/orders.js +43 -0
  46. package/cjs/simul/reference-data/orders.js.map +1 -0
  47. package/cjs/simul/reference-data/prices.js +71 -0
  48. package/cjs/simul/reference-data/prices.js.map +1 -0
  49. package/cjs/simul/simul-module.js +122 -0
  50. package/cjs/simul/simul-module.js.map +1 -0
  51. package/cjs/simul/simul-schemas.js +137 -0
  52. package/cjs/simul/simul-schemas.js.map +1 -0
  53. package/cjs/test/test-module.js +58 -0
  54. package/cjs/test/test-module.js.map +1 -0
  55. package/cjs/test/test-schemas.js +17 -0
  56. package/cjs/test/test-schemas.js.map +1 -0
  57. package/cjs/vuu-modules.js +15 -0
  58. package/cjs/vuu-modules.js.map +1 -0
  59. package/cjs/vuu-row-generator.js +74 -0
  60. package/cjs/vuu-row-generator.js.map +1 -0
  61. package/esm/ArrayProxy.js +78 -0
  62. package/esm/ArrayProxy.js.map +1 -0
  63. package/esm/Table.js +182 -0
  64. package/esm/Table.js.map +1 -0
  65. package/esm/TickingArrayDataSource.js +132 -0
  66. package/esm/TickingArrayDataSource.js.map +1 -0
  67. package/esm/UpdateGenerator.js +85 -0
  68. package/esm/UpdateGenerator.js.map +1 -0
  69. package/esm/basket/basket-module.js +232 -0
  70. package/esm/basket/basket-module.js.map +1 -0
  71. package/esm/basket/basket-schemas.js +119 -0
  72. package/esm/basket/basket-schemas.js.map +1 -0
  73. package/esm/basket/reference-data/constituents.js +38 -0
  74. package/esm/basket/reference-data/constituents.js.map +1 -0
  75. package/esm/basket/reference-data/ftse100.js +103 -0
  76. package/esm/basket/reference-data/ftse100.js.map +1 -0
  77. package/esm/basket/reference-data/hsi.js +85 -0
  78. package/esm/basket/reference-data/hsi.js.map +1 -0
  79. package/esm/basket/reference-data/nasdaq100.js +106 -0
  80. package/esm/basket/reference-data/nasdaq100.js.map +1 -0
  81. package/esm/basket/reference-data/prices.js +49 -0
  82. package/esm/basket/reference-data/prices.js.map +1 -0
  83. package/esm/basket/reference-data/sp500.js +44 -0
  84. package/esm/basket/reference-data/sp500.js.map +1 -0
  85. package/esm/data-utils.js +53 -0
  86. package/esm/data-utils.js.map +1 -0
  87. package/esm/index.js +11 -0
  88. package/esm/index.js.map +1 -0
  89. package/esm/makeSuggestions.js +35 -0
  90. package/esm/makeSuggestions.js.map +1 -0
  91. package/esm/schemas.js +24 -0
  92. package/esm/schemas.js.map +1 -0
  93. package/esm/simul/reference-data/currencies.js +4 -0
  94. package/esm/simul/reference-data/currencies.js.map +1 -0
  95. package/esm/simul/reference-data/instruments-extended.js +16 -0
  96. package/esm/simul/reference-data/instruments-extended.js.map +1 -0
  97. package/esm/simul/reference-data/instruments.js +69 -0
  98. package/esm/simul/reference-data/instruments.js.map +1 -0
  99. package/esm/simul/reference-data/locations.js +14 -0
  100. package/esm/simul/reference-data/locations.js.map +1 -0
  101. package/esm/simul/reference-data/lotsizes.js +26 -0
  102. package/esm/simul/reference-data/lotsizes.js.map +1 -0
  103. package/esm/simul/reference-data/orders.js +40 -0
  104. package/esm/simul/reference-data/orders.js.map +1 -0
  105. package/esm/simul/reference-data/prices.js +68 -0
  106. package/esm/simul/reference-data/prices.js.map +1 -0
  107. package/esm/simul/simul-module.js +120 -0
  108. package/esm/simul/simul-module.js.map +1 -0
  109. package/esm/simul/simul-schemas.js +135 -0
  110. package/esm/simul/simul-schemas.js.map +1 -0
  111. package/esm/test/test-module.js +56 -0
  112. package/esm/test/test-module.js.map +1 -0
  113. package/esm/test/test-schemas.js +15 -0
  114. package/esm/test/test-schemas.js.map +1 -0
  115. package/esm/vuu-modules.js +13 -0
  116. package/esm/vuu-modules.js.map +1 -0
  117. package/esm/vuu-row-generator.js +68 -0
  118. package/esm/vuu-row-generator.js.map +1 -0
  119. package/package.json +34 -0
  120. package/types/ArrayProxy.d.ts +8 -0
  121. package/types/Table.d.ts +23 -0
  122. package/types/TickingArrayDataSource.d.ts +27 -0
  123. package/types/UpdateGenerator.d.ts +18 -0
  124. package/types/basket/basket-module.d.ts +6 -0
  125. package/types/basket/basket-schemas.d.ts +3 -0
  126. package/types/basket/index.d.ts +2 -0
  127. package/types/basket/reference-data/constituents.d.ts +3 -0
  128. package/types/basket/reference-data/ftse100.d.ts +2 -0
  129. package/types/basket/reference-data/hsi.d.ts +2 -0
  130. package/types/basket/reference-data/nasdaq100.d.ts +2 -0
  131. package/types/basket/reference-data/prices.d.ts +25 -0
  132. package/types/basket/reference-data/sp500.d.ts +2 -0
  133. package/types/data-utils.d.ts +6 -0
  134. package/types/index.d.ts +9 -0
  135. package/types/makeSuggestions.d.ts +2 -0
  136. package/types/rowUpdates.d.ts +15 -0
  137. package/types/schemas.d.ts +8 -0
  138. package/types/simul/index.d.ts +2 -0
  139. package/types/simul/reference-data/currencies.d.ts +1 -0
  140. package/types/simul/reference-data/index.d.ts +5 -0
  141. package/types/simul/reference-data/instrument-prices.d.ts +54 -0
  142. package/types/simul/reference-data/instruments-extended.d.ts +2 -0
  143. package/types/simul/reference-data/instruments.d.ts +31 -0
  144. package/types/simul/reference-data/locations.d.ts +4 -0
  145. package/types/simul/reference-data/lotsizes.d.ts +1 -0
  146. package/types/simul/reference-data/orders.d.ts +35 -0
  147. package/types/simul/reference-data/priceStrategies.d.ts +1 -0
  148. package/types/simul/reference-data/prices.d.ts +27 -0
  149. package/types/simul/simul-module.d.ts +3 -0
  150. package/types/simul/simul-schemas.d.ts +3 -0
  151. package/types/test/index.d.ts +1 -0
  152. package/types/test/test-module.d.ts +4 -0
  153. package/types/test/test-schemas.d.ts +3 -0
  154. package/types/vuu-modules.d.ts +7 -0
  155. package/types/vuu-row-generator.d.ts +17 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sp500.js","sources":["../../../src/basket/reference-data/sp500.ts"],"sourcesContent":["//Name,Symbol,Weight,Price,Change,Change %\nexport default [\n [\"Apple Inc\", \"AAPL\", 6.992488, 171.9, 1.47, \"(0.86%)\"],\n [\"Microsoft Corp\", \"MSFT\", 6.487978, 314.55, 1.76, \"(0.56%)\"],\n [\"Amazon.com Inc\", \"AMZN\", 3.193379, 126.25, 0.27, \"(0.22%)\"],\n [\"Nvidia Corp\", \"NVDA\", 2.928461, 433.11, 8.43, \"(1.99%)\"],\n [\"Alphabet Inc Cl A\", \"GOOGL\", 2.162218, 132.93, 2.39, \"(1.83%)\"],\n [\"Tesla Inc\", \"TSLA\", 1.854311, 246.56, 6.06, \"(2.52%)\"],\n [\"Alphabet Inc Cl C\", \"GOOG\", 1.85251, 133.81, 2.35, \"(1.78%)\"],\n [\"Meta Platforms Inc Class A\", \"META\", 1.847731, 305.93, 8.19, \"(2.75%)\"],\n [\"Berkshire Hathaway Inc Cl B\", \"BRK.B\", 1.82184, 358.67, 0.89, \"(0.25%)\"],\n [\"Exxon Mobil Corp\", \"XOM\", 1.343563, 118.97, -1.23, \"(-1.03%)\"],\n [\"Unitedhealth Group Inc\", \"UNH\", 1.302884, 510.04, 6.31, \"(1.25%)\"],\n [\"Eli Lilly & Co\", \"LLY\", 1.224046, 546.65, -3.11, \"(-0.57%)\"],\n [\"Jpmorgan Chase & Co\", \"JPM\", 1.182918, 148.23, 2.45, \"(1.68%)\"],\n [\"Johnson & Johnson W/d\", \"JNJ\", 1.056344, 156.83, -0.28, \"(-0.18%)\"],\n [\"Visa Inc Class a Shares\", \"V\", 1.029636, 231.97, 2.47, \"(1.08%)\"],\n [\"Procter & Gamble Co\", \"PG\", 0.969793, 145.75, -1.59, \"(-1.08%)\"],\n [\"Broadcom Inc\", \"AVGO\", 0.941177, 835.33, 18.52, \"(2.27%)\"],\n [\"Mastercard Inc A\", \"MA\", 0.918779, 400.65, 5.17, \"(1.31%)\"],\n [\"Chevron Corp\", \"CVX\", 0.847353, 170.55, -0.49, \"(-0.28%)\"],\n [\"Home Depot Inc\", \"HD\", 0.847289, 304.35, 2.53, \"(0.84%)\"],\n [\"Abbvie Inc\", \"BBV\", 0.754672, 152.14, -0.99, \"(-0.65%)\"],\n [\"Merck & Co. Inc.\", \"MRK\", 0.736434, 104.2, 0.26, \"(0.25%)\"],\n [\"Costco Wholesale Corp\", \"COST\", 0.697258, 569.05, 5.52, \"(0.98%)\"],\n [\"Pepsico Inc\", \"PEP\", 0.651768, 168.92, -0.65, \"(-0.38%)\"],\n [\"Walmart Inc\", \"WMT\", 0.644449, 161.87, 0.15, \"(0.09%)\"],\n [\"Adobe Inc\", \"ADBE\", 0.639652, 507.17, 4.57, \"(0.91%)\"],\n [\"Coca Cola Co\", \"KO\", 0.60801, 55.82, -0.13, \"(-0.23%)\"],\n [\"Cisco Systems Inc\", \"CSCO\", 0.605326, 53.97, 0.77, \"(1.44%)\"],\n [\"Accenture Plc Cl A\", \"ACN\", 0.55372, 298.5, -15.9, \"(-5.05%)\"],\n [\"Salesforce Inc\", \"CRM\", 0.551342, 204.46, 1.73, \"(0.85%)\"],\n [\"Thermo Fisher Scientific Inc\", \"TMO\", 0.536951, 503.47, 5.18, \"(1.04%)\"],\n [\"Mcdonald S Corp\", \"MCD\", 0.536457, 265.83, 2.19, \"(0.83%)\"],\n [\"Bank of America Corp\", \"BAC\", 0.526405, 27.51, 0.24, \"(0.86%)\"],\n [\"Comcast Corp Class A\", \"CMCSA\", 0.512537, 45.17, 0.57, \"(1.27%)\"],\n [\"Linde Plc\", \"LIN\", 0.506835, 375.48, 3.47, \"(0.93%)\"],\n [\"Pfizer Inc\", \"PFE\", 0.506043, 32.09, -0.02, \"(-0.05%)\"],\n [\"Netflix Inc\", \"NFLX\", 0.467192, 377.77, 0.18, \"(0.05%)\"],\n [\"Abbott Laboratories\", \"ABT\", 0.462893, 97.52, 1.99, \"(2.08%)\"],\n [\"Oracle Corp\", \"ORCL\", 0.459877, 106.29, 1.67, \"(1.60%)\"],\n];\n\n/*\n41,Danaher Corp,DHR,0.454026,248.24,0.80,(0.32%)\n42,Advanced Micro Devices,AMD,0.442473,103.74,5.67,(5.78%)\n43,Wells Fargo & Co,WFC,0.417428,41.04,0.18,(0.43%)\n44,Conocophillips,COP,0.411569,123.32,0.23,(0.18%)\n45,Walt Disney Co,DIS,0.408438,80.35,0.45,(0.56%)\n46,Intel Corp,INTC,0.404462,35.50,0.89,(2.56%)\n47,Amgen Inc,AMGN,0.401904,270.91,1.93,(0.72%)\n48,Texas Instruments Inc,TXN,0.400931,160.98,2.84,(1.80%)\n49,Intuit Inc,INTU,0.397406,515.11,6.87,(1.35%)\n50,Philip Morris International,PM,0.39143,92.66,2.34,(2.59%)\n51,Caterpillar Inc,CAT,0.388444,276.34,3.63,(1.33%)\n52,Verizon Communications Inc,VZ,0.380327,32.56,0.16,(0.48%)\n53,Intl Business Machines Corp,IBM,0.364246,140.89,-2.28,(-1.59%)\n54,Honeywell International Inc,HON,0.348317,188.68,0.80,(0.43%)\n55,Union Pacific Corp,UNP,0.344419,203.88,1.48,(0.73%)\n56,Qualcomm Inc,QCOM,0.340195,111.55,2.36,(2.16%)\n57,Nextera Energy Inc,NEE,0.338809,57.64,-2.32,(-3.88%)\n58,Lowe S Cos Inc,LOW,0.338613,209.52,2.56,(1.24%)\n59,Bristol Myers Squibb Co,BMY,0.337683,58.30,0.41,(0.70%)\n60,General Electric Co,GE,0.336989,112.43,1.54,(1.39%)\n61,S&p Global Inc,SPGI,0.32985,369.21,6.15,(1.69%)\n62,Applied Materials Inc,AMAT,0.316678,139.15,4.09,(3.03%)\n63,Servicenow Inc,NOW,0.3112,552.84,6.46,(1.18%)\n64,Boeing Co,BA,0.309673,193.12,-2.34,(-1.20%)\n65,United Parcel Service Cl B,UPS,0.307795,154.29,1.88,(1.23%)\n66,Booking Holdings Inc,BKNG,0.307126,3,086.26,3.60,(0.12%)\n67,Nike Inc Cl B,NKE,0.305871,89.63,0.21,(0.24%)\n68,At&t Inc,T,0.296603,14.94,0.07,(0.44%)\n69,Goldman Sachs Group Inc,GS,0.296356,325.72,3.77,(1.17%)\n70,Rtx Corp,RTX,0.296189,72.54,-0.34,(-0.46%)\n71,Elevance Health Inc,ELV,0.292632,448.99,4.23,(0.95%)\n72,Deere & Co,DE,0.291602,388.36,4.00,(1.04%)\n73,Starbucks Corp,SBUX,0.291579,91.21,0.04,(0.04%)\n74,Morgan Stanley,MS,0.29087,82.34,0.69,(0.84%)\n75,Medtronic Plc,MDT,0.290688,78.77,0.55,(0.71%)\n76,Prologis Inc,PLD,0.286912,112.30,1.05,(0.94%)\n77,Intuitive Surgical Inc,ISRG,0.285764,296.31,4.88,(1.67%)\n78,Tjx Companies Inc,TJX,0.282733,89.27,1.16,(1.32%)\n79,Automatic Data Processing,ADP,0.279113,243.79,1.16,(0.48%)\n80,Marsh & Mclennan Cos,MMC,0.266169,193.53,0.55,(0.29%)\n81,Mondelez International Inc A,MDLZ,0.26425,69.44,-0.56,(-0.79%)\n82,Gilead Sciences Inc,GILD,0.26285,75.96,0.41,(0.54%)\n83,Lockheed Martin Corp,LMT,0.255775,410.40,1.68,(0.41%)\n84,Blackrock Inc,BLK,0.252096,645.37,1.98,(0.31%)\n85,Vertex Pharmaceuticals Inc,VRTX,0.251521,353.91,4.26,(1.22%)\n86,Stryker Corp,SYK,0.250789,273.07,6.53,(2.45%)\n87,Cvs Health Corp,CVS,0.250255,70.11,0.33,(0.47%)\n88,Regeneron Pharmaceuticals,REGN,0.2481,835.67,3.11,(0.37%)\n89,American Express Co,AXP,0.243515,150.42,0.52,(0.34%)\n90,Chubb Ltd,CB,0.242706,212.92,1.29,(0.61%)\n91,Analog Devices Inc,ADI,0.241943,177.01,4.20,(2.43%)\n92,Schlumberger Ltd,SLB,0.241232,61.02,0.22,(0.36%)\n93,Eaton Corp Plc,ETN,0.238556,216.42,2.06,(0.96%)\n94,The Cigna Group,CI,0.238517,291.43,2.82,(0.98%)\n95,Progressive Corp,PGR,0.229854,140.76,0.14,(0.10%)\n96,Lam Research Corp,LRCX,0.228483,627.46,13.54,(2.20%)\n97,Schwab (Charles) Corp,SCHW,0.225784,54.57,0.19,(0.35%)\n98,Zoetis Inc,ZTS,0.224522,174.68,-0.00,(-0.00%)\n99,Citigroup Inc,C,0.217552,41.24,0.78,(1.92%)\n100,Boston Scientific Corp,BSX,0.213003,53.30,1.20,(2.31%)\n101,Blackstone Inc,BX,0.211158,108.88,2.33,(2.19%)\n102,Eog Resources Inc,EOG,0.21104,130.56,0.75,(0.57%)\n103,Becton Dickinson and Co,BDX,0.209627,262.60,3.80,(1.47%)\n104,Micron Technology Inc,MU,0.208276,66.25,-1.96,(-2.87%)\n105,American Tower Corp,AMT,0.207727,160.73,1.04,(0.65%)\n106,Altria Group Inc,MO,0.207666,42.11,0.20,(0.47%)\n107,T Mobile Us Inc,TMUS,0.20192,140.30,0.60,(0.43%)\n108,Cme Group Inc,CME,0.201368,200.22,-0.14,(-0.07%)\n109,Southern Co,SO,0.20116,65.04,-1.10,(-1.67%)\n110,Palo Alto Networks Inc,PANW,0.198047,236.42,4.52,(1.95%)\n111,Duke Energy Corp,DUK,0.193827,88.87,-1.23,(-1.36%)\n112,Fiserv Inc,FI,0.192662,113.67,0.48,(0.42%)\n113,Synopsys Inc,SNPS,0.189768,458.88,12.17,(2.72%)\n114,Activision Blizzard Inc,ATVI,0.18717,93.71,-0.22,(-0.23%)\n115,Aon Plc Class A,AON,0.186896,330.04,0.12,(0.04%)\n116,Equinix Inc,EQIX,0.184757,715.84,8.74,(1.24%)\n117,Illinois Tool Works,ITW,0.177501,233.17,0.77,(0.33%)\n118,Air Products & Chemicals Inc,APD,0.17678,289.15,3.89,(1.36%)\n119,Paypal Holdings Inc,PYPL,0.175802,58.30,0.96,(1.67%)\n120,Cadence Design Sys Inc,CDNS,0.175052,235.09,4.44,(1.93%)\n121,Northrop Grumman Corp,NOC,0.173654,441.30,4.06,(0.93%)\n122,Intercontinental Exchange In,ICE,0.172998,109.93,1.66,(1.53%)\n123,Humana Inc,HUM,0.170476,495.73,2.16,(0.44%)\n124,Marathon Petroleum Corp,MPC,0.170186,155.28,2.85,(1.87%)\n125,Kla Corp,KLAC,0.170079,459.61,14.05,(3.15%)\n126,Fedex Corp,FDX,0.169747,266.99,4.28,(1.63%)\n127,Csx Corp,CSX,0.169632,30.62,0.34,(1.14%)\n128,Mckesson Corp,MCK,0.167376,445.58,1.20,(0.27%)\n129,Sherwin Williams Co,SHW,0.165389,254.95,4.33,(1.73%)\n130,Colgate Palmolive Co,CL,0.164,71.11,0.06,(0.08%)\n131,Airbnb Inc Class A,ABNB,0.159553,137.66,3.63,(2.70%)\n132,Waste Management Inc,WM,0.15893,154.17,-0.25,(-0.16%)\n133,Emerson Electric Co,EMR,0.154857,97.31,0.45,(0.47%)\n134,O Reilly Automotive Inc,ORLY,0.154194,918.15,3.98,(0.44%)\n135,Pioneer Natural Resources Co,PXD,0.1524,234.43,0.34,(0.14%)\n136,Phillips 66,PSX,0.150197,122.81,2.01,(1.66%)\n137,Freeport Mcmoran Inc,FCX,0.146185,37.34,0.79,(2.17%)\n138,3m Co W/d,MMM,0.144312,93.48,0.02,(0.02%)\n139,Roper Technologies Inc,ROP,0.144165,486.61,-0.02,(-0.00%)\n140,Valero Energy Corp,VLO,0.141937,147.59,3.64,(2.53%)\n141,Nxp Semiconductors Nv,NXPI,0.141583,202.19,5.49,(2.79%)\n142,Target Corp,TGT,0.141106,109.31,-0.44,(-0.40%)\n143,Parker Hannifin Corp,PH,0.140358,396.29,5.18,(1.32%)\n144,Us Bancorp,USB,0.139291,32.59,0.07,(0.20%)\n145,General Dynamics Corp,GD,0.139193,223.44,2.44,(1.10%)\n146,Chipotle Mexican Grill Inc,CMG,0.139055,1,828.59,22.51,(1.25%)\n147,Hca Healthcare Inc,HCA,0.138966,251.59,4.33,(1.75%)\n148,Arthur J Gallagher & Co,AJG,0.138231,231.77,1.44,(0.62%)\n149,Moody S Corp,MCO,0.138162,319.07,4.56,(1.45%)\n150,Amphenol Corp Cl A,APH,0.136941,84.40,2.04,(2.47%)\n151,Ford Motor Co,F,0.1362,12.58,0.19,(1.49%)\n152,Marriott International Cl A,MAR,0.135619,199.53,5.65,(2.92%)\n153,Pnc Financial Services Group,PNC,0.135457,123.09,1.28,(1.05%)\n154,Transdigm Group Inc,TDG,0.131273,860.46,8.64,(1.01%)\n155,Carrier Global Corp,CARR,0.129065,56.83,1.75,(3.17%)\n156,Autozone Inc,AZO,0.128857,2,556.17,15.27,(0.60%)\n157,Trane Technologies Plc,TT,0.12759,207.07,7.01,(3.50%)\n158,Motorola Solutions Inc,MSI,0.127284,275.18,2.20,(0.81%)\n159,Arista Networks Inc,ANET,0.12715,184.23,2.63,(1.45%)\n160,Norfolk Southern Corp,NSC,0.124378,197.30,1.08,(0.55%)\n161,General Motors Co,GM,0.124282,33.25,0.90,(2.77%)\n162,Paccar Inc,PCAR,0.123613,86.12,1.31,(1.54%)\n163,Charter Communications Inc A,CHTR,0.123199,442.28,8.86,(2.04%)\n164,Hess Corp,HES,0.121942,157.30,-0.74,(-0.47%)\n165,Sempra,SRE,0.121909,68.15,-1.26,(-1.81%)\n166,Occidental Petroleum Corp,OXY,0.121531,66.03,0.43,(0.66%)\n167,American International Group,AIG,0.121272,61.73,0.72,(1.18%)\n168,Autodesk Inc,ADSK,0.120711,208.03,5.75,(2.84%)\n169,Edwards Lifesciences Corp,EW,0.119074,69.68,-0.43,(-0.62%)\n170,Ecolab Inc,ECL,0.118911,169.50,1.63,(0.97%)\n171,Public Storage,PSA,0.117206,266.58,1.60,(0.60%)\n172,Microchip Technology Inc,MCHP,0.116275,78.91,2.41,(3.15%)\n173,Aflac Inc,AFL,0.11627,77.65,0.62,(0.81%)\n174,Cintas Corp,CTAS,0.116227,486.83,5.75,(1.19%)\n175,Welltower Inc,WELL,0.116157,81.07,0.87,(1.08%)\n176,Williams Cos Inc,WMB,0.115685,34.65,0.55,(1.61%)\n177,Kimberly Clark Corp,KMB,0.114902,121.11,-0.55,(-0.45%)\n178,Archer Daniels Midland Co,ADM,0.114307,76.74,0.38,(0.50%)\n179,Msci Inc,MSCI,0.113047,518.97,7.03,(1.37%)\n180,Constellation Brands Inc A,STZ,0.112869,251.62,1.03,(0.41%)\n181,On Semiconductor,ON,0.111009,95.12,3.07,(3.33%)\n182,Metlife Inc,MET,0.110772,63.06,0.26,(0.41%)\n183,Monster Beverage Corp,MNST,0.110311,53.31,0.19,(0.35%)\n184,Hilton Worldwide Holdings In,HLT,0.109054,153.24,3.88,(2.60%)\n185,American Electric Power,AEP,0.108899,74.71,-1.15,(-1.51%)\n186,Crown Castle Inc,CCI,0.108512,91.35,1.65,(1.83%)\n187,Exelon Corp,EXC,0.107894,38.11,-0.69,(-1.78%)\n188,Nucor Corp,NUE,0.107787,158.31,2.60,(1.67%)\n189,Travelers Cos Inc,TRV,0.107342,167.42,-0.51,(-0.30%)\n190,Dominion Energy Inc,D,0.106001,44.61,-0.86,(-1.88%)\n191,Te Connectivity Ltd,TEL,0.105581,123.84,3.40,(2.82%)\n192,Halliburton Co,HAL,0.105449,42.18,0.15,(0.37%)\n193,Centene Corp,CNC,0.105443,69.87,0.13,(0.18%)\n194,Fortinet Inc,FTNT,0.105315,59.07,0.93,(1.59%)\n195,Oneok Inc,OKE,0.104854,64.86,0.35,(0.53%)\n196,General Mills Inc,GIS,0.104655,63.79,-0.26,(-0.40%)\n197,Copart Inc,CPRT,0.104453,43.66,0.61,(1.41%)\n198,Paychex Inc,PAYX,0.104412,117.40,0.89,(0.76%)\n199,Biogen Inc,BIIB,0.103916,258.95,1.43,(0.55%)\n200,Truist Financial Corp,TFC,0.103679,28.15,0.18,(0.63%)\n201,Ross Stores Inc,ROST,0.10361,111.18,2.26,(2.07%)\n202,Johnson Controls Internation,JCI,0.103601,53.69,-0.85,(-1.55%)\n203,Iqvia Holdings Inc,IQV,0.103397,200.11,-2.10,(-1.04%)\n204,Capital One Financial Corp,COF,0.101688,96.63,1.14,(1.20%)\n205,Baker Hughes Co,BKR,0.101425,36.62,0.37,(1.02%)\n206,Idexx Laboratories Inc,IDXX,0.101263,439.37,2.51,(0.57%)\n207,Corteva Inc,CTVA,0.100577,50.77,0.02,(0.05%)\n208,Dow Inc,DOW,0.100258,50.87,-0.13,(-0.26%)\n209,Old Dominion Freight Line,ODFL,0.100037,406.82,6.93,(1.73%)\n210,Constellation Energy,CEG,0.099445,109.94,-0.81,(-0.73%)\n211,Dexcom Inc,DXCM,0.099384,95.68,3.59,(3.90%)\n212,Simon Property Group Inc,SPG,0.098977,108.45,0.26,(0.24%)\n213,Digital Realty Trust Inc,DLR,0.098757,117.60,0.76,(0.65%)\n214,Realty Income Corp,O,0.098278,49.83,0.17,(0.33%)\n215,Kenvue Inc W/i,KVUE,0.097359,20.20,-0.02,(-0.12%)\n216,Verisk Analytics Inc,VRSK,0.097203,241.97,2.34,(0.98%)\n217,Cognizant Tech Solutions A,CTSH,0.096172,68.15,-0.05,(-0.07%)\n218,P G & E Corp,PCG,0.095995,16.36,-0.09,(-0.52%)\n219,Prudential Financial Inc,PRU,0.095804,94.93,0.41,(0.43%)\n220,Ametek Inc,AME,0.09567,150.03,1.17,(0.79%)\n221,Yum Brands Inc,YUM,0.095443,123.55,1.57,(1.29%)\n222,Dupont De Nemours Inc,DD,0.094185,74.58,1.11,(1.51%)\n223,Ameriprise Financial Inc,AMP,0.093691,332.11,5.16,(1.58%)\n224,L3harris Technologies Inc,LHX,0.092512,173.16,-2.04,(-1.16%)\n225,Fidelity National Info Serv,FIS,0.09207,56.06,0.52,(0.94%)\n226,Sysco Corp,SYY,0.091968,65.99,0.78,(1.20%)\n227,Moderna Inc,MRNA,0.091789,100.61,1.17,(1.18%)\n228,Bank of New York Mellon Corp,BK,0.091699,42.76,0.59,(1.39%)\n229,Agilent Technologies Inc,A,0.091382,111.91,1.41,(1.28%)\n230,Otis Worldwide Corp,OTIS,0.091228,80.55,1.20,(1.51%)\n231,Rockwell Automation Inc,ROK,0.091103,288.26,3.46,(1.21%)\n232,Dr Horton Inc,DHI,0.090974,108.96,1.95,(1.82%)\n233,Cummins Inc,CMI,0.090916,232.98,3.03,(1.32%)\n234,Estee Lauder Companies Cl A,EL,0.090788,139.94,-0.10,(-0.07%)\n235,Kinder Morgan Inc,KMI,0.090175,16.71,0.05,(0.27%)\n236,Keurig Dr Pepper Inc,KDP,0.088358,31.51,-0.16,(-0.51%)\n237,Fastenal Co,FAST,0.087952,55.72,0.66,(1.21%)\n238,Xcel Energy Inc,XEL,0.087474,56.50,-0.71,(-1.25%)\n239,Devon Energy Corp,DVN,0.087359,48.84,0.00,(0.01%)\n240,Ww Grainger Inc,GWW,0.086956,704.07,3.96,(0.57%)\n241,Costar Group Inc,CSGP,0.086756,77.10,0.75,(0.99%)\n242,Cencora Inc,COR,0.086188,183.99,-1.17,(-0.63%)\n243,United Rentals Inc,URI,0.085093,454.44,8.22,(1.84%)\n244,Hershey Co,HSY,0.084755,201.01,-1.55,(-0.76%)\n245,Arch Capital Group Ltd,ACGL,0.083799,81.62,0.54,(0.67%)\n246,Ppg Industries Inc,PPG,0.083787,130.49,2.46,(1.92%)\n247,Global Payments Inc,GPN,0.083671,116.72,1.47,(1.28%)\n248,Consolidated Edison Inc,ED,0.083432,85.06,-1.57,(-1.81%)\n249,Newmont Corp,NEM,0.082799,36.78,-0.50,(-1.34%)\n250,Republic Services Inc,RSG,0.082765,145.01,0.28,(0.19%)\n251,Allstate Corp,ALL,0.08254,112.77,-0.25,(-0.22%)\n252,Electronic Arts Inc,EA,0.081213,119.76,1.79,(1.51%)\n253,Vici Properties Inc,VICI,0.081127,29.28,0.40,(1.37%)\n254,Kroger Co,KR,0.080998,44.96,0.48,(1.07%)\n255,Public Service Enterprise Gp,PEG,0.080723,56.88,-1.02,(-1.75%)\n256,Lennar Corp A,LEN,0.078759,113.41,1.71,(1.53%)\n257,Diamondback Energy Inc,FANG,0.078498,158.01,0.78,(0.50%)\n258,West Pharmaceutical Services,WST,0.077362,377.15,1.97,(0.52%)\n259,Quanta Services Inc,PWR,0.077074,190.82,0.70,(0.37%)\n260,Gartner Inc,IT,0.076911,347.78,-1.41,(-0.40%)\n261,Aptiv Plc,APTV,0.0757,99.21,3.35,(3.50%)\n262,Vulcan Materials Co,VMC,0.075604,207.60,4.00,(1.97%)\n263,Kraft Heinz Co,KHC,0.075468,33.72,-0.31,(-0.90%)\n264,Ge Healthcare Technology,GEHC,0.074734,69.81,1.53,(2.24%)\n265,Cdw Corp/de,CDW,0.074375,202.53,3.84,(1.93%)\n266,Fortive Corp,FTV,0.072323,74.75,1.16,(1.58%)\n267,Ingersoll Rand Inc,IR,0.071683,64.52,1.25,(1.97%)\n268,Ansys Inc,ANSS,0.071343,299.19,4.85,(1.65%)\n269,Extra Space Storage Inc,EXR,0.071269,120.75,0.24,(0.20%)\n270,Wec Energy Group Inc,WEC,0.071007,79.67,-0.91,(-1.12%)\n271,Martin Marietta Materials,MLM,0.070759,418.00,8.05,(1.96%)\n272,Edison International,EIX,0.068887,63.92,-1.38,(-2.11%)\n273,American Water Works Co Inc,AWK,0.068233,123.27,-3.07,(-2.43%)\n274,Warner Bros Discovery Inc,WBD,0.068207,10.89,-0.15,(-1.31%)\n275,Lyondellbasell Indu Cl A,LYB,0.067294,94.86,-0.11,(-0.11%)\n276,Mettler Toledo International,MTD,0.067028,1,112.26,14.48,(1.32%)\n277,Avalonbay Communities Inc,AVB,0.066762,171.85,-0.60,(-0.35%)\n278,Delta Air Lines Inc,DAL,0.065781,37.32,0.66,(1.79%)\n279,T Rowe Price Group Inc,TROW,0.064996,104.73,1.19,(1.15%)\n280,Keysight Technologies In,KEYS,0.064934,133.51,3.11,(2.38%)\n281,Zimmer Biomet Holdings Inc,ZBH,0.064476,112.14,1.38,(1.24%)\n282,Dollar General Corp,DG,0.064042,105.04,0.70,(0.67%)\n283,Corning Inc,GLW,0.064037,30.35,0.29,(0.98%)\n284,Ebay Inc,EBAY,0.063728,43.45,0.56,(1.31%)\n285,Cbre Group Inc A,CBRE,0.063578,73.84,0.35,(0.48%)\n286,Weyerhaeuser Co,WY,0.063312,30.40,-0.64,(-2.05%)\n287,Church & Dwight Co Inc,CHD,0.062765,91.68,-0.29,(-0.31%)\n288,Cardinal Health Inc,CAH,0.062583,88.18,0.14,(0.16%)\n289,Hp Inc,HPQ,0.062013,25.73,0.09,(0.36%)\n290,Equifax Inc,EFX,0.061821,185.40,4.68,(2.59%)\n291,Tractor Supply Company,TSCO,0.061683,205.07,2.06,(1.02%)\n292,Willis Towers Watson Plc,WTW,0.06168,211.96,0.35,(0.17%)\n293,Hewlett Packard Enterprise,HPE,0.061499,17.70,0.63,(3.66%)\n294,Fair Isaac Corp,FICO,0.061481,890.19,4.58,(0.52%)\n295,Dollar Tree Inc,DLTR,0.061287,106.46,1.11,(1.05%)\n296,Hartford Financial Svcs Grp,HIG,0.061236,72.24,0.53,(0.73%)\n297,Resmed Inc,RMD,0.060853,149.81,1.16,(0.78%)\n298,Take Two Interactive Softwre,TTWO,0.060753,139.63,1.85,(1.34%)\n299,Royal Caribbean Cruises Ltd,RCL,0.060515,94.38,2.42,(2.64%)\n300,Xylem Inc,XYL,0.060192,91.40,1.09,(1.20%)\n301,Align Technology Inc,ALGN,0.060095,309.06,7.38,(2.45%)\n302,Steris Plc,STE,0.060013,221.57,3.67,(1.69%)\n303,Broadridge Financial Solutio,BR,0.059572,181.18,-0.04,(-0.02%)\n304,Discover Financial Services,DFS,0.059507,86.35,1.09,(1.28%)\n305,State Street Corp,STT,0.059411,67.81,1.03,(1.54%)\n306,Sba Communications Corp,SBAC,0.059216,198.11,2.05,(1.05%)\n307,Monolithic Power Systems Inc,MPWR,0.058699,457.69,16.51,(3.74%)\n308,Illumina Inc,ILMN,0.058584,133.02,-0.28,(-0.21%)\n309,Dte Energy Company,DTE,0.058057,98.82,-1.72,(-1.71%)\n310,M & T Bank Corp,MTB,0.057846,126.63,2.09,(1.68%)\n311,Coterra Energy Inc,CTRA,0.057589,27.48,0.34,(1.23%)\n312,Eversource Energy,ES,0.057281,57.54,-1.23,(-2.09%)\n313,Genuine Parts Co,GPC,0.055796,142.94,0.63,(0.45%)\n314,Equity Residential,EQR,0.055712,58.67,0.23,(0.40%)\n315,Entergy Corp,ETR,0.055241,92.23,-1.02,(-1.10%)\n316,Dover Corp,DOV,0.055103,141.68,1.09,(0.77%)\n317,Ameren Corporation,AEE,0.054981,74.60,-1.51,(-1.98%)\n318,Ulta Beauty Inc,ULTA,0.054585,398.17,5.73,(1.46%)\n319,Teledyne Technologies Inc,TDY,0.054228,414.36,0.92,(0.22%)\n320,Nvr Inc,NVR,0.054188,6,027.42,86.42,(1.45%)\n321,Targa Resources Corp,TRGP,0.05408,87.52,0.93,(1.08%)\n322,Molina Healthcare Inc,MOH,0.053618,333.09,2.03,(0.61%)\n323,Wabtec Corp,WAB,0.053425,108.18,1.35,(1.26%)\n324,Fleetcor Technologies Inc,FLT,0.053345,260.14,1.28,(0.49%)\n325,Albemarle Corp,ALB,0.053229,172.99,10.36,(6.37%)\n326,Baxter International Inc,BAX,0.05272,37.54,0.21,(0.57%)\n327,Raymond James Financial Inc,RJF,0.052247,101.39,1.84,(1.85%)\n328,Mccormick & Co Non Vtg Shrs,MKC,0.051871,74.55,0.46,(0.63%)\n329,Invitation Homes Inc,INVH,0.051153,31.73,0.03,(0.11%)\n330,Firstenergy Corp,FE,0.050777,34.56,-0.69,(-1.94%)\n331,Laboratory Crp of Amer Hldgs,LH,0.05072,204.23,-0.62,(-0.30%)\n332,Howmet Aerospace Inc,HWM,0.050386,46.99,0.91,(1.97%)\n333,Verisign Inc,VRSN,0.050215,202.93,2.46,(1.23%)\n334,Ppl Corp,PPL,0.04902,23.56,-0.39,(-1.61%)\n335,Iron Mountain Inc,IRM,0.047985,59.55,0.56,(0.94%)\n336,Jacobs Solutions Inc,J,0.047882,136.45,0.27,(0.20%)\n337,Intl Flavors & Fragrances,IFF,0.047868,67.84,0.64,(0.95%)\n338,Centerpoint Energy Inc,CNP,0.047827,26.68,-0.48,(-1.75%)\n339,Darden Restaurants Inc,DRI,0.047736,143.44,2.01,(1.42%)\n340,Hologic Inc,HOLX,0.047358,69.99,0.75,(1.08%)\n341,First Solar Inc,FSLR,0.047324,161.90,3.29,(2.07%)\n342,Expeditors Intl Wash Inc,EXPD,0.046936,114.74,1.08,(0.95%)\n343,Brown & Brown Inc,BRO,0.046675,71.15,0.19,(0.26%)\n344,Factset Research Systems Inc,FDS,0.046601,443.66,8.47,(1.95%)\n345,Fifth Third Bancorp,FITB,0.046598,25.05,0.19,(0.74%)\n346,Ventas Inc,VTR,0.046351,42.18,0.77,(1.85%)\n347,Marathon Oil Corp,MRO,0.046321,27.51,0.12,(0.45%)\n348,Steel Dynamics Inc,STLD,0.046096,106.96,0.52,(0.48%)\n349,Bunge Ltd,BG,0.046038,110.67,1.10,(1.00%)\n350,Ptc Inc,PTC,0.045951,140.25,1.78,(1.28%)\n351,Everest Group Ltd,EG,0.04587,381.30,-0.42,(-0.11%)\n352,Cincinnati Financial Corp,CINF,0.045852,104.40,-0.30,(-0.29%)\n353,Enphase Energy Inc,ENPH,0.045679,121.39,1.28,(1.07%)\n354,Nasdaq Inc,NDAQ,0.04562,49.07,0.74,(1.52%)\n355,Akamai Technologies Inc,AKAM,0.045578,107.75,0.79,(0.74%)\n356,Cboe Global Markets Inc,CBOE,0.045525,155.28,0.51,(0.33%)\n357,Cf Industries Holdings Inc,CF,0.04496,84.93,1.48,(1.78%)\n358,Waters Corp,WAT,0.044936,274.46,2.12,(0.78%)\n359,Pultegroup Inc,PHM,0.044848,74.85,1.65,(2.25%)\n360,Tyler Technologies Inc,TYL,0.044831,387.74,2.43,(0.63%)\n361,Principal Financial Group,PFG,0.044705,72.74,0.74,(1.02%)\n362,Clorox Company,CLX,0.04465,128.98,-0.17,(-0.13%)\n363,Southwest Airlines Co,LUV,0.044478,27.30,0.49,(1.81%)\n364,Regions Financial Corp,RF,0.044397,17.16,0.22,(1.27%)\n365,Garmin Ltd,GRMN,0.044336,104.65,1.42,(1.38%)\n366,Atmos Energy Corp,ATO,0.044128,106.32,-0.14,(-0.13%)\n367,Netapp Inc,NTAP,0.044116,76.49,1.54,(2.05%)\n368,Textron Inc,TXT,0.043659,79.27,0.33,(0.41%)\n369,Cooper Cos Inc,COO,0.04361,318.15,2.23,(0.71%)\n370,Kellogg Co,K,0.043517,58.90,-0.22,(-0.38%)\n371,Idex Corp,IEX,0.043484,210.72,3.28,(1.58%)\n372,Cms Energy Corp,CMS,0.043476,52.78,-0.57,(-1.07%)\n373,Skyworks Solutions Inc,SWKS,0.042974,98.55,2.25,(2.33%)\n374,Alexandria Real Estate Equit,ARE,0.042466,99.48,0.59,(0.60%)\n375,Hunt (Jb) Transprt Svcs Inc,JBHT,0.042319,186.54,0.95,(0.51%)\n376,Las Vegas Sands Corp,LVS,0.042222,45.63,-0.53,(-1.15%)\n377,Ball Corp,BALL,0.042202,48.27,0.04,(0.08%)\n378,Walgreens Boots Alliance Inc,WBA,0.04215,20.97,-0.06,(-0.26%)\n379,Teradyne Inc,TER,0.041494,100.04,3.56,(3.68%)\n380,Mid America Apartment Comm,MAA,0.041385,128.55,0.48,(0.37%)\n381,Epam Systems Inc,EPAM,0.041006,257.76,0.96,(0.37%)\n382,Avery Dennison Corp,AVY,0.040961,183.42,1.39,(0.76%)\n383,Omnicom Group,OMC,0.040483,74.60,1.21,(1.65%)\n384,Huntington Bancshares Inc,HBAN,0.040444,10.25,0.13,(1.24%)\n385,Eqt Corp,EQT,0.040251,40.00,0.39,(0.99%)\n386,Tyson Foods Inc Cl A,TSN,0.040042,49.74,-0.37,(-0.74%)\n387,Western Digital Corp,WDC,0.039814,45.50,0.94,(2.11%)\n388,Northern Trust Corp,NTRS,0.039557,69.29,0.84,(1.23%)\n389,Carnival Corp,CCL,0.039206,14.52,0.54,(3.88%)\n390,Expedia Group Inc,EXPE,0.038585,102.75,2.50,(2.49%)\n391,United Airlines Holdings Inc,UAL,0.038383,42.84,0.81,(1.94%)\n392,Quest Diagnostics Inc,DGX,0.038331,123.71,0.31,(0.25%)\n393,Axon Enterprise Inc,AXON,0.03828,195.69,1.04,(0.53%)\n394,Packaging Corp of America,PKG,0.038236,152.79,0.90,(0.59%)\n395,Revvity Inc,RVTY,0.0378,110.55,1.50,(1.38%)\n396,Snap on Inc,SNA,0.037774,257.97,4.00,(1.58%)\n397,Pool Corp,POOL,0.037475,353.56,9.86,(2.87%)\n398,Essex Property Trust Inc,ESS,0.03733,210.81,0.07,(0.03%)\n399,Domino S Pizza Inc,DPZ,0.037258,382.39,2.18,(0.57%)\n400,Amcor Plc,AMCR,0.037101,9.09,0.06,(0.61%)\n401,Best Buy Co Inc,BBY,0.037071,68.66,0.29,(0.43%)\n402,Apa Corp,APA,0.03662,42.49,0.11,(0.27%)\n403,Lamb Weston Holdings Inc,LW,0.036553,91.47,0.09,(0.10%)\n404,Wr Berkley Corp,WRB,0.036551,65.21,0.86,(1.33%)\n405,Conagra Brands Inc,CAG,0.036484,27.44,-0.10,(-0.35%)\n406,Lkq Corp,LKQ,0.036449,49.51,0.72,(1.47%)\n407,Jm Smucker Co,SJM,0.035767,124.48,-0.96,(-0.77%)\n408,Stanley Black & Decker Inc,SWK,0.035567,83.87,0.97,(1.17%)\n409,Synchrony Financial,SYF,0.035241,30.73,0.55,(1.84%)\n410,Carmax Inc,KMX,0.035202,71.64,-8.05,(-10.10%)\n411,Leidos Holdings Inc,LDOS,0.034943,92.20,0.21,(0.23%)\n412,Seagate Technology Holdings,STX,0.034918,65.71,1.42,(2.20%)\n413,Paycom Software Inc,PAYC,0.034914,259.42,2.34,(0.91%)\n414,Celanese Corp,CE,0.034212,127.11,3.81,(3.09%)\n415,Trimble Inc,TRMB,0.034136,52.22,3.01,(6.12%)\n416,Alliant Energy Corp,LNT,0.03411,48.06,-0.49,(-1.02%)\n417,Citizens Financial Group,CFG,0.033972,26.28,0.52,(2.00%)\n418,International Paper Co,IP,0.033961,35.10,0.15,(0.41%)\n419,Masco Corp,MAS,0.033414,54.58,1.37,(2.58%)\n420,Nordson Corp,NDSN,0.033057,223.81,3.73,(1.69%)\n421,Loews Corp,L,0.032942,64.16,0.36,(0.56%)\n422,Evergy Inc,EVRG,0.032792,50.48,-0.58,(-1.13%)\n423,Mosaic Co,MOS,0.03266,35.63,0.43,(1.22%)\n424,Molson Coors Beverage Co B,TAP,0.032624,62.29,-0.12,(-0.19%)\n425,Zebra Technologies Corp Cl A,ZBRA,0.03257,236.95,11.04,(4.89%)\n426,Viatris Inc,VTRS,0.032115,9.80,0.21,(2.14%)\n427,Live Nation Entertainment In,LYV,0.032035,83.73,2.71,(3.34%)\n428,Host Hotels & Resorts Inc,HST,0.03173,16.38,0.34,(2.11%)\n429,Insulet Corp,PODD,0.031493,166.19,4.49,(2.77%)\n430,Match Group Inc,MTCH,0.031269,40.07,0.09,(0.23%)\n431,Interpublic Group of Cos Inc,IPG,0.031184,29.12,0.39,(1.35%)\n432,Hormel Foods Corp,HRL,0.030887,38.15,-0.19,(-0.48%)\n433,Incyte Corp,INCY,0.03067,58.93,-0.18,(-0.30%)\n434,Udr Inc,UDR,0.030252,35.67,0.28,(0.79%)\n435,Jack Henry & Associates Inc,JKHY,0.030211,150.61,2.17,(1.46%)\n436,Kimco Realty Corp,KIM,0.029862,17.73,0.24,(1.34%)\n437,Aes Corp,AES,0.029775,15.29,-0.65,(-4.05%)\n438,Bio Techne Corp,TECH,0.029742,67.67,0.10,(0.15%)\n439,Pentair Plc,PNR,0.029592,65.59,0.87,(1.34%)\n440,Rollins Inc,ROL,0.029276,37.64,0.20,(0.52%)\n441,Mgm Resorts International,MGM,0.028601,36.76,0.27,(0.74%)\n442,Ceridian Hcm Holding Inc,CDAY,0.028589,67.38,0.35,(0.52%)\n443,Brown Forman Corp Class B,BF.B,0.028542,56.78,0.14,(0.25%)\n444,Nisource Inc,NI,0.028365,24.84,-0.35,(-1.37%)\n445,Gen Digital Inc,GEN,0.028124,17.83,-0.07,(-0.37%)\n446,C.H. Robinson Worldwide Inc,CHRW,0.028048,86.31,0.02,(0.02%)\n447,Camden Property Trust,CPT,0.027984,94.56,-0.32,(-0.34%)\n448,Charles River Laboratories,CRL,0.027736,195.69,0.75,(0.38%)\n449,Healthpeak Properties Inc,PEAK,0.027617,18.15,0.10,(0.58%)\n450,Caesars Entertainment Inc,CZR,0.027217,47.52,1.54,(3.36%)\n451,Regency Centers Corp,REG,0.027131,59.98,0.85,(1.43%)\n452,Keycorp,KEY,0.0269,10.52,0.22,(2.09%)\n453,Henry Schein Inc,HSIC,0.026715,73.88,0.62,(0.84%)\n454,Globe Life Inc,GL,0.026574,110.04,0.61,(0.56%)\n455,Borgwarner Inc,BWA,0.026416,40.72,0.92,(2.31%)\n456,F5 Inc,FFIV,0.026087,160.33,2.74,(1.74%)\n457,Qorvo Inc,QRVO,0.025849,96.39,1.83,(1.93%)\n458,Teleflex Inc,TFX,0.025796,199.42,2.91,(1.48%)\n459,Allegion Plc,ALLE,0.025545,104.97,1.68,(1.63%)\n460,Westrock Co,WRK,0.025292,35.98,0.23,(0.64%)\n461,Eastman Chemical Co,EMN,0.025003,76.99,2.35,(3.15%)\n462,Wynn Resorts Ltd,WYNN,0.024938,92.21,-0.00,(-0.00%)\n463,Nrg Energy Inc,NRG,0.024681,38.55,-0.03,(-0.08%)\n464,Juniper Networks Inc,JNPR,0.024655,27.92,0.42,(1.52%)\n465,Pinnacle West Capital,PNW,0.02321,73.45,-0.71,(-0.95%)\n466,Hasbro Inc,HAS,0.02308,65.23,0.24,(0.37%)\n467,Catalent Inc,CTLT,0.023069,45.85,0.07,(0.15%)\n468,American Airlines Group Inc,AAL,0.02296,13.00,0.39,(3.05%)\n469,Fmc Corp,FMC,0.022942,66.03,0.02,(0.03%)\n470,Campbell Soup Co,CPB,0.022776,41.15,-0.31,(-0.76%)\n471,Smith (a.O.) Corp,AOS,0.022769,66.99,1.54,(2.35%)\n472,Boston Properties Inc,BXP,0.02269,59.66,0.79,(1.34%)\n473,Huntington Ingalls Industrie,HII,0.022502,204.41,1.22,(0.60%)\n474,Fox Corp Class A,FOXA,0.021902,31.47,0.55,(1.76%)\n475,Robert Half Inc,RHI,0.021872,73.78,0.64,(0.87%)\n476,Assurant Inc,AIZ,0.021618,145.63,-0.13,(-0.09%)\n477,Universal Health Services B,UHS,0.021551,127.00,2.80,(2.25%)\n478,Etsy Inc,ETSY,0.021257,63.53,1.64,(2.65%)\n479,Marketaxess Holdings Inc,MKTX,0.021132,205.89,4.11,(2.04%)\n480,News Corp Class A,NWSA,0.0209,20.00,0.35,(1.76%)\n481,Bio Rad Laboratories A,BIO,0.020548,356.10,3.63,(1.03%)\n482,Bath & Body Works Inc,BBWI,0.020412,33.19,1.04,(3.23%)\n483,Dentsply Sirona Inc,XRAY,0.020079,33.94,-0.17,(-0.51%)\n484,Solaredge Technologies Inc,SEDG,0.020026,132.35,4.34,(3.39%)\n485,Whirlpool Corp,WHR,0.019812,131.66,1.03,(0.79%)\n486,Franklin Resources Inc,BEN,0.019128,24.55,0.28,(1.14%)\n487,Generac Holdings Inc,GNRC,0.018958,110.73,1.84,(1.69%)\n488,Norwegian Cruise Line Holdin,NCLH,0.018812,16.96,0.67,(4.08%)\n489,Federal Realty Invs Trust,FRT,0.018475,91.45,1.05,(1.16%)\n490,Tapestry Inc,TPR,0.01809,28.18,0.23,(0.84%)\n491,Invesco Ltd,IVZ,0.017835,14.31,0.22,(1.53%)\n492,Paramount Global Class B,PARA,0.017208,12.89,0.11,(0.89%)\n493,Vf Corp,VFC,0.015631,16.59,-0.32,(-1.89%)\n494,Comerica Inc,CMA,0.014638,41.07,1.12,(2.81%)\n495,Davita Inc,DVA,0.014395,95.75,0.01,(0.01%)\n496,Zions Bancorp Na,ZION,0.013918,33.96,0.79,(2.39%)\n497,Ralph Lauren Corp,RL,0.013127,115.52,0.26,(0.22%)\n498,Sealed Air Corp,SEE,0.012794,32.20,0.46,(1.46%)\n499,Alaska Air Group Inc,ALK,0.012574,37.04,0.63,(1.73%)\n500,Mohawk Industries Inc,MHK,0.011998,85.15,1.23,(1.46%)\n501,Organon & Co,OGN,0.011665,16.93,0.34,(2.02%)\n502,Dxc Technology Co,DXC,0.011658,20.64,0.29,(1.40%)\n503,Fox Corp Class B,FOX,0.010545,29.16,0.53,(1.85%)\n504,News Corp Class B,NWS,0.006575,20.75,0.36,(1.74%)\n*/\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ 'use strict';
2
+
3
+ function random(min, max) {
4
+ min = Math.ceil(min);
5
+ max = Math.floor(max);
6
+ return Math.floor(Math.random() * (max - min + 1)) + min;
7
+ }
8
+ const nextRandomDouble = (min, max) => min + (max - min) * Math.random();
9
+ const initBidAsk = (priceMaxDelta, nextRandomDouble2) => {
10
+ const mid = nextRandomDouble2(0, 1e3);
11
+ const tempBid = nextRandomDouble2(mid - priceMaxDelta, mid - 1);
12
+ const ask = nextRandomDouble2(mid + 1, mid + priceMaxDelta);
13
+ const bid = tempBid < 0 ? mid : tempBid;
14
+ const newBid = Math.round(bid * 100) / 100;
15
+ const newAsk = Math.round(ask * 100) / 100;
16
+ return [newBid, newAsk];
17
+ };
18
+ const maxAsk = (bid, ask, spreadMultipler, priceMaxDelta) => {
19
+ const spread = ask - bid;
20
+ return Math.min(
21
+ ask + spreadMultipler * spread,
22
+ spread / 2 + bid + priceMaxDelta
23
+ );
24
+ };
25
+ const minAsk = (bid, ask) => {
26
+ return Math.max(bid + 1, (ask - bid) / 2 + bid);
27
+ };
28
+ const maxBid = (bid, ask) => {
29
+ const result = Math.min(ask - 1, (ask - bid) / 2 + bid);
30
+ return result < 1 ? bid + 1 : result;
31
+ };
32
+ const minBid = (bid, ask, spreadMultipler, priceMaxDelta) => {
33
+ const spread = ask - bid;
34
+ const mid = spread / 2 + bid;
35
+ const result = Math.max(
36
+ bid - Math.min(spreadMultipler * spread, 10),
37
+ mid - priceMaxDelta
38
+ );
39
+ return result < 0 ? bid : result;
40
+ };
41
+ const generateNextBidAsk = (bid, ask, spreadMultipler, priceMaxDelta, nextRandomDouble2) => {
42
+ let tempAsk = ask;
43
+ if (Math.abs(bid - ask) <= 1)
44
+ tempAsk = ask + 1;
45
+ const minBidValue = minBid(bid, tempAsk, spreadMultipler, priceMaxDelta);
46
+ const maxBidValue = maxBid(bid, tempAsk);
47
+ const minAskValue = minAsk(bid, tempAsk);
48
+ const maxAskValue = maxAsk(bid, tempAsk, spreadMultipler, priceMaxDelta);
49
+ const newBid = Math.round(nextRandomDouble2(minBidValue, maxBidValue) * 100) / 100;
50
+ const newAsk = Math.round(nextRandomDouble2(minAskValue, maxAskValue) * 100) / 100;
51
+ return [newBid, newAsk];
52
+ };
53
+
54
+ exports.generateNextBidAsk = generateNextBidAsk;
55
+ exports.initBidAsk = initBidAsk;
56
+ exports.nextRandomDouble = nextRandomDouble;
57
+ exports.random = random;
58
+ //# sourceMappingURL=data-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-utils.js","sources":["../src/data-utils.ts"],"sourcesContent":["export function random(min: number, max: number) {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1)) + min;\n}\n\nexport function randomPercentage(value: number) {\n const dec = random(2, 99);\n const percentage = dec / 100;\n return value * percentage;\n}\nexport type PriceGenerator = (min: number, max: number) => number;\n\nexport const nextRandomDouble: PriceGenerator = (min, max) =>\n min + (max - min) * Math.random();\n\nexport const initBidAsk = (\n priceMaxDelta: number,\n nextRandomDouble: PriceGenerator\n) => {\n const mid = nextRandomDouble(0, 1000);\n const tempBid = nextRandomDouble(mid - priceMaxDelta, mid - 1);\n const ask = nextRandomDouble(mid + 1, mid + priceMaxDelta);\n const bid = tempBid < 0 ? mid : tempBid;\n const newBid = Math.round(bid * 100) / 100.0;\n const newAsk = Math.round(ask * 100) / 100.0;\n return [newBid, newAsk];\n};\n\nconst maxAsk = (\n bid: number,\n ask: number,\n spreadMultipler: number,\n priceMaxDelta: number\n) => {\n const spread = ask - bid;\n return Math.min(\n ask + spreadMultipler * spread,\n spread / 2 + bid + priceMaxDelta\n );\n};\n\nconst minAsk = (bid: number, ask: number) => {\n return Math.max(bid + 1, (ask - bid) / 2 + bid);\n};\n\nconst maxBid = (bid: number, ask: number) => {\n const result = Math.min(ask - 1, (ask - bid) / 2 + bid);\n return result < 1 ? bid + 1 : result;\n};\n\nconst minBid = (\n bid: number,\n ask: number,\n spreadMultipler: number,\n priceMaxDelta: number\n) => {\n const spread = ask - bid;\n const mid = spread / 2 + bid;\n const result = Math.max(\n bid - Math.min(spreadMultipler * spread, 10),\n mid - priceMaxDelta\n );\n return result < 0 ? bid : result;\n};\n\nexport const generateNextBidAsk = (\n bid: number,\n ask: number,\n spreadMultipler: number,\n priceMaxDelta: number,\n nextRandomDouble: PriceGenerator\n) => {\n let tempAsk = ask;\n if (Math.abs(bid - ask) <= 1) tempAsk = ask + 1;\n const minBidValue = minBid(bid, tempAsk, spreadMultipler, priceMaxDelta);\n const maxBidValue = maxBid(bid, tempAsk);\n const minAskValue = minAsk(bid, tempAsk);\n const maxAskValue = maxAsk(bid, tempAsk, spreadMultipler, priceMaxDelta);\n const newBid =\n Math.round(nextRandomDouble(minBidValue, maxBidValue) * 100) / 100.0;\n const newAsk =\n Math.round(nextRandomDouble(minAskValue, maxAskValue) * 100) / 100.0;\n return [newBid, newAsk];\n};\n"],"names":["nextRandomDouble"],"mappings":"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"}
package/cjs/index.js ADDED
@@ -0,0 +1,36 @@
1
+ 'use strict';
2
+
3
+ var ArrayProxy = require('./ArrayProxy.js');
4
+ var schemas = require('./schemas.js');
5
+ var TickingArrayDataSource = require('./TickingArrayDataSource.js');
6
+ var vuuRowGenerator = require('./vuu-row-generator.js');
7
+ var vuuModules = require('./vuu-modules.js');
8
+ var basketSchemas = require('./basket/basket-schemas.js');
9
+ var basketModule = require('./basket/basket-module.js');
10
+ var simulSchemas = require('./simul/simul-schemas.js');
11
+ var simulModule = require('./simul/simul-module.js');
12
+ var Table = require('./Table.js');
13
+
14
+
15
+
16
+ exports.ArrayProxy = ArrayProxy.ArrayProxy;
17
+ exports.getAllSchemas = schemas.getAllSchemas;
18
+ exports.getSchema = schemas.getSchema;
19
+ exports.schemas = schemas.schemas;
20
+ exports.TickingArrayDataSource = TickingArrayDataSource.TickingArrayDataSource;
21
+ exports.DefaultColumnGenerator = vuuRowGenerator.DefaultColumnGenerator;
22
+ exports.DefaultRowGenerator = vuuRowGenerator.DefaultRowGenerator;
23
+ exports.defaultGenerators = vuuRowGenerator.defaultGenerators;
24
+ exports.getColumnAndRowGenerator = vuuRowGenerator.getColumnAndRowGenerator;
25
+ exports.populateArray = vuuRowGenerator.populateArray;
26
+ exports.vuuModule = vuuModules.vuuModule;
27
+ exports.basketSchemas = basketSchemas.schemas;
28
+ exports.basketModule = basketModule.basketModule;
29
+ exports.createBasketTradingRow = basketModule.createBasketTradingRow;
30
+ exports.tables = basketModule.tables;
31
+ exports.simulSchemas = simulSchemas.schemas;
32
+ exports.simulModule = simulModule.simulModule;
33
+ exports.Table = Table.Table;
34
+ exports.buildDataColumnMap = Table.buildDataColumnMap;
35
+ exports.joinTables = Table.joinTables;
36
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,37 @@
1
+ 'use strict';
2
+
3
+ const cachedValues = /* @__PURE__ */ new Map();
4
+ const getUniqueValues = (table, column, pattern = "") => {
5
+ let uniqueValues;
6
+ const cachedEntry = cachedValues.get(table);
7
+ if (cachedEntry && cachedEntry.has(column)) {
8
+ uniqueValues = cachedEntry.get(column);
9
+ } else {
10
+ const { data, map } = table;
11
+ const key = map[column];
12
+ uniqueValues = [];
13
+ const set = /* @__PURE__ */ new Set();
14
+ for (const row of data) {
15
+ const value = row[key];
16
+ if (!set.has(value)) {
17
+ set.add(value);
18
+ uniqueValues.push(value);
19
+ }
20
+ }
21
+ uniqueValues.sort();
22
+ if (cachedEntry) {
23
+ cachedEntry.set(column, uniqueValues);
24
+ } else {
25
+ cachedValues.set(table, /* @__PURE__ */ new Map([[column, uniqueValues]]));
26
+ }
27
+ }
28
+ return pattern ? uniqueValues.filter((value) => value.toString().startsWith(pattern)) : uniqueValues;
29
+ };
30
+ const makeSuggestions = (table, column, pattern) => new Promise((resolve) => {
31
+ const uniqueValues = getUniqueValues(table, column, pattern);
32
+ const result = uniqueValues.length > 20 ? uniqueValues?.slice(0, 20).map((v) => v.toString()) : uniqueValues.map((v) => v.toString());
33
+ setTimeout(() => resolve(result), 100);
34
+ });
35
+
36
+ exports.makeSuggestions = makeSuggestions;
37
+ //# sourceMappingURL=makeSuggestions.js.map
@@ -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/cjs/schemas.js ADDED
@@ -0,0 +1,28 @@
1
+ 'use strict';
2
+
3
+ var basketSchemas = require('./basket/basket-schemas.js');
4
+ var simulSchemas = require('./simul/simul-schemas.js');
5
+ var testSchemas = require('./test/test-schemas.js');
6
+
7
+ const schemas = {
8
+ ...basketSchemas.schemas,
9
+ ...simulSchemas.schemas,
10
+ ...testSchemas.schemas
11
+ };
12
+ const allSchemas = {
13
+ ...basketSchemas.schemas,
14
+ ...simulSchemas.schemas,
15
+ ...testSchemas.schemas
16
+ };
17
+ const getAllSchemas = () => schemas;
18
+ const getSchema = (tableName) => {
19
+ if (allSchemas[tableName]) {
20
+ return allSchemas[tableName];
21
+ }
22
+ throw Error(`getSchema no schema for table ${tableName}`);
23
+ };
24
+
25
+ exports.getAllSchemas = getAllSchemas;
26
+ exports.getSchema = getSchema;
27
+ exports.schemas = schemas;
28
+ //# 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,qBAAA;AAAA,EACH,GAAGC,oBAAA;AAAA,EACH,GAAGC,mBAAA;AACL,EAAA;AAEA,MAAM,UAAoE,GAAA;AAAA,EACxE,GAAGF,qBAAA;AAAA,EACH,GAAGC,oBAAA;AAAA,EACH,GAAGC,mBAAA;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,6 @@
1
+ 'use strict';
2
+
3
+ const currencies = ["CAD", "GBX", "USD", "EUR", "GBP"];
4
+
5
+ exports.currencies = currencies;
6
+ //# sourceMappingURL=currencies.js.map
@@ -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,18 @@
1
+ 'use strict';
2
+
3
+ var dataUtils = require('../../data-utils.js');
4
+ var Table = require('../../Table.js');
5
+ var simulSchemas = require('../simul-schemas.js');
6
+ var instruments = require('./instruments.js');
7
+
8
+ const instrumentsExtendedData = instruments.instrumentsData.map(
9
+ (row) => row.slice(0, -1).concat([dataUtils.random(0, 1) === 1, dataUtils.random(0, 1) === 1, (/* @__PURE__ */ new Date()).getTime()])
10
+ );
11
+ const instrumentsExtendedTable = new Table.Table(
12
+ simulSchemas.schemas.instrumentsExtended,
13
+ instrumentsExtendedData,
14
+ Table.buildDataColumnMap(simulSchemas.schemas.instrumentsExtended)
15
+ );
16
+
17
+ exports.instrumentsExtendedTable = instrumentsExtendedTable;
18
+ //# 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":["instrumentsData","random","Table","schemas","buildDataColumnMap"],"mappings":";;;;;;;AAMA,MAAM,0BAA0BA,2BAAgB,CAAA,GAAA;AAAA,EAAI,CAAC,GAClD,KAAA,GAAA,CACE,KAAM,CAAA,CAAA,EAAG,EAAE,CACX,CAAA,MAAA,CAAO,CAACC,gBAAA,CAAO,CAAG,EAAA,CAAC,MAAM,CAAG,EAAAA,gBAAA,CAAO,CAAG,EAAA,CAAC,CAAM,KAAA,CAAA,EAAA,qBAAO,IAAK,EAAA,EAAE,OAAQ,EAAC,CAAC,CAAA;AAC1E,CAAA,CAAA;AAEO,MAAM,2BAA2B,IAAIC,WAAA;AAAA,EAC1CC,oBAAQ,CAAA,mBAAA;AAAA,EACR,uBAAA;AAAA,EACAC,wBAAA,CAAmBD,qBAAQ,mBAAmB,CAAA;AAChD;;;;"}
@@ -0,0 +1,74 @@
1
+ 'use strict';
2
+
3
+ var isinGenerator = require('@thomaschaplin/isin-generator');
4
+ var currencies = require('./currencies.js');
5
+ var locations = require('./locations.js');
6
+ var lotsizes = require('./lotsizes.js');
7
+ var dataUtils = require('../../data-utils.js');
8
+ var Table = require('../../Table.js');
9
+ var simulSchemas = require('../simul-schemas.js');
10
+
11
+ const InstrumentColumnMap = {
12
+ bbg: 0,
13
+ currency: 1,
14
+ description: 2,
15
+ exchange: 3,
16
+ string: 4,
17
+ number: 5,
18
+ ric: 6,
19
+ price: 7
20
+ };
21
+ const instrumentsData = [];
22
+ const chars1 = Array.from("ABCEFGHKMN");
23
+ const chars2 = Array.from("ABCEFGHKMN");
24
+ const chars3 = Array.from("OPQRTUVWYZ");
25
+ const chars4 = Array.from("OPQRTUVWYZ");
26
+ const randomPrice = () => {
27
+ const price = dataUtils.random(0, 1e4);
28
+ const multiplier = dataUtils.random(1, 10);
29
+ return price / multiplier;
30
+ };
31
+ let count = 0;
32
+ for (const char1 of chars1) {
33
+ for (const char2 of chars2) {
34
+ for (const char3 of chars3) {
35
+ for (const char4 of chars4) {
36
+ const suffix = locations.suffixes[count % 8];
37
+ const ric = char1 + char2 + char3 + char4 + "." + suffix;
38
+ const bbg = char1 + char2 + char3 + char4 + " " + suffix;
39
+ const description = `${ric} description`;
40
+ const currency = currencies.currencies[dataUtils.random(0, 4)];
41
+ const isin = isinGenerator.isinGenerator();
42
+ const lotSize = lotsizes.lotsizes[dataUtils.random(0, lotsizes.lotsizes.length - 1)];
43
+ const exchange = locations.locations[suffix][1];
44
+ const price = randomPrice();
45
+ instrumentsData.push([
46
+ bbg,
47
+ currency,
48
+ description,
49
+ exchange,
50
+ String(isin),
51
+ lotSize,
52
+ ric,
53
+ price
54
+ ]);
55
+ count++;
56
+ }
57
+ }
58
+ }
59
+ }
60
+ const getRic = (defaultRic) => {
61
+ const row = instrumentsData.at(dataUtils.random(0, instrumentsData.length));
62
+ return row?.[InstrumentColumnMap.ric] ?? defaultRic;
63
+ };
64
+ const instrumentsTable = new Table.Table(
65
+ simulSchemas.schemas.instruments,
66
+ instrumentsData,
67
+ Table.buildDataColumnMap(simulSchemas.schemas.instruments)
68
+ );
69
+
70
+ exports.InstrumentColumnMap = InstrumentColumnMap;
71
+ exports.getRic = getRic;
72
+ exports.instrumentsData = instrumentsData;
73
+ exports.instrumentsTable = instrumentsTable;
74
+ //# 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":["random","suffixes","currencies","isinGenerator","lotsizes","locations","Table","schemas","buildDataColumnMap"],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ const locations = {
4
+ L: ["London PLC", "XLON/LSE-SETS"],
5
+ N: ["Corporation", "XNGS/NAS-GSM"],
6
+ AS: ["B.V.", "XAMS/ENA-MAIN"],
7
+ OQ: ["Co.", "XNYS/NYS-MAIN"],
8
+ PA: ["Paris", "PAR/EUR_FR"],
9
+ MI: ["Milan", "MIL/EUR_IT"],
10
+ FR: ["Frankfurt", "FR/EUR_DE"],
11
+ AT: ["Athens", "AT/EUR_GR"]
12
+ };
13
+ const suffixes = ["L", "N", "OQ", "AS", "PA", "MI", "FR", "AT"];
14
+
15
+ exports.locations = locations;
16
+ exports.suffixes = suffixes;
17
+ //# 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,28 @@
1
+ 'use strict';
2
+
3
+ const lotsizes = [
4
+ 1,
5
+ 2,
6
+ 5,
7
+ 10,
8
+ 50,
9
+ 50,
10
+ 70,
11
+ 100,
12
+ 100,
13
+ 100,
14
+ 120,
15
+ 150,
16
+ 150,
17
+ 200,
18
+ 500,
19
+ 700,
20
+ 1e3,
21
+ 2e3,
22
+ 2500,
23
+ 5e3,
24
+ 1e4
25
+ ];
26
+
27
+ exports.lotsizes = lotsizes;
28
+ //# 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,43 @@
1
+ 'use strict';
2
+
3
+ var currencies = require('./currencies.js');
4
+ var instruments = require('./instruments.js');
5
+ var dataUtils = require('../../data-utils.js');
6
+ var Table = require('../../Table.js');
7
+ var simulSchemas = require('../simul-schemas.js');
8
+
9
+ const SIDE = ["BUY", "SELL"];
10
+ const traders = ["Trader A", "Trader B", "Trader C"];
11
+ const ordersData = [];
12
+ const now = +/* @__PURE__ */ new Date();
13
+ for (let i = 0; i < 100; i++) {
14
+ const ccy = currencies.currencies[dataUtils.random(0, currencies.currencies.length - 1)];
15
+ const created = now;
16
+ const filledQuantity = 100;
17
+ const lastUpdate = now;
18
+ const orderId = `ORD${("0000" + i).slice(-4)}`;
19
+ const quantity = 1e3;
20
+ const ric = instruments.getRic("AAP.L");
21
+ const side = SIDE[dataUtils.random(0, 1)];
22
+ const trader = traders[dataUtils.random(0, traders.length - 1)];
23
+ ordersData.push([
24
+ ccy,
25
+ created,
26
+ filledQuantity,
27
+ lastUpdate,
28
+ orderId,
29
+ quantity,
30
+ ric,
31
+ side,
32
+ trader
33
+ ]);
34
+ }
35
+ const ordersTable = new Table.Table(
36
+ simulSchemas.schemas.orders,
37
+ ordersData,
38
+ Table.buildDataColumnMap(simulSchemas.schemas.instruments)
39
+ );
40
+
41
+ exports.ordersData = ordersData;
42
+ exports.ordersTable = ordersTable;
43
+ //# 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":["currencies","random","getRic","Table","schemas","buildDataColumnMap"],"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,MAAMA,qBAAW,CAAAC,gBAAA,CAAO,GAAGD,qBAAW,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,GAAME,mBAAO,OAAO,CAAA,CAAA;AAC1B,EAAA,MAAM,IAAO,GAAA,IAAA,CAAKD,gBAAO,CAAA,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA;AAC9B,EAAA,MAAM,SAAS,OAAQ,CAAAA,gBAAA,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,IAAIE,WAAA;AAAA,EAC7BC,oBAAQ,CAAA,MAAA;AAAA,EACR,UAAA;AAAA,EACAC,wBAAA,CAAmBD,qBAAQ,WAAW,CAAA;AACxC;;;;;"}
@@ -0,0 +1,71 @@
1
+ 'use strict';
2
+
3
+ var Table = require('../../Table.js');
4
+ var UpdateGenerator = require('../../UpdateGenerator.js');
5
+ var simulSchemas = require('../simul-schemas.js');
6
+ var instruments = require('./instruments.js');
7
+ var dataUtils = require('../../data-utils.js');
8
+ var constituents = require('../../basket/reference-data/constituents.js');
9
+
10
+ const { bid, bidSize, ask, askSize } = Table.buildDataColumnMap(simulSchemas.schemas.prices);
11
+ const pricesUpdateGenerator = new UpdateGenerator.BaseUpdateGenerator({
12
+ bid,
13
+ bidSize,
14
+ ask,
15
+ askSize
16
+ });
17
+ const requiredInstrumentFields = ["ric", "price"];
18
+ const pricesData = instruments.instrumentsData.map((instrument) => {
19
+ const { ric, price: priceSeed } = requiredInstrumentFields.reduce(
20
+ (obj, f) => ({ ...obj, [f]: instrument[instruments.InstrumentColumnMap[f]] }),
21
+ {}
22
+ );
23
+ const spread = dataUtils.random(0, 10);
24
+ const ask2 = priceSeed + spread / 2;
25
+ const askSize2 = dataUtils.random(1e3, 3e3);
26
+ const bid2 = priceSeed - spread / 2;
27
+ const bidSize2 = dataUtils.random(1e3, 3e3);
28
+ const close = priceSeed + dataUtils.random(0, 1) / 10;
29
+ const last = priceSeed + dataUtils.random(0, 1) / 10;
30
+ const open = priceSeed + dataUtils.random(0, 1) / 10;
31
+ const phase = "C";
32
+ const scenario = "close";
33
+ return [ask2, askSize2, bid2, bidSize2, close, last, open, phase, ric, scenario];
34
+ });
35
+ for (const [, , , lastTrade, ric] of constituents) {
36
+ const priceSeed = parseFloat(String(lastTrade));
37
+ if (!isNaN(priceSeed)) {
38
+ const spread = dataUtils.random(0, 10);
39
+ const ask2 = priceSeed + spread / 2;
40
+ const askSize2 = dataUtils.random(1e3, 3e3);
41
+ const bid2 = priceSeed - spread / 2;
42
+ const bidSize2 = dataUtils.random(1e3, 3e3);
43
+ const close = priceSeed + dataUtils.random(0, 1) / 10;
44
+ const last = priceSeed + dataUtils.random(0, 1) / 10;
45
+ const open = priceSeed + dataUtils.random(0, 1) / 10;
46
+ const phase = "C";
47
+ const scenario = "close";
48
+ pricesData.push([
49
+ ask2,
50
+ askSize2,
51
+ bid2,
52
+ bidSize2,
53
+ close,
54
+ last,
55
+ open,
56
+ phase,
57
+ ric,
58
+ scenario
59
+ ]);
60
+ }
61
+ }
62
+ const pricesTable = new Table.Table(
63
+ simulSchemas.schemas.prices,
64
+ pricesData,
65
+ Table.buildDataColumnMap(simulSchemas.schemas.prices),
66
+ pricesUpdateGenerator
67
+ );
68
+
69
+ exports.pricesData = pricesData;
70
+ exports.pricesTable = pricesTable;
71
+ //# 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":["buildDataColumnMap","schemas","BaseUpdateGenerator","instrumentsData","InstrumentColumnMap","random","ask","askSize","bid","bidSize","basketConstituentData","Table"],"mappings":"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"}