@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 +3 -0
- package/dist/market/client.d.ts.map +1 -1
- package/dist/market/client.js +28 -0
- package/dist/market/client.js.map +1 -1
- package/dist/market/index.d.ts +2 -0
- package/dist/market/index.d.ts.map +1 -1
- package/dist/market/index.js +4 -1
- package/dist/market/index.js.map +1 -1
- package/dist/market/trackedTickers.d.ts +4 -0
- package/dist/market/trackedTickers.d.ts.map +1 -0
- package/dist/market/trackedTickers.js +256 -0
- package/dist/market/trackedTickers.js.map +1 -0
- package/dist/market/types.d.ts +2 -0
- package/dist/market/types.d.ts.map +1 -1
- package/dist/strategy/backtest.d.ts +5 -2
- package/dist/strategy/backtest.d.ts.map +1 -1
- package/dist/strategy/backtest.js +657 -2
- package/dist/strategy/backtest.js.map +1 -1
- package/dist/strategy/client.d.ts.map +1 -1
- package/dist/strategy/client.js +4 -1
- package/dist/strategy/client.js.map +1 -1
- package/dist/strategy/evaluate.d.ts.map +1 -1
- package/dist/strategy/evaluate.js +35 -8
- package/dist/strategy/evaluate.js.map +1 -1
- package/dist/strategy/index.d.ts +3 -2
- package/dist/strategy/index.d.ts.map +1 -1
- package/dist/strategy/index.js +5 -1
- package/dist/strategy/index.js.map +1 -1
- package/dist/strategy/rules.d.ts +3 -0
- package/dist/strategy/rules.d.ts.map +1 -0
- package/dist/strategy/rules.js +100 -0
- package/dist/strategy/rules.js.map +1 -0
- package/dist/strategy/types.d.ts +86 -1
- package/dist/strategy/types.d.ts.map +1 -1
- package/package.json +6 -2
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,
|
|
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"}
|
package/dist/market/client.js
CHANGED
|
@@ -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":";;AAGA,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/market/client.ts"],"names":[],"mappings":";;AAGA,oCA+FC;AA/FD,SAAgB,YAAY,CAAC,MAA2B;IACtD,OAAO;QACL,KAAK,CAAC,cAAc,CAAC,OAAiB;YACpC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;YACvF,IAAI,KAAK;gBAAE,MAAM,KAAK,CAAC;YACvB,OAAO,IAAqC,CAAC;QAC/C,CAAC;QAED,KAAK,CAAC,SAAS,CAAC,MAAc;YAC5B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YACnD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;QAED,KAAK,CAAC,oBAAoB,CAAC,OAAiB,EAAE,SAAiB,EAAE,OAAe;YAC9E,MAAM,GAAG,GAAkC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;YACrG,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,GAAG,CAAC;YAErC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM;iBACjC,IAAI,CAAC,oBAAoB,CAAC;iBAC1B,MAAM,CAAC,kDAAkD,CAAC;iBAC1D,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;iBACrB,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC;iBACtB,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;iBACpB,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAEtC,IAAI,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAEnF,KAAK,MAAM,GAAG,IAAI,IAAI,IAAI,EAAE,EAAE,CAAC;gBAC7B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;gBAC1B,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC;oBAAE,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;gBACnC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC;oBACf,SAAS,EAAE,GAAG,CAAC,kBAAkB,IAAI,GAAG,GAAG,CAAC,IAAI,gBAAgB;oBAChE,KAAK,EAAE,GAAG,CAAC,cAAc;iBAC1B,CAAC,CAAC;YACL,CAAC;YAED,OAAO,GAAG,CAAC;QACb,CAAC;QAED,KAAK,CAAC,eAAe,CAAC,MAAc,EAAE,SAAiB,EAAE,OAAe;YACtE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YAC7E,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;QAED,KAAK,CAAC,cAAc,CAAC,OAAiB;YACpC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;YACtF,IAAI,KAAK;gBAAE,MAAM,KAAK,CAAC;YACvB,OAAO,IAAmC,CAAC;QAC7C,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,MAAc;YAC3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;YACnD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YAC7B,IAAI,KAAK,IAAI,IAAI;gBAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,EAAE,CAAC,CAAC;YACvE,OAAO,KAAK,CAAC;QACf,CAAC;QAED,KAAK,CAAC,cAAc,CAAC,SAAiB,EAAE,OAAe;YACrD,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM;iBACjC,IAAI,CAAC,cAAc,CAAC;iBACpB,MAAM,CAAC,4CAA4C,CAAC;iBACpD,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC;iBACtB,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;iBACpB,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAEtC,IAAI,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YAE7E,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAChC,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,GAAG,CAAC,OAAO;gBACjB,KAAK,EAAE,GAAG,CAAC,IAAI;gBACf,aAAa,EAAE,GAAG,CAAC,SAAS;gBAC5B,cAAc,EAAE,GAAG,CAAC,KAAK;aAC1B,CAAC,CAAC,CAAC;QACN,CAAC;QAED,KAAK,CAAC,aAAa,CAAC,IAAY;YAC9B,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM;iBACtC,IAAI,CAAC,cAAc,CAAC;iBACpB,MAAM,CAAC,4CAA4C,CAAC;iBACpD,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC;iBAChB,KAAK,CAAC,CAAC,CAAC;iBACR,WAAW,EAAE,CAAC;YAEjB,IAAI,KAAK,IAAI,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAC;YAE/B,OAAO;gBACL,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,GAAG,CAAC,OAAO;gBACjB,KAAK,EAAE,GAAG,CAAC,IAAI;gBACf,aAAa,EAAE,GAAG,CAAC,SAAS;gBAC5B,cAAc,EAAE,GAAG,CAAC,KAAK;aAC1B,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/market/index.d.ts
CHANGED
|
@@ -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"}
|
package/dist/market/index.js
CHANGED
|
@@ -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
|
package/dist/market/index.js.map
CHANGED
|
@@ -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"}
|
package/dist/market/types.d.ts
CHANGED
|
@@ -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;
|
|
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 {
|
|
2
|
-
|
|
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,
|
|
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"}
|