@quantbrasil/cli 0.1.0-beta.13 → 0.1.0-beta.15

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 (40) hide show
  1. package/README.md +5 -0
  2. package/dist/cli/client.d.ts.map +1 -1
  3. package/dist/cli/client.js +27 -1
  4. package/dist/cli/errors.d.ts +3 -0
  5. package/dist/cli/errors.d.ts.map +1 -1
  6. package/dist/cli/errors.js +8 -0
  7. package/dist/cli/index.d.ts +4 -0
  8. package/dist/cli/index.d.ts.map +1 -1
  9. package/dist/cli/index.js +16 -0
  10. package/dist/commands/backtests.d.ts +183 -0
  11. package/dist/commands/backtests.d.ts.map +1 -0
  12. package/dist/commands/backtests.js +525 -0
  13. package/dist/commands/news.d.ts +48 -0
  14. package/dist/commands/news.d.ts.map +1 -0
  15. package/dist/commands/news.js +85 -0
  16. package/dist/index.d.ts +2 -0
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +2 -0
  19. package/dist/vendor/core/capabilities/backtests.d.ts +207 -0
  20. package/dist/vendor/core/capabilities/backtests.d.ts.map +1 -0
  21. package/dist/vendor/core/capabilities/backtests.js +239 -0
  22. package/dist/vendor/core/capabilities/index.d.ts +2 -0
  23. package/dist/vendor/core/capabilities/index.d.ts.map +1 -1
  24. package/dist/vendor/core/capabilities/index.js +2 -0
  25. package/dist/vendor/core/capabilities/news.d.ts +54 -0
  26. package/dist/vendor/core/capabilities/news.d.ts.map +1 -0
  27. package/dist/vendor/core/capabilities/news.js +65 -0
  28. package/dist/vendor/core/capabilities/registry.d.ts +512 -0
  29. package/dist/vendor/core/capabilities/registry.d.ts.map +1 -1
  30. package/dist/vendor/core/capabilities/registry.js +4 -0
  31. package/dist/vendor/core/capabilities/types.d.ts +1 -1
  32. package/dist/vendor/core/capabilities/types.d.ts.map +1 -1
  33. package/package.json +1 -1
  34. package/skills/quantbrasil/SKILL.md +8 -4
  35. package/skills/quantbrasil/references/backtests.md +173 -0
  36. package/skills/quantbrasil/references/cli.md +45 -0
  37. package/skills/quantbrasil/references/costs.md +6 -1
  38. package/skills/quantbrasil/references/quality-eval-queries.json +30 -0
  39. package/skills/quantbrasil/references/unsupported.md +5 -0
  40. package/skills/quantbrasil/references/workflows.md +46 -0
package/README.md CHANGED
@@ -84,6 +84,11 @@ quantbrasil screening indicators
84
84
  quantbrasil screening run --system acoes-mais-liquidas --query-file ./screening.json
85
85
  quantbrasil screening run --watchlist 93 --query-file ./screening.json --limit 25
86
86
  cat ./screening.json | quantbrasil screening run --holding 182 --query-file -
