@livefolio/sdk 0.2.3 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -56,6 +56,9 @@ Full method reference, arguments, return types, and usage examples: **[docs/](./
56
56
  ```bash
57
57
  npm run build # compile TypeScript → dist/
58
58
  npm test # run tests
59
+ npm run ingest:init # backfill price_observations from Yahoo
60
+ npm run ingest:daily # refresh latest daily bars
61
+ npm run backtest:smoke -- --linkId <strategy-link-id>
59
62
  ```
60
63
 
61
64
  PRs to `main` run build + tests and enforce a version bump. Merges auto-publish to npm.
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/market/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,KAAK,EAA2B,YAAY,EAAE,MAAM,SAAS,CAAC;AAErE,wBAAgB,YAAY,CAAC,MAAM,EAAE,mBAAmB,GAAG,YAAY,CAgEtE"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/market/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,KAAK,EAA2B,YAAY,EAAE,MAAM,SAAS,CAAC;AAErE,wBAAgB,YAAY,CAAC,MAAM,EAAE,mBAAmB,GAAG,YAAY,CA+FtE"}
@@ -13,6 +13,34 @@ function createMarket(client) {
13
13
  const result = await this.getBatchSeries([symbol]);
14
14
  return result[symbol];
15
15
  },
16
+ async getBatchSeriesFromDb(symbols, startDate, endDate) {
17
+ const out = Object.fromEntries(symbols.map((symbol) => [symbol, []]));
18
+ if (symbols.length === 0)
19
+ return out;
20
+ const { data, error } = await client
21
+ .from('price_observations')
22
+ .select('symbol, date, price_400pm_et, timestamp_400pm_et')
23
+ .in('symbol', symbols)
24
+ .gte('date', startDate)
25
+ .lte('date', endDate)
26
+ .order('date', { ascending: true });
27
+ if (error)
28
+ throw new Error(`Failed to fetch price observations: ${error.message}`);
29
+ for (const row of data ?? []) {
30
+ const symbol = row.symbol;
31
+ if (!out[symbol])
32
+ out[symbol] = [];
33
+ out[symbol].push({
34
+ timestamp: row.timestamp_400pm_et ?? `${row.date}T21:00:00.000Z`,
35
+ value: row.price_400pm_et,
36
+ });
37
+ }
38
+ return out;
39
+ },
40
+ async getSeriesFromDb(symbol, startDate, endDate) {
41
+ const result = await this.getBatchSeriesFromDb([symbol], startDate, endDate);
42
+ return result[symbol];
43
+ },
16
44
  async getBatchQuotes(symbols) {
17
45
  const { data, error } = await client.functions.invoke('quote', { body: { symbols } });
18
46
  if (error)
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/market/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/market/client.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
1
  export type { Observation, TradingDay, MarketModule } from './types';
2
2
  export { createMarket } from './client';
3
+ export { TRACKED_TICKERS_DESCRIPTION, TRACKED_TICKERS_YFINANCE } from './trackedTickers';
4
+ export type { TrackedTicker } from './trackedTickers';
3
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/market/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/market/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,2BAA2B,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AACzF,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createMarket = void 0;
3
+ exports.TRACKED_TICKERS_YFINANCE = exports.TRACKED_TICKERS_DESCRIPTION = exports.createMarket = void 0;
4
4
  var client_1 = require("./client");
5
5
  Object.defineProperty(exports, "createMarket", { enumerable: true, get: function () { return client_1.createMarket; } });
6
+ var trackedTickers_1 = require("./trackedTickers");
7
+ Object.defineProperty(exports, "TRACKED_TICKERS_DESCRIPTION", { enumerable: true, get: function () { return trackedTickers_1.TRACKED_TICKERS_DESCRIPTION; } });
8
+ Object.defineProperty(exports, "TRACKED_TICKERS_YFINANCE", { enumerable: true, get: function () { return trackedTickers_1.TRACKED_TICKERS_YFINANCE; } });
6
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/market/index.ts"],"names":[],"mappings":";;;AACA,mCAAwC;AAA/B,sGAAA,YAAY,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/market/index.ts"],"names":[],"mappings":";;;AACA,mCAAwC;AAA/B,sGAAA,YAAY,OAAA;AACrB,mDAAyF;AAAhF,6HAAA,2BAA2B,OAAA;AAAE,0HAAA,wBAAwB,OAAA"}
@@ -0,0 +1,4 @@
1
+ export declare const TRACKED_TICKERS_DESCRIPTION = "Curated default backtest/ingestion universe in Yahoo Finance symbol format.";
2
+ export declare const TRACKED_TICKERS_YFINANCE: readonly ["SPY", "QQQ", "IWM", "DIA", "TLT", "IEF", "SHY", "BIL", "GLD", "SLV", "USO", "UUP", "VNQ", "HYG", "LQD", "XLE", "XLF", "XLK", "XLV", "XLI", "XLP", "XLY", "XLU", "XLB", "XLRE", "^GSPC", "^NDX", "^DJI", "^RUT", "^VIX", "^VIX3M", "^IRX", "^FVX", "^TNX", "^TYX", "TQQQ", "SOXL", "QLD", "SSO", "SPXL", "TSLL", "UPRO", "NVDL", "TECL", "GDXU", "FAS", "BULZ", "USD", "FNGU", "TNA", "NUGT", "KORU", "GGLL", "UDOW", "ROM", "JNUG", "YINN", "UYG", "MSFU", "CONL", "NVDU", "DFEN", "AMDL", "NVDX", "LABU", "FNGO", "DDM", "DPST", "NAIL", "MSTU", "SPYU", "AMZU", "GUSH", "URTY", "MSTX", "ERX", "UWM", "FBL", "CWEB", "AVGX", "SPUU", "SHNY", "IONX", "EDC", "SMCX", "XDEC", "CURE", "MVV", "AAPU", "OKLL", "XJUN", "BRZU", "CHAU", "FNGG", "ROBN", "BABX", "XSEP", "DIG", "WEBL", "XBJA", "RXL", "BIB", "MIDU", "XDSQ", "HIMZ", "XBOC", "INDL", "EURL", "GOOX", "DUSL", "HIBL", "UTSL", "EET", "NRGU", "NFLU", "AMZZ", "UYM", "MSOX", "UXI", "EFO", "UMDD", "TSL", "RETL", "UBOT", "BNKU", "MEXX", "SAA", "TARK", "GMEU", "SMHB", "RIOX", "MSFX", "UPW", "WANT", "XTJL", "EZJ", "XTAP", "XTOC", "AVGU", "AAPB", "TPOR", "QTOC", "XTJA", "KPDD", "PILL", "QTJA", "UGE", "UPV", "HOOX", "XPP", "UCC", "DJTU", "RBLU", "MLPR", "LTL", "AAPX", "SCDL", "FLYU", "BDCX", "HDLB", "QULL", "MTUL", "IWDL", "IWML", "IWFL", "UCYB", "USML", "UBR", "CARU", "ARMU", "KBAB", "SKYU", "KBDU", "GDE", "RSSB", "RSST", "ZROZ", "AI", "TMF", "ALLW", "SIG", "UVXY", "VT", "ASGM", "BITX", "CTAP", "DBMF", "KMLM", "MA", "MSCI", "NTSX", "RSI", "RSSX", "SQQQ", "TFSA", "UGL", "UK", "AHLT", "ARQ", "AVDV", "BLNDX", "CAOS", "DAX", "DRIP", "EDV", "EMF", "ETHU", "EU", "FANG", "GDT", "GEM", "HFEQ", "HFGM", "HFMF", "IGV", "IMO", "LBRT", "LSE", "METU", "MIX", "MOOD", "NQ", "NTSE", "OIL", "ORR", "PLTU", "QDSIX", "QMNNX", "RKLX", "RKLZ", "RS", "RSBA", "RSBT", "RYTTX", "SARK", "SDMF", "SEC", "SIL", "SPLS", "TMV", "TSDD", "VOO", "VS", "VXUS", "WAY", "WTLS", "XQQI", "XSPI", "YEAR"];
3
+ export type TrackedTicker = (typeof TRACKED_TICKERS_YFINANCE)[number];
4
+ //# sourceMappingURL=trackedTickers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trackedTickers.d.ts","sourceRoot":"","sources":["../../src/market/trackedTickers.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,2BAA2B,gFACuC,CAAC;AAEhF,eAAO,MAAM,wBAAwB,83DA0P3B,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC"}
@@ -0,0 +1,256 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TRACKED_TICKERS_YFINANCE = exports.TRACKED_TICKERS_DESCRIPTION = void 0;
4
+ exports.TRACKED_TICKERS_DESCRIPTION = 'Curated default backtest/ingestion universe in Yahoo Finance symbol format.';
5
+ exports.TRACKED_TICKERS_YFINANCE = [
6
+ 'SPY',
7
+ 'QQQ',
8
+ 'IWM',
9
+ 'DIA',
10
+ 'TLT',
11
+ 'IEF',
12
+ 'SHY',
13
+ 'BIL',
14
+ 'GLD',
15
+ 'SLV',
16
+ 'USO',
17
+ 'UUP',
18
+ 'VNQ',
19
+ 'HYG',
20
+ 'LQD',
21
+ 'XLE',
22
+ 'XLF',
23
+ 'XLK',
24
+ 'XLV',
25
+ 'XLI',
26
+ 'XLP',
27
+ 'XLY',
28
+ 'XLU',
29
+ 'XLB',
30
+ 'XLRE',
31
+ '^GSPC',
32
+ '^NDX',
33
+ '^DJI',
34
+ '^RUT',
35
+ '^VIX',
36
+ '^VIX3M',
37
+ '^IRX',
38
+ '^FVX',
39
+ '^TNX',
40
+ '^TYX',
41
+ 'TQQQ',
42
+ 'SOXL',
43
+ 'QLD',
44
+ 'SSO',
45
+ 'SPXL',
46
+ 'TSLL',
47
+ 'UPRO',
48
+ 'NVDL',
49
+ 'TECL',
50
+ 'GDXU',
51
+ 'FAS',
52
+ 'BULZ',
53
+ 'USD',
54
+ 'FNGU',
55
+ 'TNA',
56
+ 'NUGT',
57
+ 'KORU',
58
+ 'GGLL',
59
+ 'UDOW',
60
+ 'ROM',
61
+ 'JNUG',
62
+ 'YINN',
63
+ 'UYG',
64
+ 'MSFU',
65
+ 'CONL',
66
+ 'NVDU',
67
+ 'DFEN',
68
+ 'AMDL',
69
+ 'NVDX',
70
+ 'LABU',
71
+ 'FNGO',
72
+ 'DDM',
73
+ 'DPST',
74
+ 'NAIL',
75
+ 'MSTU',
76
+ 'SPYU',
77
+ 'AMZU',
78
+ 'GUSH',
79
+ 'URTY',
80
+ 'MSTX',
81
+ 'ERX',
82
+ 'UWM',
83
+ 'FBL',
84
+ 'CWEB',
85
+ 'AVGX',
86
+ 'SPUU',
87
+ 'SHNY',
88
+ 'IONX',
89
+ 'EDC',
90
+ 'SMCX',
91
+ 'XDEC',
92
+ 'CURE',
93
+ 'MVV',
94
+ 'AAPU',
95
+ 'OKLL',
96
+ 'XJUN',
97
+ 'BRZU',
98
+ 'CHAU',
99
+ 'FNGG',
100
+ 'ROBN',
101
+ 'BABX',
102
+ 'XSEP',
103
+ 'DIG',
104
+ 'WEBL',
105
+ 'XBJA',
106
+ 'RXL',
107
+ 'BIB',
108
+ 'MIDU',
109
+ 'XDSQ',
110
+ 'HIMZ',
111
+ 'XBOC',
112
+ 'INDL',
113
+ 'EURL',
114
+ 'GOOX',
115
+ 'DUSL',
116
+ 'HIBL',
117
+ 'UTSL',
118
+ 'EET',
119
+ 'NRGU',
120
+ 'NFLU',
121
+ 'AMZZ',
122
+ 'UYM',
123
+ 'MSOX',
124
+ 'UXI',
125
+ 'EFO',
126
+ 'UMDD',
127
+ 'TSL',
128
+ 'RETL',
129
+ 'UBOT',
130
+ 'BNKU',
131
+ 'MEXX',
132
+ 'SAA',
133
+ 'TARK',
134
+ 'GMEU',
135
+ 'SMHB',
136
+ 'RIOX',
137
+ 'MSFX',
138
+ 'UPW',
139
+ 'WANT',
140
+ 'XTJL',
141
+ 'EZJ',
142
+ 'XTAP',
143
+ 'XTOC',
144
+ 'AVGU',
145
+ 'AAPB',
146
+ 'TPOR',
147
+ 'QTOC',
148
+ 'XTJA',
149
+ 'KPDD',
150
+ 'PILL',
151
+ 'QTJA',
152
+ 'UGE',
153
+ 'UPV',
154
+ 'HOOX',
155
+ 'XPP',
156
+ 'UCC',
157
+ 'DJTU',
158
+ 'RBLU',
159
+ 'MLPR',
160
+ 'LTL',
161
+ 'AAPX',
162
+ 'SCDL',
163
+ 'FLYU',
164
+ 'BDCX',
165
+ 'HDLB',
166
+ 'QULL',
167
+ 'MTUL',
168
+ 'IWDL',
169
+ 'IWML',
170
+ 'IWFL',
171
+ 'UCYB',
172
+ 'USML',
173
+ 'UBR',
174
+ 'CARU',
175
+ 'ARMU',
176
+ 'KBAB',
177
+ 'SKYU',
178
+ 'KBDU',
179
+ 'GDE',
180
+ 'RSSB',
181
+ 'RSST',
182
+ 'ZROZ',
183
+ 'AI',
184
+ 'TMF',
185
+ 'ALLW',
186
+ 'SIG',
187
+ 'UVXY',
188
+ 'VT',
189
+ 'ASGM',
190
+ 'BITX',
191
+ 'CTAP',
192
+ 'DBMF',
193
+ 'KMLM',
194
+ 'MA',
195
+ 'MSCI',
196
+ 'NTSX',
197
+ 'RSI',
198
+ 'RSSX',
199
+ 'SQQQ',
200
+ 'TFSA',
201
+ 'UGL',
202
+ 'UK',
203
+ 'AHLT',
204
+ 'ARQ',
205
+ 'AVDV',
206
+ 'BLNDX',
207
+ 'CAOS',
208
+ 'DAX',
209
+ 'DRIP',
210
+ 'EDV',
211
+ 'EMF',
212
+ 'ETHU',
213
+ 'EU',
214
+ 'FANG',
215
+ 'GDT',
216
+ 'GEM',
217
+ 'HFEQ',
218
+ 'HFGM',
219
+ 'HFMF',
220
+ 'IGV',
221
+ 'IMO',
222
+ 'LBRT',
223
+ 'LSE',
224
+ 'METU',
225
+ 'MIX',
226
+ 'MOOD',
227
+ 'NQ',
228
+ 'NTSE',
229
+ 'OIL',
230
+ 'ORR',
231
+ 'PLTU',
232
+ 'QDSIX',
233
+ 'QMNNX',
234
+ 'RKLX',
235
+ 'RKLZ',
236
+ 'RS',
237
+ 'RSBA',
238
+ 'RSBT',
239
+ 'RYTTX',
240
+ 'SARK',
241
+ 'SDMF',
242
+ 'SEC',
243
+ 'SIL',
244
+ 'SPLS',
245
+ 'TMV',
246
+ 'TSDD',
247
+ 'VOO',
248
+ 'VS',
249
+ 'VXUS',
250
+ 'WAY',
251
+ 'WTLS',
252
+ 'XQQI',
253
+ 'XSPI',
254
+ 'YEAR',
255
+ ];
256
+ //# sourceMappingURL=trackedTickers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trackedTickers.js","sourceRoot":"","sources":["../../src/market/trackedTickers.ts"],"names":[],"mappings":";;;AAAa,QAAA,2BAA2B,GACtC,6EAA6E,CAAC;AAEnE,QAAA,wBAAwB,GAAG;IACtC,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,QAAQ;IACR,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,IAAI;IACJ,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,IAAI;IACJ,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,IAAI;IACJ,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,IAAI;IACJ,MAAM;IACN,KAAK;IACL,MAAM;IACN,OAAO;IACP,MAAM;IACN,KAAK;IACL,MAAM;IACN,KAAK;IACL,KAAK;IACL,MAAM;IACN,IAAI;IACJ,MAAM;IACN,KAAK;IACL,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,IAAI;IACJ,MAAM;IACN,KAAK;IACL,KAAK;IACL,MAAM;IACN,OAAO;IACP,OAAO;IACP,MAAM;IACN,MAAM;IACN,IAAI;IACJ,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,MAAM;IACN,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,KAAK;IACL,IAAI;IACJ,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;CACE,CAAC"}
@@ -12,6 +12,8 @@ export interface TradingDay {
12
12
  export interface MarketModule {
13
13
  getSeries(symbol: string): Promise<Observation[]>;
14
14
  getBatchSeries(symbols: string[]): Promise<Record<string, Observation[]>>;
15
+ getSeriesFromDb(symbol: string, startDate: string, endDate: string): Promise<Observation[]>;
16
+ getBatchSeriesFromDb(symbols: string[], startDate: string, endDate: string): Promise<Record<string, Observation[]>>;
15
17
  getQuote(symbol: string): Promise<Observation>;
16
18
  getBatchQuotes(symbols: string[]): Promise<Record<string, Observation>>;
17
19
  getTradingDays(startDate: string, endDate: string): Promise<TradingDay[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/market/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAE3B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAClD,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;IAG1E,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/C,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IAGxE,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAC1E,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;CACzD"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/market/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IAE3B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAClD,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;IAC1E,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5F,oBAAoB,CAClB,OAAO,EAAE,MAAM,EAAE,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;IAG1C,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/C,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IAGxE,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IAC1E,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC;CACzD"}
@@ -1,3 +1,6 @@
1
- import type { Strategy, BacktestOptions, BacktestResult } from './types';
2
- export declare function backtest(_strategy: Strategy, _options: BacktestOptions): Promise<BacktestResult>;
1
+ import type { BacktestOptions, BacktestResult, Strategy, StrategyDraft } from './types';
2
+ import type { MarketModule } from '../market/types';
3
+ export declare function backtestWithMarketData(market: Pick<MarketModule, 'getBatchSeriesFromDb' | 'getTradingDays'>, strategy: Strategy, options: BacktestOptions): Promise<BacktestResult>;
4
+ export declare function backtestRulesWithMarketData(market: Pick<MarketModule, 'getBatchSeriesFromDb' | 'getTradingDays'>, strategyDraft: StrategyDraft, options: BacktestOptions): Promise<BacktestResult>;
5
+ export declare function backtest(strategy: Strategy, options: BacktestOptions): Promise<BacktestResult>;
3
6
  //# sourceMappingURL=backtest.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"backtest.d.ts","sourceRoot":"","sources":["../../src/strategy/backtest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzE,wBAAsB,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAEtG"}
1
+ {"version":3,"file":"backtest.d.ts","sourceRoot":"","sources":["../../src/strategy/backtest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,eAAe,EAEf,cAAc,EAEd,QAAQ,EACR,aAAa,EACd,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,YAAY,EAA2B,MAAM,iBAAiB,CAAC;AA4c7E,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,sBAAsB,GAAG,gBAAgB,CAAC,EACrE,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC,CAEzB;AAED,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,sBAAsB,GAAG,gBAAgB,CAAC,EACrE,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,cAAc,CAAC,CAGzB;AAED,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAwVpG"}