@tradejs/cli 2.0.18 → 2.0.20

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 (56) hide show
  1. package/dist/cli.js +14522 -15704
  2. package/dist/lib/aiExport.js +15 -1608
  3. package/dist/lib/aiPocketSearch.js +499 -67
  4. package/dist/lib/aiPocketSearchCli.js +113 -0
  5. package/dist/lib/aiTrainCharts.js +14 -1
  6. package/dist/lib/aiTrainMetrics.js +4 -1
  7. package/dist/lib/aiTrainResearch.js +88 -54
  8. package/dist/lib/binanceMarketContextBackfill.js +7 -6
  9. package/dist/lib/coinMarketCapContextBackfill.js +19 -18
  10. package/dist/lib/coreResearch.js +2738 -0
  11. package/dist/lib/derivativesContextBackfill.js +10 -9
  12. package/dist/lib/executionCalibration.js +6 -3
  13. package/dist/lib/hyperliquidWhaleBackfill.js +8 -8
  14. package/dist/lib/hyperliquidWhaleStream.js +4 -4
  15. package/dist/lib/marketContextPrepare.js +83 -1686
  16. package/dist/lib/runEnvironment.js +14 -1666
  17. package/dist/lib/runFormatting.js +1 -1607
  18. package/dist/lib/runtimeDebugEvidence.js +2 -48
  19. package/dist/lib/runtimeLineage.js +81 -48
  20. package/dist/lib/runtimeRedis.js +6 -57
  21. package/dist/lib/runtimeScorecard.js +153 -10
  22. package/dist/lib/runtimeStrategyBacktest.js +2 -48
  23. package/dist/lib/strategyGateFingerprint.js +80 -0
  24. package/dist/lib/strategyRelease.js +1365 -0
  25. package/dist/scripts/aiExport.js +17 -1610
  26. package/dist/scripts/aiPocketSearch.js +1070 -1770
  27. package/dist/scripts/aiTrain.js +108 -1688
  28. package/dist/scripts/backtest.js +120 -1760
  29. package/dist/scripts/binanceMarketIngest.js +5 -4
  30. package/dist/scripts/candlesMigrateProvider.js +6 -5186
  31. package/dist/scripts/cleanupMarketContext.js +4 -3
  32. package/dist/scripts/continuity.js +4 -3
  33. package/dist/scripts/coreResearch.js +2830 -0
  34. package/dist/scripts/derivativesIngest.js +6 -4
  35. package/dist/scripts/derivativesIngestCoinalyzeAll.js +5 -4
  36. package/dist/scripts/doctor.js +2 -5184
  37. package/dist/scripts/executionCalibration.js +6 -3
  38. package/dist/scripts/hyperliquidWhaleBackfill.js +8 -8
  39. package/dist/scripts/hyperliquidWhaleIngest.js +4 -4
  40. package/dist/scripts/hyperliquidWhalesUpdate.js +1 -1
  41. package/dist/scripts/migration.js +3 -3
  42. package/dist/scripts/mlExport.js +1 -1607
  43. package/dist/scripts/replay.js +239 -1855
  44. package/dist/scripts/replayRunner.js +239 -1855
  45. package/dist/scripts/replayRuntimeEvidence.js +29 -62
  46. package/dist/scripts/researchAuto.js +3 -49
  47. package/dist/scripts/results.js +1 -1607
  48. package/dist/scripts/runtimeEvidence.js +18 -56
  49. package/dist/scripts/runtimeParity.js +121 -1746
  50. package/dist/scripts/runtimeScorecard.js +883 -29
  51. package/dist/scripts/signals.js +1178 -2724
  52. package/dist/scripts/signalsDaemon.js +1183 -2696
  53. package/dist/scripts/signalsSummary.js +4 -26
  54. package/dist/scripts/strategyRelease.js +1469 -0
  55. package/dist/workers/testerWorker.js +2 -2
  56. package/package.json +13 -9
@@ -169,7 +169,8 @@ var extractRuntimeTradeRows = (runtimePayload) => {
169
169
  const signal = asRecord(redisValues?.signal) ?? (signalId ? signalsById.get(signalId) ?? null : null) ?? (shapeKey ? signalsByShape.get(shapeKey) ?? null : null);
170
170
  return {
171
171
  trade,
172
- signal
172
+ signal,
173
+ runtimeLineage: asRecord(trade.runtimeLineage) ?? null
173
174
  };
174
175
  }).filter((row) => row != null);
175
176
  };
