desic-okx-agent 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (236) hide show
  1. package/README.en.md +90 -10
  2. package/README.md +76 -10
  3. package/dist/account/private-websocket.js +4 -4
  4. package/dist/account/private-websocket.js.map +1 -1
  5. package/dist/account/service.d.ts +12 -1
  6. package/dist/account/service.js +18 -0
  7. package/dist/account/service.js.map +1 -1
  8. package/dist/bars/rate-limiter.d.ts +18 -0
  9. package/dist/bars/rate-limiter.js +84 -0
  10. package/dist/bars/rate-limiter.js.map +1 -0
  11. package/dist/bars/schema.d.ts +36 -0
  12. package/dist/bars/schema.js +134 -0
  13. package/dist/bars/schema.js.map +1 -0
  14. package/dist/bars/service.d.ts +60 -0
  15. package/dist/bars/service.js +120 -0
  16. package/dist/bars/service.js.map +1 -0
  17. package/dist/bars/store.d.ts +105 -0
  18. package/dist/bars/store.js +415 -0
  19. package/dist/bars/store.js.map +1 -0
  20. package/dist/bars/timeframe.d.ts +40 -0
  21. package/dist/bars/timeframe.js +146 -0
  22. package/dist/bars/timeframe.js.map +1 -0
  23. package/dist/bars/types.d.ts +68 -0
  24. package/dist/bars/types.js +13 -0
  25. package/dist/bars/types.js.map +1 -0
  26. package/dist/cli/data-render.d.ts +37 -0
  27. package/dist/cli/data-render.js +143 -0
  28. package/dist/cli/data-render.js.map +1 -0
  29. package/dist/cli/doctor.js +7 -3
  30. package/dist/cli/doctor.js.map +1 -1
  31. package/dist/cli/index.js +757 -26
  32. package/dist/cli/index.js.map +1 -1
  33. package/dist/cli/live-render.d.ts +24 -0
  34. package/dist/cli/live-render.js +85 -0
  35. package/dist/cli/live-render.js.map +1 -0
  36. package/dist/cli/range.d.ts +28 -0
  37. package/dist/cli/range.js +63 -0
  38. package/dist/cli/range.js.map +1 -0
  39. package/dist/cli/render.js +3 -0
  40. package/dist/cli/render.js.map +1 -1
  41. package/dist/cli/strategy-render.d.ts +36 -0
  42. package/dist/cli/strategy-render.js +391 -0
  43. package/dist/cli/strategy-render.js.map +1 -0
  44. package/dist/cli/width.d.ts +18 -0
  45. package/dist/cli/width.js +71 -0
  46. package/dist/cli/width.js.map +1 -0
  47. package/dist/config/loader.js +1 -1
  48. package/dist/config/schema.d.ts +7 -0
  49. package/dist/config/schema.js +24 -0
  50. package/dist/config/schema.js.map +1 -1
  51. package/dist/core/okx-client.d.ts +9 -1
  52. package/dist/core/okx-client.js +14 -5
  53. package/dist/core/okx-client.js.map +1 -1
  54. package/dist/i18n/locale.d.ts +24 -0
  55. package/dist/i18n/locale.js +65 -0
  56. package/dist/i18n/locale.js.map +1 -0
  57. package/dist/i18n/messages.d.ts +333 -0
  58. package/dist/i18n/messages.js +660 -0
  59. package/dist/i18n/messages.js.map +1 -0
  60. package/dist/live/account-snapshot.d.ts +30 -0
  61. package/dist/live/account-snapshot.js +130 -0
  62. package/dist/live/account-snapshot.js.map +1 -0
  63. package/dist/live/cutoff-queue.d.ts +42 -0
  64. package/dist/live/cutoff-queue.js +69 -0
  65. package/dist/live/cutoff-queue.js.map +1 -0
  66. package/dist/live/execution-key.d.ts +23 -0
  67. package/dist/live/execution-key.js +31 -0
  68. package/dist/live/execution-key.js.map +1 -0
  69. package/dist/live/failures.d.ts +37 -0
  70. package/dist/live/failures.js +57 -0
  71. package/dist/live/failures.js.map +1 -0
  72. package/dist/live/gates.d.ts +65 -0
  73. package/dist/live/gates.js +136 -0
  74. package/dist/live/gates.js.map +1 -0
  75. package/dist/live/loop.d.ts +56 -0
  76. package/dist/live/loop.js +197 -0
  77. package/dist/live/loop.js.map +1 -0
  78. package/dist/live/preconditions.d.ts +48 -0
  79. package/dist/live/preconditions.js +69 -0
  80. package/dist/live/preconditions.js.map +1 -0
  81. package/dist/live/reconcile.d.ts +46 -0
  82. package/dist/live/reconcile.js +104 -0
  83. package/dist/live/reconcile.js.map +1 -0
  84. package/dist/live/runner.d.ts +57 -0
  85. package/dist/live/runner.js +160 -0
  86. package/dist/live/runner.js.map +1 -0
  87. package/dist/live/schema.d.ts +18 -0
  88. package/dist/live/schema.js +91 -0
  89. package/dist/live/schema.js.map +1 -0
  90. package/dist/live/service.d.ts +144 -0
  91. package/dist/live/service.js +303 -0
  92. package/dist/live/service.js.map +1 -0
  93. package/dist/live/session.d.ts +85 -0
  94. package/dist/live/session.js +234 -0
  95. package/dist/live/session.js.map +1 -0
  96. package/dist/live/sizing.d.ts +62 -0
  97. package/dist/live/sizing.js +79 -0
  98. package/dist/live/sizing.js.map +1 -0
  99. package/dist/live/store.d.ts +123 -0
  100. package/dist/live/store.js +350 -0
  101. package/dist/live/store.js.map +1 -0
  102. package/dist/live/types.d.ts +82 -0
  103. package/dist/live/types.js +2 -0
  104. package/dist/live/types.js.map +1 -0
  105. package/dist/market/websocket.d.ts +16 -1
  106. package/dist/market/websocket.js +60 -5
  107. package/dist/market/websocket.js.map +1 -1
  108. package/dist/mcp/server.d.ts +1 -0
  109. package/dist/mcp/server.js +15 -1
  110. package/dist/mcp/server.js.map +1 -1
  111. package/dist/network/connectivity.d.ts +9 -1
  112. package/dist/network/connectivity.js +28 -1
  113. package/dist/network/connectivity.js.map +1 -1
  114. package/dist/report/chart-script.d.ts +12 -0
  115. package/dist/report/chart-script.js +146 -0
  116. package/dist/report/chart-script.js.map +1 -0
  117. package/dist/report/compare-html.d.ts +8 -0
  118. package/dist/report/compare-html.js +254 -0
  119. package/dist/report/compare-html.js.map +1 -0
  120. package/dist/report/compare-script.d.ts +12 -0
  121. package/dist/report/compare-script.js +109 -0
  122. package/dist/report/compare-script.js.map +1 -0
  123. package/dist/report/compare.d.ts +61 -0
  124. package/dist/report/compare.js +205 -0
  125. package/dist/report/compare.js.map +1 -0
  126. package/dist/report/fetch.d.ts +20 -0
  127. package/dist/report/fetch.js +56 -0
  128. package/dist/report/fetch.js.map +1 -0
  129. package/dist/report/html.d.ts +54 -0
  130. package/dist/report/html.js +641 -0
  131. package/dist/report/html.js.map +1 -0
  132. package/dist/report/open.d.ts +42 -0
  133. package/dist/report/open.js +114 -0
  134. package/dist/report/open.js.map +1 -0
  135. package/dist/runtime/server.d.ts +16 -1
  136. package/dist/runtime/server.js +112 -9
  137. package/dist/runtime/server.js.map +1 -1
  138. package/dist/setup/installer.d.ts +1 -0
  139. package/dist/setup/installer.js +8 -0
  140. package/dist/setup/installer.js.map +1 -1
  141. package/dist/setup/wizard.js +19 -22
  142. package/dist/setup/wizard.js.map +1 -1
  143. package/dist/strategy/constants.d.ts +23 -0
  144. package/dist/strategy/constants.js +24 -0
  145. package/dist/strategy/constants.js.map +1 -0
  146. package/dist/strategy/environment.d.ts +52 -0
  147. package/dist/strategy/environment.js +187 -0
  148. package/dist/strategy/environment.js.map +1 -0
  149. package/dist/strategy/instrument.d.ts +29 -0
  150. package/dist/strategy/instrument.js +39 -0
  151. package/dist/strategy/instrument.js.map +1 -0
  152. package/dist/strategy/optimize.d.ts +73 -0
  153. package/dist/strategy/optimize.js +113 -0
  154. package/dist/strategy/optimize.js.map +1 -0
  155. package/dist/strategy/parameter-space.d.ts +59 -0
  156. package/dist/strategy/parameter-space.js +221 -0
  157. package/dist/strategy/parameter-space.js.map +1 -0
  158. package/dist/strategy/python-bridge.d.ts +24 -0
  159. package/dist/strategy/python-bridge.js +114 -0
  160. package/dist/strategy/python-bridge.js.map +1 -0
  161. package/dist/strategy/schema.d.ts +9 -0
  162. package/dist/strategy/schema.js +91 -0
  163. package/dist/strategy/schema.js.map +1 -0
  164. package/dist/strategy/service.d.ts +138 -0
  165. package/dist/strategy/service.js +745 -0
  166. package/dist/strategy/service.js.map +1 -0
  167. package/dist/strategy/settings.d.ts +162 -0
  168. package/dist/strategy/settings.js +243 -0
  169. package/dist/strategy/settings.js.map +1 -0
  170. package/dist/strategy/store.d.ts +96 -0
  171. package/dist/strategy/store.js +367 -0
  172. package/dist/strategy/store.js.map +1 -0
  173. package/dist/strategy/templates.d.ts +11 -0
  174. package/dist/strategy/templates.js +134 -0
  175. package/dist/strategy/templates.js.map +1 -0
  176. package/dist/strategy/types.d.ts +111 -0
  177. package/dist/strategy/types.js +2 -0
  178. package/dist/strategy/types.js.map +1 -0
  179. package/dist/tools/catalog.d.ts +16 -0
  180. package/dist/tools/catalog.js +118 -17
  181. package/dist/tools/catalog.js.map +1 -1
  182. package/dist/trade/service.d.ts +12 -0
  183. package/dist/trade/service.js +24 -7
  184. package/dist/trade/service.js.map +1 -1
  185. package/dist/tui/app.d.ts +23 -0
  186. package/dist/tui/app.js +322 -0
  187. package/dist/tui/app.js.map +1 -0
  188. package/dist/tui/commands.d.ts +70 -0
  189. package/dist/tui/commands.js +313 -0
  190. package/dist/tui/commands.js.map +1 -0
  191. package/dist/tui/entries.d.ts +17 -0
  192. package/dist/tui/entries.js +24 -0
  193. package/dist/tui/entries.js.map +1 -0
  194. package/dist/tui/execute.d.ts +26 -0
  195. package/dist/tui/execute.js +664 -0
  196. package/dist/tui/execute.js.map +1 -0
  197. package/dist/tui/history.d.ts +17 -0
  198. package/dist/tui/history.js +48 -0
  199. package/dist/tui/history.js.map +1 -0
  200. package/dist/tui/index.d.ts +8 -0
  201. package/dist/tui/index.js +48 -0
  202. package/dist/tui/index.js.map +1 -0
  203. package/dist/tui/line-editor.d.ts +44 -0
  204. package/dist/tui/line-editor.js +98 -0
  205. package/dist/tui/line-editor.js.map +1 -0
  206. package/dist/tui/progress.d.ts +23 -0
  207. package/dist/tui/progress.js +46 -0
  208. package/dist/tui/progress.js.map +1 -0
  209. package/dist/tui/settings-editor.d.ts +18 -0
  210. package/dist/tui/settings-editor.js +115 -0
  211. package/dist/tui/settings-editor.js.map +1 -0
  212. package/docs/live-trading.md +455 -0
  213. package/docs/strategy-research.md +597 -0
  214. package/package.json +10 -1
  215. package/python/desic_strategy/__init__.py +34 -0
  216. package/python/desic_strategy/actions.py +158 -0
  217. package/python/desic_strategy/context.py +164 -0
  218. package/python/desic_strategy/engine.py +614 -0
  219. package/python/desic_strategy/indicators.py +159 -0
  220. package/python/desic_strategy/live.py +253 -0
  221. package/python/desic_strategy/policy.py +193 -0
  222. package/python/desic_strategy/portfolio.py +152 -0
  223. package/python/desic_strategy/report.py +319 -0
  224. package/python/desic_strategy/runner.py +574 -0
  225. package/python/desic_strategy/timeframe.py +150 -0
  226. package/python/main.py +18 -0
  227. package/skills/okx-live-trading/SKILL.md +117 -0
  228. package/skills/okx-live-trading/agents/openai.yaml +9 -0
  229. package/skills/okx-live-trading/references/lifecycle.md +128 -0
  230. package/skills/okx-strategy-research/SKILL.md +113 -0
  231. package/skills/okx-strategy-research/agents/openai.yaml +9 -0
  232. package/skills/okx-strategy-research/references/execution-semantics.md +107 -0
  233. package/skills/okx-strategy-research/references/field-traps.md +142 -0
  234. package/skills/okx-strategy-research/references/python-api.md +121 -0
  235. package/skills/okx-strategy-research/references/tools-and-data.md +192 -0
  236. package/skills/okx-trading/SKILL.md +11 -10
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/strategy/service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * Every backtest assumption a user can set, with its bounds.
3
+ *
4
+ * Declared as data rather than scattered across the CLI, the shell, and the
5
+ * engine request. Each surface renders this list, so a new setting appears
6
+ * everywhere at once and cannot drift between them — the previous hardcoded
7
+ * "10,000 USDT · 10x" line in the shell was wrong whenever a caller passed
8
+ * anything else.
9
+ */
10
+ export type SettingKind = "number" | "percent" | "bps" | "rate" | "boolean" | "integer";
11
+ export interface SettingSpec {
12
+ key: string;
13
+ /** Short flag name used by the CLI, without dashes. */
14
+ flag: string;
15
+ kind: SettingKind;
16
+ default: number | boolean;
17
+ minimum?: number;
18
+ maximum?: number;
19
+ /** Message bundle key for the label. */
20
+ label: string;
21
+ /** Message bundle key for the one-line explanation. */
22
+ help: string;
23
+ }
24
+ export declare const SETTING_SPECS: readonly [{
25
+ readonly key: "initialEquityUsdt";
26
+ readonly flag: "equity";
27
+ readonly kind: "number";
28
+ readonly default: 10000;
29
+ readonly minimum: 1;
30
+ readonly maximum: 100000000;
31
+ readonly label: "settingEquity";
32
+ readonly help: "settingEquityHelp";
33
+ }, {
34
+ readonly key: "leverage";
35
+ readonly flag: "leverage";
36
+ readonly kind: "number";
37
+ readonly default: 10;
38
+ readonly minimum: 1;
39
+ readonly maximum: 125;
40
+ readonly label: "settingLeverage";
41
+ readonly help: "settingLeverageHelp";
42
+ }, {
43
+ readonly key: "marginSafetyMultiplier";
44
+ readonly flag: "margin-safety";
45
+ readonly kind: "number";
46
+ readonly default: 1;
47
+ readonly minimum: 1;
48
+ readonly maximum: 20;
49
+ readonly label: "settingMarginSafety";
50
+ readonly help: "settingMarginSafetyHelp";
51
+ }, {
52
+ readonly key: "entryBudgetPct";
53
+ readonly flag: "budget-pct";
54
+ readonly kind: "percent";
55
+ readonly default: 0.2;
56
+ readonly minimum: 0.001;
57
+ readonly maximum: 1;
58
+ readonly label: "settingBudgetPct";
59
+ readonly help: "settingBudgetPctHelp";
60
+ }, {
61
+ readonly key: "entryBudgetUsdt";
62
+ readonly flag: "budget-usdt";
63
+ readonly kind: "number";
64
+ readonly default: 0;
65
+ readonly minimum: 0;
66
+ readonly maximum: 100000000;
67
+ readonly label: "settingBudgetUsdt";
68
+ readonly help: "settingBudgetUsdtHelp";
69
+ }, {
70
+ readonly key: "takerFeeRate";
71
+ readonly flag: "taker-fee";
72
+ readonly kind: "rate";
73
+ readonly default: 0.0005;
74
+ readonly minimum: 0;
75
+ readonly maximum: 0.01;
76
+ readonly label: "settingTakerFee";
77
+ readonly help: "settingTakerFeeHelp";
78
+ }, {
79
+ readonly key: "makerFeeRate";
80
+ readonly flag: "maker-fee";
81
+ readonly kind: "rate";
82
+ readonly default: 0.0002;
83
+ readonly minimum: 0;
84
+ readonly maximum: 0.01;
85
+ readonly label: "settingMakerFee";
86
+ readonly help: "settingMakerFeeHelp";
87
+ }, {
88
+ readonly key: "entrySlippageBps";
89
+ readonly flag: "entry-slippage";
90
+ readonly kind: "bps";
91
+ readonly default: 1;
92
+ readonly minimum: 0;
93
+ readonly maximum: 1000;
94
+ readonly label: "settingEntrySlippage";
95
+ readonly help: "settingEntrySlippageHelp";
96
+ }, {
97
+ readonly key: "exitSlippageBps";
98
+ readonly flag: "exit-slippage";
99
+ readonly kind: "bps";
100
+ readonly default: 1;
101
+ readonly minimum: 0;
102
+ readonly maximum: 1000;
103
+ readonly label: "settingExitSlippage";
104
+ readonly help: "settingExitSlippageHelp";
105
+ }, {
106
+ readonly key: "preloadBars";
107
+ readonly flag: "preload";
108
+ readonly kind: "integer";
109
+ readonly default: 120;
110
+ readonly minimum: 2;
111
+ readonly maximum: 20000;
112
+ readonly label: "settingPreload";
113
+ readonly help: "settingPreloadHelp";
114
+ }, {
115
+ readonly key: "days";
116
+ readonly flag: "days";
117
+ readonly kind: "integer";
118
+ readonly default: 30;
119
+ readonly minimum: 1;
120
+ readonly maximum: 365;
121
+ readonly label: "settingDays";
122
+ readonly help: "settingDaysHelp";
123
+ }, {
124
+ readonly key: "closeAtEnd";
125
+ readonly flag: "close-at-end";
126
+ readonly kind: "boolean";
127
+ readonly default: true;
128
+ readonly label: "settingCloseAtEnd";
129
+ readonly help: "settingCloseAtEndHelp";
130
+ }];
131
+ export type SettingKey = (typeof SETTING_SPECS)[number]["key"];
132
+ /**
133
+ * One entry per setting. Only `closeAtEnd` is a flag; the rest are numeric, so
134
+ * the shape is spelled out rather than derived through a conditional type that
135
+ * would reference the spec list from inside its own declaration.
136
+ */
137
+ export type BacktestSettings = Record<Exclude<SettingKey, "closeAtEnd">, number> & {
138
+ closeAtEnd: boolean;
139
+ };
140
+ declare const SETTINGS_PATH: string;
141
+ export declare function specFor(key: string): SettingSpec | undefined;
142
+ export declare function defaultSettings(): BacktestSettings;
143
+ /**
144
+ * Validates one value against its declared bounds.
145
+ *
146
+ * Out-of-range input is rejected rather than clamped: silently running a
147
+ * different backtest than the one asked for is how a wrong assumption becomes
148
+ * invisible in the results.
149
+ */
150
+ export declare function coerceSetting(spec: SettingSpec, raw: unknown): number | boolean;
151
+ /** Saved settings merged over the defaults, so a partial file stays usable. */
152
+ export declare function loadSettings(): BacktestSettings;
153
+ export declare function saveSettings(settings: BacktestSettings): void;
154
+ export declare function resetSettings(): BacktestSettings;
155
+ /** Applies one `key=value` pair, returning a new settings object. */
156
+ export declare function withSetting(settings: BacktestSettings, key: string, raw: unknown): {
157
+ settings: BacktestSettings;
158
+ spec: SettingSpec;
159
+ };
160
+ /** Human-readable form of one value, in the unit a user thinks in. */
161
+ export declare function formatSettingValue(spec: SettingSpec, value: number | boolean): string;
162
+ export { SETTINGS_PATH };
@@ -0,0 +1,243 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { CONFIG_DIR } from "../config/paths.js";
4
+ import { RuntimeError } from "../core/errors.js";
5
+ export const SETTING_SPECS = [
6
+ {
7
+ key: "initialEquityUsdt",
8
+ flag: "equity",
9
+ kind: "number",
10
+ default: 10_000,
11
+ minimum: 1,
12
+ maximum: 100_000_000,
13
+ label: "settingEquity",
14
+ help: "settingEquityHelp"
15
+ },
16
+ {
17
+ key: "leverage",
18
+ flag: "leverage",
19
+ kind: "number",
20
+ default: 10,
21
+ minimum: 1,
22
+ maximum: 125,
23
+ label: "settingLeverage",
24
+ help: "settingLeverageHelp"
25
+ },
26
+ {
27
+ key: "marginSafetyMultiplier",
28
+ flag: "margin-safety",
29
+ kind: "number",
30
+ default: 1,
31
+ minimum: 1,
32
+ maximum: 20,
33
+ label: "settingMarginSafety",
34
+ help: "settingMarginSafetyHelp"
35
+ },
36
+ {
37
+ key: "entryBudgetPct",
38
+ flag: "budget-pct",
39
+ kind: "percent",
40
+ default: 0.2,
41
+ minimum: 0.001,
42
+ maximum: 1,
43
+ label: "settingBudgetPct",
44
+ help: "settingBudgetPctHelp"
45
+ },
46
+ {
47
+ key: "entryBudgetUsdt",
48
+ flag: "budget-usdt",
49
+ kind: "number",
50
+ default: 0,
51
+ minimum: 0,
52
+ maximum: 100_000_000,
53
+ label: "settingBudgetUsdt",
54
+ help: "settingBudgetUsdtHelp"
55
+ },
56
+ {
57
+ key: "takerFeeRate",
58
+ flag: "taker-fee",
59
+ kind: "rate",
60
+ default: 0.0005,
61
+ minimum: 0,
62
+ maximum: 0.01,
63
+ label: "settingTakerFee",
64
+ help: "settingTakerFeeHelp"
65
+ },
66
+ {
67
+ key: "makerFeeRate",
68
+ flag: "maker-fee",
69
+ kind: "rate",
70
+ default: 0.0002,
71
+ minimum: 0,
72
+ maximum: 0.01,
73
+ label: "settingMakerFee",
74
+ help: "settingMakerFeeHelp"
75
+ },
76
+ {
77
+ key: "entrySlippageBps",
78
+ flag: "entry-slippage",
79
+ kind: "bps",
80
+ default: 1,
81
+ minimum: 0,
82
+ maximum: 1_000,
83
+ label: "settingEntrySlippage",
84
+ help: "settingEntrySlippageHelp"
85
+ },
86
+ {
87
+ key: "exitSlippageBps",
88
+ flag: "exit-slippage",
89
+ kind: "bps",
90
+ default: 1,
91
+ minimum: 0,
92
+ maximum: 1_000,
93
+ label: "settingExitSlippage",
94
+ help: "settingExitSlippageHelp"
95
+ },
96
+ {
97
+ key: "preloadBars",
98
+ flag: "preload",
99
+ kind: "integer",
100
+ default: 120,
101
+ minimum: 2,
102
+ maximum: 20_000,
103
+ label: "settingPreload",
104
+ help: "settingPreloadHelp"
105
+ },
106
+ {
107
+ key: "days",
108
+ flag: "days",
109
+ kind: "integer",
110
+ default: 30,
111
+ minimum: 1,
112
+ maximum: 365,
113
+ label: "settingDays",
114
+ help: "settingDaysHelp"
115
+ },
116
+ {
117
+ key: "closeAtEnd",
118
+ flag: "close-at-end",
119
+ kind: "boolean",
120
+ default: true,
121
+ label: "settingCloseAtEnd",
122
+ help: "settingCloseAtEndHelp"
123
+ }
124
+ ];
125
+ const SETTINGS_PATH = path.join(CONFIG_DIR, "backtest-settings.json");
126
+ export function specFor(key) {
127
+ return SETTING_SPECS.find((spec) => spec.key === key || spec.flag === key);
128
+ }
129
+ export function defaultSettings() {
130
+ const values = {};
131
+ for (const spec of SETTING_SPECS)
132
+ values[spec.key] = spec.default;
133
+ return values;
134
+ }
135
+ /**
136
+ * Validates one value against its declared bounds.
137
+ *
138
+ * Out-of-range input is rejected rather than clamped: silently running a
139
+ * different backtest than the one asked for is how a wrong assumption becomes
140
+ * invisible in the results.
141
+ */
142
+ export function coerceSetting(spec, raw) {
143
+ if (spec.kind === "boolean") {
144
+ if (typeof raw === "boolean")
145
+ return raw;
146
+ const text = String(raw).trim().toLowerCase();
147
+ if (["true", "yes", "y", "1", "on"].includes(text))
148
+ return true;
149
+ if (["false", "no", "n", "0", "off"].includes(text))
150
+ return false;
151
+ throw new RuntimeError("VALIDATION", `${spec.key} must be true or false`);
152
+ }
153
+ // `Number("")` is 0, so an empty value would otherwise pass as a legitimate
154
+ // zero — which for a fee or a budget silently changes what is simulated.
155
+ const text = typeof raw === "number" ? String(raw) : String(raw).trim();
156
+ if (text === "") {
157
+ throw new RuntimeError("VALIDATION", `${spec.key} must be a number`);
158
+ }
159
+ const value = Number(text);
160
+ if (!Number.isFinite(value)) {
161
+ throw new RuntimeError("VALIDATION", `${spec.key} must be a number`);
162
+ }
163
+ if (spec.kind === "integer" && !Number.isInteger(value)) {
164
+ throw new RuntimeError("VALIDATION", `${spec.key} must be a whole number`);
165
+ }
166
+ if (spec.minimum !== undefined && value < spec.minimum) {
167
+ throw new RuntimeError("VALIDATION", `${spec.key} must be at least ${spec.minimum}`);
168
+ }
169
+ if (spec.maximum !== undefined && value > spec.maximum) {
170
+ throw new RuntimeError("VALIDATION", `${spec.key} must be at most ${spec.maximum}`);
171
+ }
172
+ return value;
173
+ }
174
+ /** Saved settings merged over the defaults, so a partial file stays usable. */
175
+ export function loadSettings() {
176
+ const merged = { ...defaultSettings() };
177
+ let stored;
178
+ try {
179
+ stored = JSON.parse(fs.readFileSync(SETTINGS_PATH, "utf8"));
180
+ }
181
+ catch {
182
+ return merged;
183
+ }
184
+ for (const spec of SETTING_SPECS) {
185
+ const value = stored[spec.key];
186
+ if (value === undefined || value === null)
187
+ continue;
188
+ try {
189
+ merged[spec.key] = coerceSetting(spec, value);
190
+ }
191
+ catch {
192
+ // A single bad entry falls back to its default rather than making the
193
+ // whole file unusable.
194
+ }
195
+ }
196
+ return merged;
197
+ }
198
+ export function saveSettings(settings) {
199
+ fs.mkdirSync(CONFIG_DIR, { recursive: true, mode: 0o700 });
200
+ const ordered = {};
201
+ for (const spec of SETTING_SPECS)
202
+ ordered[spec.key] = settings[spec.key];
203
+ fs.writeFileSync(SETTINGS_PATH, `${JSON.stringify(ordered, null, 2)}\n`, { mode: 0o600 });
204
+ }
205
+ export function resetSettings() {
206
+ const defaults = defaultSettings();
207
+ saveSettings(defaults);
208
+ return defaults;
209
+ }
210
+ /** Applies one `key=value` pair, returning a new settings object. */
211
+ export function withSetting(settings, key, raw) {
212
+ const spec = specFor(key);
213
+ if (!spec) {
214
+ throw new RuntimeError("VALIDATION", `Unknown setting '${key}'`, false, {
215
+ available: SETTING_SPECS.map((item) => item.key)
216
+ });
217
+ }
218
+ return {
219
+ settings: { ...settings, [spec.key]: coerceSetting(spec, raw) },
220
+ spec
221
+ };
222
+ }
223
+ /** Human-readable form of one value, in the unit a user thinks in. */
224
+ export function formatSettingValue(spec, value) {
225
+ if (spec.kind === "boolean")
226
+ return value ? "on" : "off";
227
+ const numeric = Number(value);
228
+ switch (spec.kind) {
229
+ case "percent":
230
+ return `${(numeric * 100).toFixed(2)}%`;
231
+ case "rate":
232
+ // Fee rates are quoted in basis points in practice.
233
+ return `${(numeric * 10_000).toFixed(2)} bps`;
234
+ case "bps":
235
+ return `${numeric} bps`;
236
+ case "integer":
237
+ return numeric.toLocaleString("en-US");
238
+ default:
239
+ return numeric.toLocaleString("en-US", { maximumFractionDigits: 4 });
240
+ }
241
+ }
242
+ export { SETTINGS_PATH };
243
+ //# sourceMappingURL=settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/strategy/settings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ import type Database from "better-sqlite3";
2
+ import type { CandidateRow, CandidateStatus, EquityPoint, Page, RunKind, RunStatus, RunSummary } from "./types.js";
3
+ export declare class StrategyStore {
4
+ private readonly db;
5
+ private readonly now;
6
+ constructor(db: Database.Database, now?: () => number);
7
+ /**
8
+ * Adds columns introduced after a database was first created.
9
+ *
10
+ * `CREATE TABLE IF NOT EXISTS` does nothing to an existing table, so a new
11
+ * column is invisible to anyone upgrading — every read then fails with "no
12
+ * such column" until the file is deleted.
13
+ */
14
+ private migrate;
15
+ /**
16
+ * Marks runs left behind by a previous process as failed.
17
+ *
18
+ * A queued or running row cannot survive a restart: its worker is gone, so
19
+ * leaving it in place would show a run that will never progress.
20
+ */
21
+ failInterruptedRuns(): number;
22
+ createRun(input: {
23
+ kind: RunKind;
24
+ strategyName: string;
25
+ source: string;
26
+ instId: string;
27
+ request: unknown;
28
+ }): string;
29
+ markRunning(id: string, barCount: number, preloadBars: number, dataSnapshotId: string, assumptions?: Record<string, unknown>): void;
30
+ updateProgress(id: string, progressPct: number, etaMs: number | null): void;
31
+ completeRun(id: string, metrics: Record<string, unknown>, equity: EquityPoint[], trades: unknown[], actions: unknown[]): void;
32
+ failRun(id: string, error: string): void;
33
+ cancelRun(id: string): boolean;
34
+ run(id: string): RunSummary | undefined;
35
+ runSource(id: string): string | undefined;
36
+ /**
37
+ * The request a run was queued with.
38
+ *
39
+ * Read back rather than recomputed: an optimize report needs the space and
40
+ * budget exactly as they were resolved, and re-deriving them from current
41
+ * settings would describe a different search than the one that ran.
42
+ */
43
+ runRequest(id: string): Record<string, unknown> | undefined;
44
+ listRuns(options?: {
45
+ limit?: number;
46
+ status?: RunStatus;
47
+ instId?: string;
48
+ }): RunSummary[];
49
+ /**
50
+ * The most recent completed backtest of this exact source on this instrument.
51
+ *
52
+ * Matched on the source hash rather than a name or a file path: enabling a profile
53
+ * requires evidence that *this* code was run against *this* contract, and a hash is
54
+ * the only thing that cannot drift when a file is edited.
55
+ *
56
+ * A failed or cancelled run does not count. It says nothing about whether the
57
+ * strategy works, which is the entire reason the evidence is required.
58
+ */
59
+ latestCompletedRun(strategyHash: string, instId: string): RunSummary | undefined;
60
+ deleteRun(id: string): boolean;
61
+ equity(id: string, offset?: number, limit?: number): Page<EquityPoint>;
62
+ equityLength(id: string): number;
63
+ trades(id: string, offset?: number, limit?: number): Page<unknown>;
64
+ /**
65
+ * Records the candidate set up front, before any of it has run.
66
+ *
67
+ * Written in one transaction so a reader never sees a partial set and mistakes
68
+ * it for a smaller search than the one under way.
69
+ */
70
+ seedCandidates(runId: string, candidates: Array<Record<string, number>>): void;
71
+ markCandidateRunning(runId: string, index: number): void;
72
+ completeCandidate(runId: string, index: number, result: {
73
+ train: Record<string, unknown>;
74
+ validation: Record<string, unknown>;
75
+ rankScore: number;
76
+ rankBasis: string;
77
+ verdict: string;
78
+ }): void;
79
+ failCandidate(runId: string, index: number, error: string): void;
80
+ /**
81
+ * Candidates in rank order, best first.
82
+ *
83
+ * `rank_score IS NULL` sorts last explicitly: SQLite orders nulls first under
84
+ * `DESC`, which would put every failure above the winner.
85
+ */
86
+ candidates(runId: string, limit?: number): CandidateRow[];
87
+ candidateCounts(runId: string): Record<CandidateStatus, number> & {
88
+ total: number;
89
+ };
90
+ actions(id: string, offset?: number, limit?: number): Page<unknown>;
91
+ private writeSeries;
92
+ private writeRows;
93
+ private readRows;
94
+ }
95
+ export declare function sourceHash(source: string): string;
96
+ export declare function requireRun(store: StrategyStore, id: string): RunSummary;