@livefolio/sdk 0.2.12 → 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 (110) hide show
  1. package/README.md +277 -84
  2. package/dist/index.d.ts +397 -23
  3. package/dist/index.js +1375 -51
  4. package/dist/index.js.map +1 -1
  5. package/package.json +36 -35
  6. package/dist/auth/client.d.ts +0 -4
  7. package/dist/auth/client.d.ts.map +0 -1
  8. package/dist/auth/client.js +0 -37
  9. package/dist/auth/client.js.map +0 -1
  10. package/dist/auth/index.d.ts +0 -3
  11. package/dist/auth/index.d.ts.map +0 -1
  12. package/dist/auth/index.js +0 -6
  13. package/dist/auth/index.js.map +0 -1
  14. package/dist/auth/types.d.ts +0 -9
  15. package/dist/auth/types.d.ts.map +0 -1
  16. package/dist/auth/types.js +0 -3
  17. package/dist/auth/types.js.map +0 -1
  18. package/dist/index.d.ts.map +0 -1
  19. package/dist/market/client.d.ts +0 -4
  20. package/dist/market/client.d.ts.map +0 -1
  21. package/dist/market/client.js +0 -137
  22. package/dist/market/client.js.map +0 -1
  23. package/dist/market/index.d.ts +0 -5
  24. package/dist/market/index.d.ts.map +0 -1
  25. package/dist/market/index.js +0 -9
  26. package/dist/market/index.js.map +0 -1
  27. package/dist/market/trackedTickers.d.ts +0 -4
  28. package/dist/market/trackedTickers.d.ts.map +0 -1
  29. package/dist/market/trackedTickers.js +0 -256
  30. package/dist/market/trackedTickers.js.map +0 -1
  31. package/dist/market/types.d.ts +0 -29
  32. package/dist/market/types.d.ts.map +0 -1
  33. package/dist/market/types.js +0 -3
  34. package/dist/market/types.js.map +0 -1
  35. package/dist/portfolio/client.d.ts +0 -4
  36. package/dist/portfolio/client.d.ts.map +0 -1
  37. package/dist/portfolio/client.js +0 -13
  38. package/dist/portfolio/client.js.map +0 -1
  39. package/dist/portfolio/index.d.ts +0 -5
  40. package/dist/portfolio/index.d.ts.map +0 -1
  41. package/dist/portfolio/index.js +0 -26
  42. package/dist/portfolio/index.js.map +0 -1
  43. package/dist/portfolio/rebalance.d.ts +0 -62
  44. package/dist/portfolio/rebalance.d.ts.map +0 -1
  45. package/dist/portfolio/rebalance.js +0 -205
  46. package/dist/portfolio/rebalance.js.map +0 -1
  47. package/dist/portfolio/symbols.d.ts +0 -13
  48. package/dist/portfolio/symbols.d.ts.map +0 -1
  49. package/dist/portfolio/symbols.js +0 -112
  50. package/dist/portfolio/symbols.js.map +0 -1
  51. package/dist/portfolio/types.d.ts +0 -13
  52. package/dist/portfolio/types.d.ts.map +0 -1
  53. package/dist/portfolio/types.js +0 -3
  54. package/dist/portfolio/types.js.map +0 -1
  55. package/dist/strategy/backtest.d.ts +0 -6
  56. package/dist/strategy/backtest.d.ts.map +0 -1
  57. package/dist/strategy/backtest.js +0 -698
  58. package/dist/strategy/backtest.js.map +0 -1
  59. package/dist/strategy/cache.d.ts +0 -8
  60. package/dist/strategy/cache.d.ts.map +0 -1
  61. package/dist/strategy/cache.js +0 -314
  62. package/dist/strategy/cache.js.map +0 -1
  63. package/dist/strategy/client.d.ts +0 -4
  64. package/dist/strategy/client.d.ts.map +0 -1
  65. package/dist/strategy/client.js +0 -29
  66. package/dist/strategy/client.js.map +0 -1
  67. package/dist/strategy/evaluate.d.ts +0 -10
  68. package/dist/strategy/evaluate.d.ts.map +0 -1
  69. package/dist/strategy/evaluate.js +0 -528
  70. package/dist/strategy/evaluate.js.map +0 -1
  71. package/dist/strategy/get.d.ts +0 -5
  72. package/dist/strategy/get.d.ts.map +0 -1
  73. package/dist/strategy/get.js +0 -25
  74. package/dist/strategy/get.js.map +0 -1
  75. package/dist/strategy/index.d.ts +0 -14
  76. package/dist/strategy/index.d.ts.map +0 -1
  77. package/dist/strategy/index.js +0 -42
  78. package/dist/strategy/index.js.map +0 -1
  79. package/dist/strategy/livefolio.d.ts +0 -25
  80. package/dist/strategy/livefolio.d.ts.map +0 -1
  81. package/dist/strategy/livefolio.js +0 -67
  82. package/dist/strategy/livefolio.js.map +0 -1
  83. package/dist/strategy/performance.d.ts +0 -17
  84. package/dist/strategy/performance.d.ts.map +0 -1
  85. package/dist/strategy/performance.js +0 -57
  86. package/dist/strategy/performance.js.map +0 -1
  87. package/dist/strategy/rules.d.ts +0 -3
  88. package/dist/strategy/rules.d.ts.map +0 -1
  89. package/dist/strategy/rules.js +0 -95
  90. package/dist/strategy/rules.js.map +0 -1
  91. package/dist/strategy/stream.d.ts +0 -5
  92. package/dist/strategy/stream.d.ts.map +0 -1
  93. package/dist/strategy/stream.js +0 -58
  94. package/dist/strategy/stream.js.map +0 -1
  95. package/dist/strategy/symbols.d.ts +0 -4
  96. package/dist/strategy/symbols.d.ts.map +0 -1
  97. package/dist/strategy/symbols.js +0 -41
  98. package/dist/strategy/symbols.js.map +0 -1
  99. package/dist/strategy/time.d.ts +0 -9
  100. package/dist/strategy/time.d.ts.map +0 -1
  101. package/dist/strategy/time.js +0 -28
  102. package/dist/strategy/time.js.map +0 -1
  103. package/dist/strategy/types.d.ts +0 -200
  104. package/dist/strategy/types.d.ts.map +0 -1
  105. package/dist/strategy/types.js +0 -3
  106. package/dist/strategy/types.js.map +0 -1
  107. package/dist/types.d.ts +0 -4
  108. package/dist/types.d.ts.map +0 -1
  109. package/dist/types.js +0 -3
  110. package/dist/types.js.map +0 -1