@@ -471,7 +472,8 @@ var buildSample = ({
471
472
  direction: direction ?? match?.direction ?? null,
472
473
  expectedPrice: match?.backtestPrice ?? null,
473
474
  actualPrice: match?.runtimePrice ?? null
474
- })
475
+ }),
476
+ runtimeLineage: row.runtimeLineage
475
477
  };
476
478
  };
477
479
  var buildReplayOnlySample = (match) => ({
@@ -518,7 +520,8 @@ var buildReplayOnlySample = (match) => ({
518
520
  direction: match.direction,
519
521
  expectedPrice: match.backtestPrice,
520
522
  actualPrice: match.runtimePrice
521
- })
523
+ }),
524
+ runtimeLineage: null
522
525
  });
523
526
  var hasTelemetry = (sample) => sample.signalClosePrice != null || sample.arrivalMid != null || sample.orderSubmitTime != null || sample.fillAvgPrice != null || sample.fillTime != null || sample.fee != null;
524
527
  var hasFullTelemetry = (sample) => sample.signalClosePrice != null && sample.arrivalMid != null && sample.orderSubmitTime != null && sample.orderAckTime != null && sample.fillAvgPrice != null && sample.fillTime != null;
@@ -37,7 +37,7 @@ var import_args = __toESM(require("args"));
37
37
 
38
38
  // src/lib/hyperliquidWhaleBackfill.ts
39
39
  var import_progress = __toESM(require("progress"));
40
- var import_timescale = require("@tradejs/infra/timescale");
40
+ var import_hyperliquidWhales = require("@tradejs/infra/timescale/hyperliquidWhales");
41
41
  var import_strategies = require("@tradejs/node/strategies");
42
42
 
43
43
  // src/lib/hyperliquidWhaleData.ts
@@ -292,7 +292,7 @@ var backfillHyperliquidWhaleContext = async (params) => {
292
292
  };
293
293
  const fromMs = Math.floor(params.startMs / HYPERLIQUID_WHALE_BUCKET_MS) * HYPERLIQUID_WHALE_BUCKET_MS;
294
294
  const toMs = minuteCeil(params.endMs);