87
+ quantbrasil backtests strategies
88
+ quantbrasil backtests info ifr2
89
+ quantbrasil backtests run ifr2 PETR4 --timeframe D1 --from 2025-01-01 --to 2026-01-01
90
+ quantbrasil backtests run ifr2 PRIO3 --timeframe D1 --param rsi=15
91
+ quantbrasil backtests run ifr2 PETR4 --timeframe D1 --param rsi=30 --param window=2 --json
87
92
  ```
88
93
 
89
94
  Example `screening.json`:
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/cli/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EAEb,KAAK,YAAY,EACjB,KAAK,SAAS,EACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,QAAQ,EAA8B,MAAM,aAAa,CAAC;AAEnE,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,MAAM,WAAW,8BAA8B;IAC7C,UAAU,EAAE,YAAY,CAAC;IACzB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,wBAAsB,sBAAsB,CAC1C,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,eAAe,CAAC,CAU1B;AAED,wBAAsB,mBAAmB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,EACvE,OAAO,EAAE,8BAA8B,+DAyBxC;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,QAAQ,CAgElE"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/cli/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EAEb,KAAK,YAAY,EACjB,KAAK,SAAS,EACf,MAAM,YAAY,CAAC;AACpB,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,QAAQ,EAA8B,MAAM,aAAa,CAAC;AAEnE,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,MAAM,WAAW,8BAA8B;IAC7C,UAAU,EAAE,YAAY,CAAC;IACzB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAED,wBAAsB,sBAAsB,CAC1C,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,eAAe,CAAC,CAU1B;AAED,wBAAsB,mBAAmB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,EACvE,OAAO,EAAE,8BAA8B,+DAyBxC;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,QAAQ,CAmElE"}
@@ -50,7 +50,10 @@ export function mapCliDeskHttpError(error) {
50
50
  return createHttpValidationError(error, detail);
51
51
  }
52
52
  if (error.status === 429) {
53
- return new CliError("rate_limited", detail ?? "Rate limit exceeded. Wait before retrying.", buildHttpErrorOptions(error, "backend"));
53
+ return new CliError("rate_limited", detail ?? "Rate limit exceeded. Wait before retrying.", {
54
+ ...buildHttpErrorOptions(error, "backend"),
55
+ retryAfterSeconds: resolveRetryAfterSeconds(error.body),
56
+ });
54
57
  }
55
58
  if (detail) {
56
59
  return new CliError(error.status >= 502 && error.status <= 504
@@ -115,6 +118,29 @@ function resolveObjectMessage(value) {
115
118
  const message = value.message;
116
119
  return typeof message === "string" && message.trim() ? message : null;
117
120
  }
121
+ function resolveRetryAfterSeconds(payload) {
122
+ for (const candidate of resolveErrorObjects(payload)) {
123
+ const value = candidate.retry_after_seconds;
124
+ if (typeof value === "number" && Number.isFinite(value) && value > 0) {
125
+ return Math.ceil(value);
126
+ }
127
+ }
128
+ return undefined;
129
+ }
130
+ function resolveErrorObjects(payload) {
131
+ if (!payload || typeof payload !== "object" || Array.isArray(payload)) {
132
+ return [];
133
+ }
134
+ const root = payload;
135
+ const objects = [root];
136
+ for (const key of ["detail", "error"]) {
137
+ const value = root[key];
138
+ if (value && typeof value === "object" && !Array.isArray(value)) {
139
+ objects.push(value);
140
+ }
141
+ }
142
+ return objects;
143
+ }
118
144
  function formatValidationDetail(value) {
119
145
  if (!value || typeof value !== "object" || Array.isArray(value)) {
120
146
  return null;
@@ -7,6 +7,7 @@ export interface CliErrorOptions extends ErrorOptions {
7
7
  status?: number;
8
8
  path?: string;
9
9
  requestId?: string;
10
+ retryAfterSeconds?: number;
10
11
  }
11
12
  export interface CliErrorPayload {
12
13
  ok: false;
@@ -18,6 +19,7 @@ export interface CliErrorPayload {
18
19
  status?: number;
19
20
  path?: string;
20
21
  request_id?: string;
22
+ retry_after_seconds?: number;
21
23
  };
22
24
  }
23
25
  export declare class CliError extends Error {
@@ -27,6 +29,7 @@ export declare class CliError extends Error {
27
29
  readonly status?: number;
28
30
  readonly path?: string;
29
31
  readonly requestId?: string;
32
+ readonly retryAfterSeconds?: number;
30
33
  constructor(code: CliErrorCode, message: string, options: CliErrorOptions);
31
34
  }
32
35
  export declare function createCliValidationError(message: string): CliError;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/cli/errors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,4MAYlB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN,SAAS,GACT,QAAQ,GACR,SAAS,GACT,YAAY,GACZ,YAAY,CAAC;AAEjB,MAAM,WAAW,eAAgB,SAAQ,YAAY;IACnD,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE;QACL,IAAI,EAAE,YAAY,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,gBAAgB,CAAC;QAC3B,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,qBAAa,QAAS,SAAQ,KAAK;IACjC,SAAgB,IAAI,EAAE,YAAY,CAAC;IACnC,SAAgB,QAAQ,EAAE,gBAAgB,CAAC;IAC3C,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,SAAgB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChC,SAAgB,IAAI,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAgB,SAAS,CAAC,EAAE,MAAM,CAAC;gBAEvB,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe;CAU1E;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAIlE;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAI9D;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAIpE;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAItE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAqC1D;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAEpE;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAE7D;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,QAAQ,GAAG,eAAe,CAwBrE"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/cli/errors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,4MAYlB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN,SAAS,GACT,QAAQ,GACR,SAAS,GACT,YAAY,GACZ,YAAY,CAAC;AAEjB,MAAM,WAAW,eAAgB,SAAQ,YAAY;IACnD,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE;QACL,IAAI,EAAE,YAAY,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,gBAAgB,CAAC;QAC3B,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC;CACH;AAED,qBAAa,QAAS,SAAQ,KAAK;IACjC,SAAgB,IAAI,EAAE,YAAY,CAAC;IACnC,SAAgB,QAAQ,EAAE,gBAAgB,CAAC;IAC3C,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,SAAgB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChC,SAAgB,IAAI,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAgB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnC,SAAgB,iBAAiB,CAAC,EAAE,MAAM,CAAC;gBAE/B,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe;CAW1E;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAIlE;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAI9D;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAIpE;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,CAItE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAqC1D;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAEpE;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,CAM7D;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,QAAQ,GAAG,eAAe,CA4BrE"}
@@ -18,6 +18,7 @@ export class CliError extends Error {
18
18
  status;
19
19
  path;
20
20
  requestId;
21
+ retryAfterSeconds;
21
22
  constructor(code, message, options) {
22
23
  super(message, options);
23
24
  this.name = "CliError";
@@ -27,6 +28,7 @@ export class CliError extends Error {
27
28
  this.status = options.status;
28
29
  this.path = options.path;
29
30
  this.requestId = options.requestId;
31
+ this.retryAfterSeconds = options.retryAfterSeconds;
30
32
  }
31
33
  }
32
34
  export function createCliValidationError(message) {
@@ -85,6 +87,9 @@ export function shouldEmitJsonError(argv) {
85
87
  return argv.includes("--json");
86
88
  }
87
89
  export function formatCliErrorMessage(error) {
90
+ if (error.code === "rate_limited" && error.retryAfterSeconds !== undefined) {
91
+ return `[${error.code}] ${error.message} Tente novamente em ${error.retryAfterSeconds}s.`;
92
+ }
88
93
  return `[${error.code}] ${error.message}`;
89
94
  }
90
95
  export function buildCliErrorPayload(error) {
@@ -106,6 +111,9 @@ export function buildCliErrorPayload(error) {
106
111
  if (error.requestId !== undefined) {
107
112
  payload.error.request_id = error.requestId;
108
113
  }
114
+ if (error.retryAfterSeconds !== undefined) {
115
+ payload.error.retry_after_seconds = error.retryAfterSeconds;
116
+ }
109
117
  return payload;
110
118
  }
111
119
  function isCommanderError(error) {
@@ -1,7 +1,9 @@
1
1
  import { Command } from "commander";
2
+ import { runBacktestsInfoCommand, runBacktestsRunCommand, runBacktestsStrategiesCommand } from "../commands/backtests.js";
2
3
  import { type CapabilitiesCommandIO, runCapabilitiesCommand } from "../commands/capabilities.js";
3
4
  import { runCointegrationPairCommand } from "../commands/cointegration.js";
4
5
  import { runMarketAssetsCommand, runMarketPriceCommand } from "../commands/market.js";
6
+ import { runAssetNewsCommand } from "../commands/news.js";
5
7
  import { runInitCommand } from "../commands/init.js";
6
8
  import { runHoldingCreateCommand, runHoldingBetaCommand, runHoldingGetCommand, runHoldingHistoricalReturnCommand, runHoldingListCommand, runHoldingRenameCommand, runHoldingSetPositionsCommand, runHoldingSetTargetsCommand, runHoldingVarCommand, runWatchlistAddAssetsCommand, runWatchlistCreateCommand, runWatchlistGetCommand, runWatchlistListCommand, runWatchlistRemoveAssetsCommand, runWatchlistRenameCommand } from "../commands/portfolios.js";
7
9
  import { runRankingsCurrentCommand, runRankingsListCommand, runRankingsReturnCommand } from "../commands/rankings.js";
@@ -28,9 +30,11 @@ export declare function createCliProgram(options?: CliProgramOptions): Command;
28
30
  export declare function run(argv?: string[], options?: CliRunOptions): Promise<void>;
29
31
  export { runAuthLoginCommand, runAuthLogoutCommand, runAuthWhoamiCommand, } from "../commands/auth.js";
30
32
  export { runAssetOverviewCommand } from "../commands/assets.js";
33
+ export { runBacktestsInfoCommand, runBacktestsRunCommand, runBacktestsStrategiesCommand, };
31
34
  export { runCapabilitiesCommand, runStatusCommand };
32
35
  export { runInitCommand };
33
36
  export { runMarketAssetsCommand, runMarketPriceCommand };
37
+ export { runAssetNewsCommand };
34
38
  export { runRankingsCurrentCommand, runRankingsListCommand, runRankingsReturnCommand, };
35
39
  export { runCointegrationPairCommand };
36
40
  export { runScreeningIndicatorsCommand, runScreeningRunCommand, runScreeningUniversesCommand, };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -2,9 +2,11 @@ import { createRequire } from "node:module";
2
2
  import { Command } from "commander";
3
3
  import { registerAssetsCommands, } from "../commands/assets.js";
4
4
  import { registerAuthCommands, runAuthWhoamiCommand, } from "../commands/auth.js";
5
+ import { registerBacktestsCommands, runBacktestsInfoCommand, runBacktestsRunCommand, runBacktestsStrategiesCommand, } from "../commands/backtests.js";
5
6
  import { registerCapabilitiesCommand, runCapabilitiesCommand, } from "../commands/capabilities.js";
6
7
  import { registerCointegrationCommands, runCointegrationPairCommand, } from "../commands/cointegration.js";
7
8
  import { registerMarketCommands, runMarketAssetsCommand, runMarketPriceCommand, } from "../commands/market.js";
9
+ import { registerNewsCommands, runAssetNewsCommand, } from "../commands/news.js";
8
10
  import { registerInitCommand, runInitCommand, } from "../commands/init.js";
9
11
  import { registerPortfoliosCommands, runHoldingCreateCommand, runHoldingBetaCommand, runHoldingGetCommand, runHoldingHistoricalReturnCommand, runHoldingListCommand, runHoldingRenameCommand, runHoldingSetPositionsCommand, runHoldingSetTargetsCommand, runHoldingVarCommand, runWatchlistAddAssetsCommand, runWatchlistCreateCommand, runWatchlistGetCommand, runWatchlistListCommand, runWatchlistRemoveAssetsCommand, runWatchlistRenameCommand, } from "../commands/portfolios.js";
10
12
  import { registerRankingsCommands, runRankingsCurrentCommand, runRankingsListCommand, runRankingsReturnCommand, } from "../commands/rankings.js";
@@ -29,11 +31,21 @@ export function createCliProgram(options = {}) {
29
31
  env: options.env,
30
32
  fetch: options.fetch,
31
33
  };
34
+ const backtestsContext = {
35
+ io: options.io,
36
+ env: options.env,
37
+ fetch: options.fetch,
38
+ };
32
39
  const marketContext = {
33
40
  io: options.io,
34
41
  env: options.env,
35
42
  fetch: options.fetch,
36
43
  };
44
+ const newsContext = {
45
+ io: options.io,
46
+ env: options.env,
47
+ fetch: options.fetch,
48
+ };
37
49
  const initContext = {
38
50
  io: options.io,
39
51
  env: options.env,
@@ -89,8 +101,10 @@ export function createCliProgram(options = {}) {
89
101
  registerAuthCommands(program, authContext);
90
102
  registerWhoamiCommand(program, authContext);
91
103
  registerAssetsCommands(program, assetsContext);
104
+ registerBacktestsCommands(program, backtestsContext);
92
105
  registerInitCommand(program, initContext);
93
106
  registerMarketCommands(program, marketContext);
107
+ registerNewsCommands(program, newsContext);
94
108
  registerPortfoliosCommands(program, portfoliosContext);
95
109
  registerRankingsCommands(program, rankingsContext);
96
110
  registerCointegrationCommands(program, cointegrationContext);
@@ -159,9 +173,11 @@ function isCommanderDisplayExit(error) {
159
173
  }
160
174
  export { runAuthLoginCommand, runAuthLogoutCommand, runAuthWhoamiCommand, } from "../commands/auth.js";
161
175
  export { runAssetOverviewCommand } from "../commands/assets.js";
176
+ export { runBacktestsInfoCommand, runBacktestsRunCommand, runBacktestsStrategiesCommand, };
162
177
  export { runCapabilitiesCommand, runStatusCommand };
163
178
  export { runInitCommand };
164
179
  export { runMarketAssetsCommand, runMarketPriceCommand };
180
+ export { runAssetNewsCommand };
165
181
  export { runRankingsCurrentCommand, runRankingsListCommand, runRankingsReturnCommand, };
166
182
  export { runCointegrationPairCommand };
167
183
  export { runScreeningIndicatorsCommand, runScreeningRunCommand, runScreeningUniversesCommand, };
@@ -0,0 +1,183 @@
1
+ import { Command } from "commander";
2
+ import type { JsonValue } from "../vendor/core/index.js";
3
+ import { type CliInvokeContext } from "../cli/client.js";
4
+ import { type TerminalWriter } from "../cli/terminal.js";
5
+ export interface BacktestsCommandIO {
6
+ stdout: TerminalWriter;
7
+ }
8
+ export interface BacktestsStrategiesCommandOptions {
9
+ json?: boolean;
10
+ }
11
+ export interface BacktestsInfoCommandOptions {
12
+ json?: boolean;
13
+ }
14
+ export interface BacktestsGetCommandOptions {
15
+ json?: boolean;
16
+ }
17
+ export interface BacktestsRunCommandOptions {
18
+ timeframe?: string;
19
+ from?: string;
20
+ to?: string;
21
+ param?: string[];
22
+ paramsJson?: string;
23
+ capital?: string;
24
+ maxRisk?: string;
25
+ contracts?: string;
26
+ json?: boolean;
27
+ }
28
+ export type BacktestParameterValue = string | number | boolean;
29
+ export interface BacktestParameterOptionOut {
30
+ [key: string]: JsonValue;
31
+ value: string;
32
+ label: string;
33
+ }
34
+ export interface BacktestParameterOut {
35
+ [key: string]: JsonValue;
36
+ name: string;
37
+ label: string;
38
+ type: "boolean" | "enum" | "integer" | "number" | "string";
39
+ required: boolean;
40
+ default: BacktestParameterValue | null;
41
+ description: string;
42
+ format: "time" | null;
43
+ value_hint: string | null;
44
+ agent_guidance: string | null;
45
+ options: BacktestParameterOptionOut[] | null;
46
+ }
47
+ export interface BacktestStrategyOut {
48
+ [key: string]: JsonValue;
49
+ id: string;
50
+ label: string;
51
+ family: string;
52
+ description: string;
53
+ selection_guidance: string;
54
+ timeframe_guidance: string;
55
+ side: "long" | "short";
56
+ allowed_timeframes: string[];
57
+ requires_timeframe: boolean;
58
+ fixed_risk: boolean;
59
+ day_trade_only: boolean;
60
+ blocked_in_crypto: boolean;
61
+ default_parameters: Record<string, BacktestParameterValue>;
62
+ parameters: BacktestParameterOut[];
63
+ }
64
+ export interface BacktestStrategiesResponse {
65
+ [key: string]: JsonValue;
66
+ ok: boolean;
67
+ strategies: BacktestStrategyOut[];
68
+ total: number;
69
+ }
70
+ export interface BacktestStrategyResponse {
71
+ [key: string]: JsonValue;
72
+ ok: boolean;
73
+ strategy: BacktestStrategyOut;
74
+ }
75
+ export interface ScorePercentiles {
76
+ [key: string]: JsonValue;
77
+ percentile_5: number | null;
78
+ percentile_25: number | null;
79
+ percentile_50: number | null;
80
+ percentile_75: number | null;
81
+ percentile_95: number | null;
82
+ }
83
+ export interface BacktestDetailResponse {
84
+ [key: string]: JsonValue;
85
+ id: number;
86
+ origin: string | null;
87
+ asset_id: number;
88
+ timeframe_id: string;
89
+ batch_id: number | null;
90
+ start_date: string;
91
+ end_date: string;
92
+ initial_capital: number;
93
+ fixed_capital: boolean | null;
94
+ num_operations: number;
95
+ num_gains: number | null;
96
+ pct_gains: number;
97
+ avg_gains: number | null;
98
+ avg_losses: number | null;
99
+ avg_candles: number | null;
100
+ pct_profit: number;
101
+ profit_factor: number | null;
102
+ drawdown: number;
103
+ ev: number;
104
+ trade_history: JsonValue[];
105
+ best_win_streak: number | null;
106
+ worst_loss_streak: number | null;
107
+ created_at: string;
108
+ is_favorite: boolean;
109
+ max_risk: number | null;
110
+ ticker: string;
111
+ type: string;
112
+ strategy_id: string;
113
+ setup_id: number;
114
+ parameters: Record<string, JsonValue>;
115
+ alert_id: number | null;
116
+ alert_status: string | null;
117
+ can_monitor: boolean;
118
+ score: number | null;
119
+ score_percentiles: ScorePercentiles | null;
120
+ suspicious: boolean;
121
+ }
122
+ export interface BacktestGetResponse {
123
+ [key: string]: JsonValue;
124
+ ok: boolean;
125
+ backtest: BacktestDetailResponse;
126
+ }
127
+ export interface SaveBacktestResponse {
128
+ [key: string]: JsonValue;
129
+ id: number | null;
130
+ origin: string | null;
131
+ setup_id: number;
132
+ timeframe_id: string;
133
+ strategy_id: string;
134
+ ticker: string;
135
+ asset_type: string;
136
+ can_monitor: boolean;
137
+ start_date: string;
138
+ end_date: string;
139
+ initial_capital: number;
140
+ parameters: Record<string, JsonValue>;
141
+ score: number | null;
142
+ score_percentiles: ScorePercentiles | null;
143
+ suspicious: boolean;
144
+ num_operations: number;
145
+ num_gains: number | null;
146
+ pct_gains: number;
147
+ avg_gains: number | null;
148
+ avg_losses: number | null;
149
+ avg_candles: number | null;
150
+ profit_factor: number | null;
151
+ pct_profit: number;
152
+ drawdown: number;
153
+ ev: number;
154
+ trade_history: JsonValue[];
155
+ best_win_streak: number | null;
156
+ worst_loss_streak: number | null;
157
+ }
158
+ export interface BacktestRunResponse {
159
+ [key: string]: JsonValue;
160
+ ok: boolean;
161
+ summary_markdown: string;
162
+ backtest: SaveBacktestResponse;
163
+ }
164
+ export interface BacktestsCommandContext extends CliInvokeContext {
165
+ io?: BacktestsCommandIO;
166
+ }
167
+ type JsonRecord = {
168
+ [key: string]: JsonValue;
169
+ };
170
+ export declare function registerBacktestsCommands(program: Command, context?: BacktestsCommandContext): void;
171
+ export declare function runBacktestsStrategiesCommand(options: BacktestsStrategiesCommandOptions, context?: BacktestsCommandContext): Promise<void>;
172
+ export declare function runBacktestsInfoCommand(strategyId: string, options: BacktestsInfoCommandOptions, context?: BacktestsCommandContext): Promise<void>;
173
+ export declare function runBacktestsGetCommand(backtestId: string, options: BacktestsGetCommandOptions, context?: BacktestsCommandContext): Promise<void>;
174
+ export declare function runBacktestsRunCommand(strategyId: string, ticker: string, options: BacktestsRunCommandOptions, context?: BacktestsCommandContext): Promise<void>;
175
+ export declare function buildBacktestsInfoInput(strategyId: string): JsonRecord;
176
+ export declare function buildBacktestsGetInput(backtestId: string): JsonRecord;
177
+ export declare function buildBacktestsRunInput(strategyId: string, ticker: string, options: BacktestsRunCommandOptions): JsonRecord;
178
+ export declare function formatBacktestStrategiesHuman(data: BacktestStrategiesResponse, theme?: import("../cli/terminal.js").TerminalTheme): string;
179
+ export declare function formatBacktestStrategyHuman(data: BacktestStrategyResponse, theme?: import("../cli/terminal.js").TerminalTheme): string;
180
+ export declare function formatBacktestRunHuman(data: BacktestRunResponse, theme?: import("../cli/terminal.js").TerminalTheme): string;
181
+ export declare function formatBacktestGetHuman(data: BacktestGetResponse, theme?: import("../cli/terminal.js").TerminalTheme): string;
182
+ export {};
183
+ //# sourceMappingURL=backtests.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backtests.d.ts","sourceRoot":"","sources":["../../src/commands/backtests.ts"],"names":[],"mappings":"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"}