@@ -1,528 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.indicatorKey = indicatorKey;
4
- exports.signalKey = signalKey;
5
- exports.evaluateIndicator = evaluateIndicator;
6
- exports.evaluateSignal = evaluateSignal;
7
- exports.evaluateAllocation = evaluateAllocation;
8
- exports.evaluate = evaluate;
9
- exports.findAllSignals = findAllSignals;
10
- exports.getEvaluationDate = getEvaluationDate;
11
- const symbols_1 = require("./symbols");
12
- const time_1 = require("./time");
13
- const INTERNAL_SERIES_CACHE = new WeakMap();
14
- function toInternalSeries(series) {
15
- const cached = INTERNAL_SERIES_CACHE.get(series);
16
- if (cached)
17
- return cached;
18
- const normalized = series.map((o) => ({ timestamp: new Date(o.timestamp), price: o.value }));
19
- INTERNAL_SERIES_CACHE.set(series, normalized);
20
- return normalized;
21
- }
22
- // ---------------------------------------------------------------------------
23
- // Indicator key (used for diagnostics + metadata lookup)
24
- // ---------------------------------------------------------------------------
25
- function indicatorKey(ind) {
26
- if (ind.type === 'Threshold')
27
- return `Threshold_${ind.threshold ?? 0}`;
28
- const d = ind.delay ? `_d${ind.delay}` : '';
29
- return `${ind.type}_${ind.ticker.symbol}_${ind.lookback}${d}`;
30
- }
31
- // ---------------------------------------------------------------------------
32
- // Signal identity key (for previousSignalStates lookup)
33
- // ---------------------------------------------------------------------------
34
- function signalKey(signal) {
35
- return `${indicatorKey(signal.left)}_${signal.comparison}_${indicatorKey(signal.right)}_t${signal.tolerance}`;
36
- }
37
- // ---------------------------------------------------------------------------
38
- // Series picking
39
- // ---------------------------------------------------------------------------
40
- function pickSeries(batchSeries, ticker, at, lookback, delay) {
41
- const source = toInternalSeries(batchSeries[ticker.symbol] ?? []);
42
- if (source.length === 0)
43
- return [];
44
- let lo = 0;
45
- let hi = source.length - 1;
46
- let atIndex = -1;
47
- while (lo <= hi) {
48
- const mid = (lo + hi) >> 1;
49
- if (source[mid].timestamp <= at) {
50
- atIndex = mid;
51
- lo = mid + 1;
52
- }
53
- else {
54
- hi = mid - 1;
55
- }
56
- }
57
- if (atIndex < 0)
58
- return [];
59
- const end = atIndex + 1 - delay;
60
- const start = Math.max(0, end - lookback);
61
- const obs = source.slice(start, end);
62
- if (ticker.leverage === 1 || obs.length === 0) {
63
- return obs;
64
- }
65
- const leveraged = [obs[0]];
66
- for (let i = 1; i < obs.length; i++) {
67
- const dailyReturn = (obs[i].price - obs[i - 1].price) / obs[i - 1].price;
68
- const leveragedReturn = dailyReturn * ticker.leverage;
69
- const leveragedPrice = leveraged[i - 1].price * (1 + leveragedReturn);
70
- leveraged.push({ timestamp: obs[i].timestamp, price: leveragedPrice });
71
- }
72
- return leveraged;
73
- }
74
- // ---------------------------------------------------------------------------
75
- // Math helpers
76
- // ---------------------------------------------------------------------------
77
- function mean(values) {
78
- return values.reduce((a, b) => a + b, 0) / values.length;
79
- }
80
- function smooth(values, k) {
81
- let avg = values[0];
82
- for (let i = 1; i < values.length; i++) {
83
- avg = values[i] * k + avg * (1 - k);
84
- }
85
- return avg;
86
- }
87
- function percentChange(a, b) {
88
- return ((b - a) / a) * 100;
89
- }
90
- function makeResult(timestamp, value, metadata) {
91
- return { timestamp: timestamp.toISOString(), value, ...(metadata !== undefined ? { metadata } : {}) };
92
- }
93
- const INDICATOR_FNS = {
94
- SMA(batchSeries, ticker, at, lookback, delay) {
95
- const obs = pickSeries(batchSeries, ticker, at, lookback, delay);
96
- if (obs.length === 0) {
97
- throw new Error(`SMA: No observations found for ${ticker.symbol} at ${at.toISOString()}.`);
98
- }
99
- const prices = obs.map((o) => o.price);
100
- return makeResult(obs[obs.length - 1].timestamp, mean(prices));
101
- },
102
- EMA(batchSeries, ticker, at, lookback, delay, prevMeta) {
103
- const k = 2 / (lookback + 1);
104
- // Incremental path: if we have previous EMA value, compute O(1)
105
- if (prevMeta && typeof prevMeta === 'object' && 'ema' in prevMeta) {
106
- const prevEma = prevMeta.ema;
107
- const obs = pickSeries(batchSeries, ticker, at, 1, delay);
108
- if (obs.length > 0) {
109
- const price = obs[obs.length - 1].price;
110
- const newEma = price * k + prevEma * (1 - k);
111
- return makeResult(obs[obs.length - 1].timestamp, newEma, { ema: newEma });
112
- }
113
- }
114
- // Full series fallback
115
- const obs = pickSeries(batchSeries, ticker, at, Infinity, delay);
116
- if (obs.length === 0) {
117
- throw new Error(`EMA: No observations found for ${ticker.symbol} at ${at.toISOString()}.`);
118
- }
119
- const prices = obs.map((o) => o.price);
120
- const ema = smooth(prices, k);
121
- return makeResult(obs[obs.length - 1].timestamp, ema, { ema });
122
- },
123
- Price(batchSeries, ticker, at, _lookback, delay) {
124
- const obs = pickSeries(batchSeries, ticker, at, 1, delay);
125
- if (obs.length === 0) {
126
- throw new Error(`Price: No observations found for ${ticker.symbol} at ${at.toISOString()}.`);
127
- }
128
- return makeResult(obs[obs.length - 1].timestamp, obs[obs.length - 1].price);
129
- },
130
- Return(batchSeries, ticker, at, lookback, delay) {
131
- const obs = pickSeries(batchSeries, ticker, at, lookback, delay);
132
- if (obs.length === 0) {
133
- throw new Error(`Return: No observations found for ${ticker.symbol} at ${at.toISOString()}.`);
134
- }
135
- return makeResult(obs[obs.length - 1].timestamp, percentChange(obs[0].price, obs[obs.length - 1].price));
136
- },
137
- Volatility(batchSeries, ticker, at, lookback, delay) {
138
- const obs = pickSeries(batchSeries, ticker, at, lookback, delay);
139
- if (obs.length === 0) {
140
- throw new Error(`Volatility: No observations found for ${ticker.symbol} at ${at.toISOString()}.`);
141
- }
142
- const prices = obs.map((o) => o.price);
143
- const returns = prices.slice(1).map((price, i) => (price - prices[i]) / prices[i]);
144
- const meanReturn = mean(returns);
145
- const variance = mean(returns.map((r) => Math.pow(r - meanReturn, 2)));
146
- const sd = Math.sqrt(variance);
147
- const annualized = sd * Math.sqrt(252) * 100;
148
- return makeResult(obs[obs.length - 1].timestamp, annualized);
149
- },
150
- Drawdown(batchSeries, ticker, at, _lookback, delay, prevMeta) {
151
- // Incremental peak tracking
152
- if (prevMeta && typeof prevMeta === 'object' && 'peak' in prevMeta) {
153
- const prevPeak = prevMeta.peak;
154
- const obs = pickSeries(batchSeries, ticker, at, 1, delay);
155
- if (obs.length > 0) {
156
- const current = obs[obs.length - 1].price;
157
- const peak = Math.max(prevPeak, current);
158
- const dd = Math.abs(percentChange(peak, current));
159
- return makeResult(obs[obs.length - 1].timestamp, dd, { peak });
160
- }
161
- }
162
- // Full series fallback
163
- const obs = pickSeries(batchSeries, ticker, at, Infinity, delay);
164
- if (obs.length === 0) {
165
- throw new Error(`Drawdown: No observations found for ${ticker.symbol} at ${at.toISOString()}.`);
166
- }
167
- const prices = obs.map((o) => o.price);
168
- const current = prices[prices.length - 1];
169
- const peak = Math.max(...prices);
170
- const dd = Math.abs(percentChange(peak, current));
171
- return makeResult(obs[obs.length - 1].timestamp, dd, { peak });
172
- },
173
- RSI(batchSeries, ticker, at, lookback, delay, prevMeta) {
174
- const k = 1 / lookback;
175
- // Incremental path
176
- if (prevMeta && typeof prevMeta === 'object' && 'avgGain' in prevMeta && 'avgLoss' in prevMeta) {
177
- const { avgGain: prevAvgGain, avgLoss: prevAvgLoss } = prevMeta;
178
- const obs = pickSeries(batchSeries, ticker, at, 2, delay);
179
- if (obs.length >= 2) {
180
- const change = obs[obs.length - 1].price - obs[obs.length - 2].price;
181
- const gain = change >= 0 ? change : 0;
182
- const loss = change < 0 ? -change : 0;
183
- const avgGain = gain * k + prevAvgGain * (1 - k);
184
- const avgLoss = loss * k + prevAvgLoss * (1 - k);
185
- const rsi = avgLoss === 0 ? (avgGain === 0 ? 50 : 100) : 100 - 100 / (1 + avgGain / avgLoss);
186
- return makeResult(obs[obs.length - 1].timestamp, rsi, { avgGain, avgLoss });
187
- }
188
- }
189
- // Full series fallback
190
- const obs = pickSeries(batchSeries, ticker, at, Infinity, delay);
191
- if (obs.length === 0) {
192
- throw new Error(`RSI: No observations found for ${ticker.symbol} at ${at.toISOString()}.`);
193
- }
194
- const prices = obs.map((o) => o.price);
195
- const returns = prices.slice(1).map((price, i) => price - prices[i]);
196
- const gains = returns.map((delta) => (delta >= 0 ? delta : 0));
197
- const losses = returns.map((delta) => (delta < 0 ? -delta : 0));
198
- const avgGain = smooth(gains, k);
199
- const avgLoss = smooth(losses, k);
200
- const rsi = avgLoss === 0 ? (avgGain === 0 ? 50 : 100) : 100 - 100 / (1 + avgGain / avgLoss);
201
- return makeResult(obs[obs.length - 1].timestamp, rsi, { avgGain, avgLoss });
202
- },
203
- VIX(batchSeries, _ticker, at, lookback, delay) {
204
- return INDICATOR_FNS.Price(batchSeries, { symbol: symbols_1.INDICATOR_SYMBOL_MAP['VIX'], leverage: 1 }, at, lookback, delay);
205
- },
206
- VIX3M(batchSeries, _ticker, at, lookback, delay) {
207
- return INDICATOR_FNS.Price(batchSeries, { symbol: symbols_1.INDICATOR_SYMBOL_MAP['VIX3M'], leverage: 1 }, at, lookback, delay);
208
- },
209
- T3M(batchSeries, _ticker, at, lookback, delay) {
210
- return INDICATOR_FNS.Price(batchSeries, { symbol: symbols_1.INDICATOR_SYMBOL_MAP['T3M'], leverage: 1 }, at, lookback, delay);
211
- },
212
- T6M(batchSeries, _ticker, at, lookback, delay) {
213
- return INDICATOR_FNS.Price(batchSeries, { symbol: symbols_1.INDICATOR_SYMBOL_MAP['T6M'], leverage: 1 }, at, lookback, delay);
214
- },
215
- T1Y(batchSeries, _ticker, at, lookback, delay) {
216
- return INDICATOR_FNS.Price(batchSeries, { symbol: symbols_1.INDICATOR_SYMBOL_MAP['T1Y'], leverage: 1 }, at, lookback, delay);
217
- },
218
- T2Y(batchSeries, _ticker, at, lookback, delay) {
219
- return INDICATOR_FNS.Price(batchSeries, { symbol: symbols_1.INDICATOR_SYMBOL_MAP['T2Y'], leverage: 1 }, at, lookback, delay);
220
- },
221
- T3Y(batchSeries, _ticker, at, lookback, delay) {
222
- return INDICATOR_FNS.Price(batchSeries, { symbol: symbols_1.INDICATOR_SYMBOL_MAP['T3Y'], leverage: 1 }, at, lookback, delay);
223
- },
224
- T5Y(batchSeries, _ticker, at, lookback, delay) {
225
- return INDICATOR_FNS.Price(batchSeries, { symbol: symbols_1.INDICATOR_SYMBOL_MAP['T5Y'], leverage: 1 }, at, lookback, delay);
226
- },
227
- T7Y(batchSeries, _ticker, at, lookback, delay) {
228
- return INDICATOR_FNS.Price(batchSeries, { symbol: symbols_1.INDICATOR_SYMBOL_MAP['T7Y'], leverage: 1 }, at, lookback, delay);
229
- },
230
- T10Y(batchSeries, _ticker, at, lookback, delay) {
231
- return INDICATOR_FNS.Price(batchSeries, { symbol: symbols_1.INDICATOR_SYMBOL_MAP['T10Y'], leverage: 1 }, at, lookback, delay);
232
- },
233
- T20Y(batchSeries, _ticker, at, lookback, delay) {
234
- return INDICATOR_FNS.Price(batchSeries, { symbol: symbols_1.INDICATOR_SYMBOL_MAP['T20Y'], leverage: 1 }, at, lookback, delay);
235
- },
236
- T30Y(batchSeries, _ticker, at, lookback, delay) {
237
- return INDICATOR_FNS.Price(batchSeries, { symbol: symbols_1.INDICATOR_SYMBOL_MAP['T30Y'], leverage: 1 }, at, lookback, delay);
238
- },
239
- Month(_batchSeries, _ticker, at, _lookback, delay) {
240
- const date = new Date(at.getTime() - delay * 24 * 60 * 60 * 1000);
241
- return makeResult(date, date.getUTCMonth() + 1);
242
- },
243
- 'Day of Week'(_batchSeries, _ticker, at, _lookback, delay) {
244
- const date = new Date(at.getTime() - delay * 24 * 60 * 60 * 1000);
245
- return makeResult(date, date.getUTCDay());
246
- },
247
- 'Day of Month'(_batchSeries, _ticker, at, _lookback, delay) {
248
- const date = new Date(at.getTime() - delay * 24 * 60 * 60 * 1000);
249
- return makeResult(date, date.getUTCDate());
250
- },
251
- 'Day of Year'(_batchSeries, _ticker, at, _lookback, delay) {
252
- const date = new Date(at.getTime() - delay * 24 * 60 * 60 * 1000);
253
- const utcDate = Date.UTC(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());
254
- const utcYearStart = Date.UTC(date.getUTCFullYear(), 0, 0);
255
- const dayOfYear = (utcDate - utcYearStart) / (24 * 60 * 60 * 1000);
256
- return makeResult(date, dayOfYear);
257
- },
258
- Threshold() {
259
- throw new Error('Threshold should not be evaluated as an indicator function.');
260
- },
261
- };
262
- // ---------------------------------------------------------------------------
263
- // Public evaluation functions
264
- // ---------------------------------------------------------------------------
265
- function evaluateIndicator(indicator, options) {
266
- if (indicator.type === 'Threshold') {
267
- return makeResult(options.at, indicator.threshold);
268
- }
269
- const delay = indicator.delay;
270
- // Temporal indicators don't depend on series
271
- if (['Month', 'Day of Week', 'Day of Month', 'Day of Year'].includes(indicator.type)) {
272
- return INDICATOR_FNS[indicator.type](options.batchSeries, indicator.ticker, options.at, indicator.lookback, delay);
273
- }
274
- // Get previous metadata for incremental evaluation
275
- const key = indicatorKey(indicator);
276
- const prevMeta = options.previousIndicatorMetadata?.[key];
277
- return INDICATOR_FNS[indicator.type](options.batchSeries, indicator.ticker, options.at, indicator.lookback, delay, prevMeta);
278
- }
279
- function evaluateSignal(signal, options) {
280
- const left = evaluateIndicator(signal.left, options);
281
- const right = evaluateIndicator(signal.right, options);
282
- const tolerance = signal.tolerance ?? 0;
283
- const rawToleranceDelta = signal.left.unit === '%' ? tolerance : Math.abs(right.value) * (tolerance / 100);
284
- const toleranceDelta = Number.isFinite(rawToleranceDelta) ? Math.abs(rawToleranceDelta) : 0;
285
- const lowerBound = Math.min(right.value - toleranceDelta, right.value + toleranceDelta);
286
- const upperBound = Math.max(right.value - toleranceDelta, right.value + toleranceDelta);
287
- const comparison = signal.comparison;
288
- if (comparison === '=') {
289
- return lowerBound <= left.value && left.value <= upperBound;
290
- }
291
- // Cold start: if no prior state exists for this signal, evaluate strict comparator.
292
- const key = signalKey(signal);
293
- const previous = options.previousSignalStates?.[key];
294
- const hasPrevious = previous !== undefined;
295
- // Zero tolerance means no dead band; preserve strict legacy behavior.
296
- if (!hasPrevious || toleranceDelta === 0) {
297
- return comparison === '>' ? left.value > right.value : left.value < right.value;
298
- }
299
- if (comparison === '>') {
300
- return previous
301
- ? left.value >= lowerBound // stay true inside band; turn off only fully below
302
- : left.value > upperBound; // turn on only after fully crossing above
303
- }
304
- else {
305
- return previous
306
- ? left.value <= upperBound // stay true inside band; turn off only fully above
307
- : left.value < lowerBound; // turn on only after fully crossing below
308
- }
309
- }
310
- function evaluateAllocation(allocation, options) {
311
- return evaluateCondition(allocation.condition, options);
312
- }
313
- function evaluateCondition(condition, options) {
314
- switch (condition.kind) {
315
- case 'or':
316
- return condition.args.some((andExpr) => evaluateCondition(andExpr, options));
317
- case 'and':
318
- return condition.args.every((unaryExpr) => evaluateCondition(unaryExpr, options));
319
- case 'not':
320
- return !evaluateSignal(condition.signal, options);
321
- case 'signal':
322
- return evaluateSignal(condition.signal, options);
323
- }
324
- }
325
- function evaluate(strategy, options) {
326
- const allSignals = getAllSignalsFromStrategy(strategy);
327
- const indicatorsMap = new Map();
328
- const indicatorsOrder = [];
329
- for (const signal of allSignals) {
330
- for (const ind of [signal.left, signal.right]) {
331
- const key = indicatorKey(ind);
332
- if (indicatorsMap.has(key))
333
- continue;
334
- const res = evaluateIndicator(ind, options);
335
- indicatorsMap.set(key, res);
336
- indicatorsOrder.push(key);
337
- }
338
- }
339
- const indicators = {};
340
- for (const k of indicatorsOrder)
341
- indicators[k] = indicatorsMap.get(k);
342
- const signals = {};
343
- for (const signal of allSignals) {
344
- signals[signalKey(signal)] = evaluateSignal(signal, options);
345
- }
346
- // Find first matching allocation (insertion order = priority order from DB)
347
- const allocationEntries = Object.entries(strategy.allocations);
348
- const lastEntry = allocationEntries[allocationEntries.length - 1];
349
- let winningName = lastEntry[0];
350
- let winningAllocation = lastEntry[1];
351
- for (const [name, allocation] of allocationEntries) {
352
- if (evaluateConditionWithSignalValues(allocation.condition, signals)) {
353
- winningName = name;
354
- winningAllocation = allocation;
355
- break;
356
- }
357
- }
358
- const asOf = getEvaluationDate(strategy.trading, options);
359
- return {
360
- allocation: {
361
- name: winningName,
362
- holdings: winningAllocation.holdings,
363
- },
364
- asOf,
365
- signals,
366
- indicators,
367
- };
368
- }
369
- function evaluateConditionWithSignalValues(condition, signalValues) {
370
- switch (condition.kind) {
371
- case 'or':
372
- return condition.args.some((andExpr) => evaluateConditionWithSignalValues(andExpr, signalValues));
373
- case 'and':
374
- return condition.args.every((unaryExpr) => evaluateConditionWithSignalValues(unaryExpr, signalValues));
375
- case 'not':
376
- return !(signalValues[signalKey(condition.signal)] ?? false);
377
- case 'signal':
378
- return signalValues[signalKey(condition.signal)] ?? false;
379
- }
380
- }
381
- // ---------------------------------------------------------------------------
382
- // Helpers
383
- // ---------------------------------------------------------------------------
384
- function getAllSignalsFromStrategy(strategy) {
385
- const seen = new Set();
386
- const out = [];
387
- for (const allocation of Object.values(strategy.allocations)) {
388
- for (const s of findAllSignals(allocation.condition)) {
389
- const key = signalKey(s);
390
- if (!seen.has(key)) {
391
- seen.add(key);
392
- out.push(s);
393
- }
394
- }
395
- }
396
- return out;
397
- }
398
- function findAllSignals(condition) {
399
- const signals = [];
400
- const seen = new Set();
401
- function traverse(cond) {
402
- switch (cond.kind) {
403
- case 'or':
404
- cond.args.forEach(traverse);
405
- break;
406
- case 'and':
407
- cond.args.forEach(traverse);
408
- break;
409
- case 'not': {
410
- const key = signalKey(cond.signal);
411
- if (!seen.has(key)) {
412
- seen.add(key);
413
- signals.push(cond.signal);
414
- }
415
- break;
416
- }
417
- case 'signal': {
418
- const key = signalKey(cond.signal);
419
- if (!seen.has(key)) {
420
- seen.add(key);
421
- signals.push(cond.signal);
422
- }
423
- break;
424
- }
425
- }
426
- }
427
- traverse(condition);
428
- return signals;
429
- }
430
- // ---------------------------------------------------------------------------
431
- // Evaluation date (ported from evaluateLatestAllocationDate)
432
- // ---------------------------------------------------------------------------
433
- function getEvaluationDate(trading, options) {
434
- const series = Object.values(options.batchSeries)[0];
435
- if (!series || series.length === 0) {
436
- return options.at;
437
- }
438
- const internalSeries = toInternalSeries(series);
439
- const latestCloseObs = findLatestMarketCloseObs(internalSeries, options.at);
440
- if (!latestCloseObs) {
441
- return options.at;
442
- }
443
- let { start, end } = getPeriodBounds(latestCloseObs.timestamp, trading.frequency);
444
- let periodObs = findObservationsInPeriod(internalSeries, start, end);
445
- if (trading.frequency !== 'Daily') {
446
- const lastPeriodObs = periodObs.at(-1);
447
- if (lastPeriodObs) {
448
- const lastObsDate = lastPeriodObs.timestamp.toISOString().slice(0, 10);
449
- const endDate = end.toISOString().slice(0, 10);
450
- if (lastObsDate < endDate) {
451
- const prevPeriodDate = new Date(start);
452
- prevPeriodDate.setUTCDate(prevPeriodDate.getUTCDate() - 1);
453
- ({ start, end } = getPeriodBounds(prevPeriodDate, trading.frequency));
454
- periodObs = findObservationsInPeriod(internalSeries, start, end);
455
- }
456
- }
457
- }
458
- const index = periodObs.length - 1 - trading.offset;
459
- if (index < 0) {
460
- return periodObs[0]?.timestamp ?? options.at;
461
- }
462
- return periodObs[index].timestamp;
463
- }
464
- function findLatestMarketCloseObs(series, cutoff) {
465
- for (let i = series.length - 1; i >= 0 && i >= series.length - 100; i--) {
466
- const obs = series[i];
467
- if (obs.timestamp <= cutoff && (0, time_1.isAtMarketClose)(obs.timestamp)) {
468
- return obs;
469
- }
470
- }
471
- return undefined;
472
- }
473
- function findObservationsInPeriod(series, start, end) {
474
- const result = [];
475
- for (let i = series.length - 1; i >= 0; i--) {
476
- const obs = series[i];
477
- if (obs.timestamp < start)
478
- break;
479
- if (obs.timestamp >= start && obs.timestamp <= end && (0, time_1.isAtMarketClose)(obs.timestamp)) {
480
- result.unshift(obs);
481
- }
482
- }
483
- return result;
484
- }
485
- function getPeriodBounds(date, frequency) {
486
- const year = date.getUTCFullYear();
487
- const month = date.getUTCMonth();
488
- const day = date.getUTCDate();
489
- const startOfDayUTC = (y, m, d) => new Date(Date.UTC(y, m, d, 0, 0, 0, 0));
490
- const endOfDayUTC = (y, m, d) => new Date(Date.UTC(y, m, d, 23, 59, 59, 999));
491
- const lastDayOfMonth = (y, m) => new Date(Date.UTC(y, m + 1, 0)).getUTCDate();
492
- switch (frequency) {
493
- case 'Daily':
494
- return { start: startOfDayUTC(year, month, day), end: endOfDayUTC(year, month, day) };
495
- case 'Weekly': {
496
- const dayOfWeek = date.getUTCDay();
497
- const mondayOffset = (dayOfWeek + 6) % 7;
498
- const monday = new Date(Date.UTC(year, month, day - mondayOffset));
499
- const friday = new Date(Date.UTC(monday.getUTCFullYear(), monday.getUTCMonth(), monday.getUTCDate() + 4, 23, 59, 59, 999));
500
- return { start: monday, end: friday };
501
- }
502
- case 'Monthly':
503
- return { start: startOfDayUTC(year, month, 1), end: endOfDayUTC(year, month, lastDayOfMonth(year, month)) };
504
- case 'Bi-monthly': {
505
- const ps = Math.floor(month / 2) * 2;
506
- const pe = ps + 1;
507
- return { start: startOfDayUTC(year, ps, 1), end: endOfDayUTC(year, pe, lastDayOfMonth(year, pe)) };
508
- }
509
- case 'Quarterly': {
510
- const ps = Math.floor(month / 3) * 3;
511
- const pe = ps + 2;
512
- return { start: startOfDayUTC(year, ps, 1), end: endOfDayUTC(year, pe, lastDayOfMonth(year, pe)) };
513
- }
514
- case 'Every 4 Months': {
515
- const ps = Math.floor(month / 4) * 4;
516
- const pe = ps + 3;
517
- return { start: startOfDayUTC(year, ps, 1), end: endOfDayUTC(year, pe, lastDayOfMonth(year, pe)) };
518
- }
519
- case 'Semiannually': {
520
- const ps = Math.floor(month / 6) * 6;
521
- const pe = ps + 5;
522
- return { start: startOfDayUTC(year, ps, 1), end: endOfDayUTC(year, pe, lastDayOfMonth(year, pe)) };
523
- }
524
- case 'Yearly':
525
- return { start: startOfDayUTC(year, 0, 1), end: endOfDayUTC(year, 11, 31) };
526
- }
527
- }
528
- //# sourceMappingURL=evaluate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"evaluate.js","sourceRoot":"","sources":["../../src/strategy/evaluate.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- import type { TypedSupabaseClient } from '../types';
2
- import type { Strategy } from './types';
3
- export declare function get(client: TypedSupabaseClient, linkId: string): Promise<Strategy | null>;
4
- export declare function getMany(client: TypedSupabaseClient, linkIds: string[]): Promise<Record<string, Strategy>>;
5
- //# sourceMappingURL=get.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../src/strategy/get.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExC,wBAAsB,GAAG,CAAC,MAAM,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAM/F;AAED,wBAAsB,OAAO,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAU/G"}
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.get = get;
4
- exports.getMany = getMany;
5
- async function get(client, linkId) {
6
- const { data, error } = await client.functions.invoke('strategy', {
7
- body: { linkId },
8
- });
9
- if (error || !data)
10
- return null;
11
- return data;
12
- }
13
- async function getMany(client, linkIds) {
14
- if (linkIds.length === 0)
15
- return {};
16
- const result = {};
17
- const promises = linkIds.map(async (id) => {
18
- const strategy = await get(client, id);
19
- if (strategy)
20
- result[id] = strategy;
21
- });
22
- await Promise.all(promises);
23
- return result;
24
- }
25
- //# sourceMappingURL=get.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"get.js","sourceRoot":"","sources":["../../src/strategy/get.ts"],"names":[],"mappings":";;AAGA,kBAMC;AAED,0BAUC;AAlBM,KAAK,UAAU,GAAG,CAAC,MAA2B,EAAE,MAAc;IACnE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE;QAChE,IAAI,EAAE,EAAE,MAAM,EAAE;KACjB,CAAC,CAAC;IACH,IAAI,KAAK,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,IAAgB,CAAC;AAC1B,CAAC;AAEM,KAAK,UAAU,OAAO,CAAC,MAA2B,EAAE,OAAiB;IAC1E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEpC,MAAM,MAAM,GAA6B,EAAE,CAAC;IAC5C,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;QACxC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACvC,IAAI,QAAQ;YAAE,MAAM,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC;IACtC,CAAC,CAAC,CAAC;IACH,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5B,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,14 +0,0 @@
1
- export type { StrategyModule, Strategy, AllocationEvaluation, Signal, Allocation, Indicator, Ticker, Holding, Trading, Condition, SignalExpr, NotExpr, UnaryExpr, AndExpr, OrExpr, Comparison, IndicatorType, Frequency, Unit, EvaluationOptions, IndicatorEvaluation, StrategyEvaluation, StreamObservation, StrategyDraft, StrategyAllocationDraft, SignalNameExpr, NotSignalNameExpr, SignalNameUnaryExpr, SignalNameAndExpr, SignalNameOrExpr, SignalNameCondition, BacktestOptions, BacktestDebugOptions, BacktestRebalanceConfig, BacktestResult, BacktestTrade, BacktestTimeseries, BacktestSummary, BacktestAnnualTax, } from './types';
2
- export { createStrategy } from './client';
3
- export { get, getMany } from './get';
4
- export { evaluateCached, fetchIndicatorKeyMap } from './cache';
5
- export { stream } from './stream';
6
- export { backtest, backtestWithMarketData, backtestRulesWithMarketData } from './backtest';
7
- export { computePerformanceMetrics } from './performance';
8
- export { compileRules } from './rules';
9
- export { evaluateIndicator, evaluateSignal, evaluateAllocation, evaluate, getEvaluationDate, indicatorKey, signalKey } from './evaluate';
10
- export { extractSymbols, INDICATOR_SYMBOL_MAP } from './symbols';
11
- export { utcToET, isAtMarketClose } from './time';
12
- export { canonicalizeLivefolioDefinition, hashLivefolioDefinition, deriveLivefolioLinkId, hashLivefolioStrategyDraft, ensureLivefolioStrategy, } from './livefolio';
13
- export type { LivefolioEnsureAdapter, LivefolioEnsureAdapterInput, LivefolioEnsureAdapterResult, } from './livefolio';
14
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/strategy/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,QAAQ,EACR,oBAAoB,EACpB,MAAM,EACN,UAAU,EACV,SAAS,EACT,MAAM,EACN,OAAO,EACP,OAAO,EACP,SAAS,EACT,UAAU,EACV,OAAO,EACP,SAAS,EACT,OAAO,EACP,MAAM,EACN,UAAU,EACV,aAAa,EACb,SAAS,EACT,IAAI,EACJ,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,uBAAuB,EACvB,cAAc,EACd,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,oBAAoB,EACpB,uBAAuB,EACvB,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,iBAAiB,GAClB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,sBAAsB,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAC3F,OAAO,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,kBAAkB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACzI,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAElD,OAAO,EACL,+BAA+B,EAC/B,uBAAuB,EACvB,qBAAqB,EACrB,0BAA0B,EAC1B,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,sBAAsB,EACtB,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,aAAa,CAAC"}