295
- const cached = await (0, import_timescale.hasHyperliquidWhaleBackfillCoverage)({
295
+ const cached = await (0, import_hyperliquidWhales.hasHyperliquidWhaleBackfillCoverage)({
296
296
  fromMs,
297
297
  toMs,
298
298
  ...identity
@@ -341,7 +341,7 @@ var backfillHyperliquidWhaleContext = async (params) => {
341
341
  items: whales.addresses,
342
342
  concurrency,
343
343
  worker: async (address) => {
344
- const previous = await (0, import_timescale.getHyperliquidWhaleWalletCoverage)({
344
+ const previous = await (0, import_hyperliquidWhales.getHyperliquidWhaleWalletCoverage)({
345
345
  address,
346
346
  fromMs,
347
347
  toMs,
@@ -368,8 +368,8 @@ var backfillHyperliquidWhaleContext = async (params) => {
368
368
  identity
369
369
  })
370
370
  ).filter((row) => row != null);
371
- await (0, import_timescale.upsertHyperliquidWhaleTradeEvents)(addressEvents);
372
- await (0, import_timescale.upsertHyperliquidWhaleWalletCoverage)({
371
+ await (0, import_hyperliquidWhales.upsertHyperliquidWhaleTradeEvents)(addressEvents);
372
+ await (0, import_hyperliquidWhales.upsertHyperliquidWhaleWalletCoverage)({
373
373
  address,
374
374
  fromMs,
375
375
  toMs,
@@ -387,7 +387,7 @@ var backfillHyperliquidWhaleContext = async (params) => {
387
387
  const normalizedError = error instanceof Error ? error : new Error(String(error));
388
388
  failures.push(normalizedError);
389
389
  failedWallets += 1;
390
- await (0, import_timescale.upsertHyperliquidWhaleWalletCoverage)({
390
+ await (0, import_hyperliquidWhales.upsertHyperliquidWhaleWalletCoverage)({
391
391
  address,
392
392
  fromMs,
393
393
  toMs,
@@ -406,7 +406,7 @@ var backfillHyperliquidWhaleContext = async (params) => {
406
406
  );
407
407
  }
408
408
  });
409
- const buckets = await (0, import_timescale.rebuildHyperliquidWhaleFlowRows)({
409
+ const buckets = await (0, import_hyperliquidWhales.rebuildHyperliquidWhaleFlowRows)({
410
410
  fromMs,
411
411
  toMs,
412
412
  ...identity
@@ -422,7 +422,7 @@ var backfillHyperliquidWhaleContext = async (params) => {
422
422
  }
423
423
  );
424
424
  let displayedCoverageBuckets = 0;
425
- const coverageBuckets = await (0, import_timescale.rebuildHyperliquidWhaleCoverageRows)({
425
+ const coverageBuckets = await (0, import_hyperliquidWhales.rebuildHyperliquidWhaleCoverageRows)({
426
426
  fromMs,
427
427
  toMs,
428
428
  expectedWhales: whales.addresses.length,
@@ -26,7 +26,7 @@ module.exports = __toCommonJS(hyperliquidWhaleIngest_exports);
26
26
 
27
27
  // src/lib/hyperliquidWhaleStream.ts
28
28
  var import_ws = require("ws");
29
- var import_timescale = require("@tradejs/infra/timescale");
29
+ var import_hyperliquidWhales = require("@tradejs/infra/timescale/hyperliquidWhales");
30
30
  var import_strategies = require("@tradejs/node/strategies");
31
31
 
32
32
  // src/lib/hyperliquidWhaleData.ts
@@ -186,7 +186,7 @@ var runHyperliquidWhaleStream = async (params) => {
186
186
  const flush = () => {
187
187
  if (!buffer.length) return writes;
188
188
  const batch = buffer.splice(0, buffer.length);
189
- writes = writes.then(() => (0, import_timescale.upsertHyperliquidWhaleTradeEvents)(batch));
189
+ writes = writes.then(() => (0, import_hyperliquidWhales.upsertHyperliquidWhaleTradeEvents)(batch));
190
190
  return writes;
191
191
  };
192
192
  const recordStreamCoverage = (toMs) => {
@@ -205,7 +205,7 @@ var runHyperliquidWhaleStream = async (params) => {
205
205
  })
206
206
  );
207
207
  streamCoverageToMs = toMs;
208
- writes = writes.then(() => (0, import_timescale.upsertHyperliquidWhaleCoverageRows)(rows));
208
+ writes = writes.then(() => (0, import_hyperliquidWhales.upsertHyperliquidWhaleCoverageRows)(rows));
209
209
  return writes;
210
210
  };
211
211
  const finalize = () => {
@@ -213,7 +213,7 @@ var runHyperliquidWhaleStream = async (params) => {
213
213
  const fromMs = Math.max(0, toMs - REBUILD_LOOKBACK_MS);
214
214
  recordStreamCoverage(toMs);
215
215
  writes = writes.then(
216
- () => (0, import_timescale.rebuildHyperliquidWhaleFlowRows)({
216
+ () => (0, import_hyperliquidWhales.rebuildHyperliquidWhaleFlowRows)({
217
217
  fromMs,
218
218
  toMs,
219
219
  deleteEventsBeforeMs: toMs - RAW_EVENT_RETENTION_MS,
@@ -40,7 +40,7 @@ var import_strategies2 = require("@tradejs/node/strategies");
40
40
 
41
41
  // src/lib/hyperliquidWhaleBackfill.ts
42
42
  var import_progress = __toESM(require("progress"));
43
- var import_timescale = require("@tradejs/infra/timescale");
43
+ var import_hyperliquidWhales = require("@tradejs/infra/timescale/hyperliquidWhales");
44
44
  var import_strategies = require("@tradejs/node/strategies");
45
45
 
46
46
  // src/lib/hyperliquidWhaleData.ts
@@ -37,7 +37,7 @@ var import_progress = __toESM(require("progress"));
37
37
  var import_chalk = __toESM(require("chalk"));
38
38
  var import_logger = require("@tradejs/infra/logger");
39
39
  var import_files = require("@tradejs/infra/files");
40
- var import_timescale = require("@tradejs/infra/timescale");
40
+ var import_candles = require("@tradejs/infra/timescale/candles");
41
41
  var DIR = "data/history";
42
42
  var re = /^(.+?)_(\d+)\.json$/;
43
43
  var BATCH = 2e3;
@@ -53,9 +53,9 @@ var migrateFile = async (file) => {
53
53
  [],
54
54
  projectRoot
55
55
  );
56
- const rows = (0, import_timescale.toRows)("bybit", symbol, interval, data);
56
+ const rows = (0, import_candles.toRows)("bybit", symbol, interval, data);
57
57
  for (let i = 0; i < rows.length; i += BATCH) {
58
- await (0, import_timescale.upsertCandles)(rows.slice(i, i + BATCH));
58
+ await (0, import_candles.upsertCandles)(rows.slice(i, i + BATCH));
59
59
  }
60
60
  };
61
61
  var main = async () => {