bandkit 1.0.9 → 1.0.10
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 +50 -33
- package/dist/BacktestChart.d.ts +8 -0
- package/dist/BacktestChart.d.ts.map +1 -0
- package/dist/BacktestChart.js +127 -0
- package/dist/BacktestChart.js.map +1 -0
- package/dist/BandPanel.d.ts.map +1 -1
- package/dist/BandPanel.js +2 -0
- package/dist/BandPanel.js.map +1 -1
- package/dist/StrategySelector.d.ts +10 -0
- package/dist/StrategySelector.d.ts.map +1 -0
- package/dist/StrategySelector.js +67 -0
- package/dist/StrategySelector.js.map +1 -0
- package/dist/backtestEngines.d.ts +51 -0
- package/dist/backtestEngines.d.ts.map +1 -0
- package/dist/backtestEngines.js +244 -0
- package/dist/backtestEngines.js.map +1 -0
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/useBacktest.d.ts +22 -0
- package/dist/useBacktest.d.ts.map +1 -0
- package/dist/useBacktest.js +31 -0
- package/dist/useBacktest.js.map +1 -0
- package/dist/useBinanceKlines.d.ts +25 -0
- package/dist/useBinanceKlines.d.ts.map +1 -0
- package/dist/useBinanceKlines.js +84 -0
- package/dist/useBinanceKlines.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -10,8 +10,9 @@ The package ships:
|
|
|
10
10
|
- Live market widgets: `<OrderBookWidget />`, `<TradeTape />`
|
|
11
11
|
- On-chain feed: `<ContractEventFeed />` (watches your deployed strategy contract's events)
|
|
12
12
|
- Context badges: `<RegimeBadge />` (volatility regime), `<GasBadge />` (mainnet gas price)
|
|
13
|
-
-
|
|
14
|
-
-
|
|
13
|
+
- Strategy selector: `<StrategySelector />` — ARB / Range / Grid picker with investment input
|
|
14
|
+
- Backtest chart: `<BacktestChart />` — replays the selected strategy against real Binance kline history; shows honest equity curve, PnL, trade count
|
|
15
|
+
- On-chain market context: `<UniswapPoolStats />` — live 24h volume / fees / TVL via DexScreener
|
|
15
16
|
- A dark UI throughout, with `framer-motion` animations and `sonner` toast notifications baked in
|
|
16
17
|
|
|
17
18
|
It does **not** ship trading strategy logic, signal generation, risk management, or the off-chain trade-execution daemon — those are out of scope.
|
|
@@ -44,21 +45,29 @@ max-width 1100px, gap 20px, system font stack:
|
|
|
44
45
|
│ [ GasBadge ] [ RegimeBadge ] [ConnectButton]│ ← top bar
|
|
45
46
|
├─────────────────────────────────────────────────────┤
|
|
46
47
|
│ │
|
|
48
|
+
│ <StrategySelector /> │ ← ARB | Range | Grid
|
|
49
|
+
│ strategy = useState; investment = useState │ + investment input
|
|
50
|
+
│ │
|
|
51
|
+
├─────────────────────────────────────────────────────┤
|
|
52
|
+
│ │
|
|
47
53
|
│ TradingView Advanced Chart │ ← ETHUSD on COINBASE,
|
|
48
54
|
│ (height 420px, dark theme) │ dark theme
|
|
49
55
|
│ │
|
|
56
|
+
├─────────────────────────────────────────────────────┤
|
|
57
|
+
│ │
|
|
58
|
+
│ <BacktestChart │ ← live backtest of the
|
|
59
|
+
│ strategy={strategy} │ selected strategy
|
|
60
|
+
│ investmentUsd={investment} /> │ over real kline data
|
|
61
|
+
│ │
|
|
50
62
|
├──────────────────────┬──────────────────────────────┤
|
|
51
63
|
│ │ <StrategyValueSparkline │
|
|
52
64
|
│ <BandPanel /> │ strategyContractAddress= │
|
|
53
65
|
│ (the bot UI: it │ {deployedAddress} /> │
|
|
54
66
|
│ has its own deploy,├──────────────────────────────┤
|
|
55
|
-
│ fund, start, stop, │ <
|
|
67
|
+
│ fund, start, stop, │ <UniswapPoolStats /> │ ← two-column split
|
|
56
68
|
│ withdraw buttons. │ │ on >=900px wide,
|
|
57
69
|
│ Default title is ├──────────────────────────────┤ stacked below
|
|
58
|
-
│ "Get started") │ <
|
|
59
|
-
│ │ │
|
|
60
|
-
│ ├──────────────────────────────┤
|
|
61
|
-
│ │ <OrderBookWidget /> │
|
|
70
|
+
│ "Get started") │ <OrderBookWidget /> │
|
|
62
71
|
│ │ │
|
|
63
72
|
│ ├──────────────────────────────┤
|
|
64
73
|
│ │ <TradeTape /> │
|
|
@@ -74,9 +83,10 @@ RainbowKitProvider). BandPanel fires success/error toasts on every tx.
|
|
|
74
83
|
|
|
75
84
|
Components to import from bandkit:
|
|
76
85
|
- BandPanel (the main staged UI)
|
|
86
|
+
- StrategySelector (ARB | Range | Grid tabs + investment input)
|
|
87
|
+
- BacktestChart (real backtest equity curve for the selected strategy)
|
|
77
88
|
- StrategyValueSparkline (capital under management over time)
|
|
78
|
-
-
|
|
79
|
-
- UniswapPoolStats (24h vol/fees/TVL for ETH/USDC pool via The Graph)
|
|
89
|
+
- UniswapPoolStats (24h vol/fees/TVL for ETH/USDC pool via DexScreener)
|
|
80
90
|
- OrderBookWidget (live Binance ETH/USDT depth)
|
|
81
91
|
- TradeTape (live recent trades)
|
|
82
92
|
- ContractEventFeed (on-chain events from the deployed strategy)
|
|
@@ -88,6 +98,10 @@ contract address into page state, and pass it as ContractEventFeed's
|
|
|
88
98
|
`strategyContractAddress` prop so the feed activates the moment the contract
|
|
89
99
|
is live.
|
|
90
100
|
|
|
101
|
+
IMPORTANT: on the two-column grid, set `alignItems: "start"` so the left
|
|
102
|
+
column (BandPanel) is not vertically stretched to match the taller right
|
|
103
|
+
column. Without this, the stage cards inside BandPanel get spread apart.
|
|
104
|
+
|
|
91
105
|
DO NOT add: grid ladders, BUY/SELL order lists, "Build Grid" buttons,
|
|
92
106
|
custom contract calls, fake order books, simulated balances, profit
|
|
93
107
|
projections, "Band Protocol" labels, hardcoded contract addresses, or any
|
|
@@ -106,16 +120,18 @@ import { WagmiProvider } from "wagmi";
|
|
|
106
120
|
import { Toaster } from "sonner";
|
|
107
121
|
import type { Address } from "viem";
|
|
108
122
|
import {
|
|
123
|
+
BacktestChart,
|
|
109
124
|
BandPanel,
|
|
110
|
-
BotDecisionPanel,
|
|
111
125
|
ContractEventFeed,
|
|
112
126
|
GasBadge,
|
|
113
127
|
OrderBookWidget,
|
|
114
128
|
RegimeBadge,
|
|
129
|
+
StrategySelector,
|
|
115
130
|
StrategyValueSparkline,
|
|
116
131
|
TradeTape,
|
|
117
132
|
UniswapPoolStats,
|
|
118
|
-
createBandKitConfig
|
|
133
|
+
createBandKitConfig,
|
|
134
|
+
type StrategyKind
|
|
119
135
|
} from "bandkit";
|
|
120
136
|
|
|
121
137
|
const queryClient = new QueryClient();
|
|
@@ -125,7 +141,9 @@ const config = createBandKitConfig({
|
|
|
125
141
|
});
|
|
126
142
|
|
|
127
143
|
export function App() {
|
|
128
|
-
const [
|
|
144
|
+
const [contract, setContract] = useState<Address>();
|
|
145
|
+
const [strategy, setStrategy] = useState<StrategyKind>("range");
|
|
146
|
+
const [investment, setInvestment] = useState<number>(1000);
|
|
129
147
|
|
|
130
148
|
return (
|
|
131
149
|
<WagmiProvider config={config}>
|
|
@@ -139,17 +157,32 @@ export function App() {
|
|
|
139
157
|
<ConnectButton />
|
|
140
158
|
</div>
|
|
141
159
|
|
|
160
|
+
<StrategySelector
|
|
161
|
+
value={strategy}
|
|
162
|
+
onChange={setStrategy}
|
|
163
|
+
investmentUsd={investment}
|
|
164
|
+
onInvestmentChange={setInvestment}
|
|
165
|
+
/>
|
|
166
|
+
|
|
142
167
|
{/* TradingView ETHUSD chart embed here */}
|
|
143
168
|
|
|
144
|
-
<
|
|
145
|
-
|
|
169
|
+
<BacktestChart strategy={strategy} investmentUsd={investment} />
|
|
170
|
+
|
|
171
|
+
<div
|
|
172
|
+
style={{
|
|
173
|
+
alignItems: "start",
|
|
174
|
+
display: "grid",
|
|
175
|
+
gap: 20,
|
|
176
|
+
gridTemplateColumns: "minmax(0, 1fr) 360px"
|
|
177
|
+
}}
|
|
178
|
+
>
|
|
179
|
+
<BandPanel onStrategyContractDeployed={setContract} />
|
|
146
180
|
<div style={{ display: "grid", gap: 20 }}>
|
|
147
|
-
<StrategyValueSparkline strategyContractAddress={
|
|
148
|
-
<BotDecisionPanel />
|
|
181
|
+
<StrategyValueSparkline strategyContractAddress={contract} />
|
|
149
182
|
<UniswapPoolStats />
|
|
150
183
|
<OrderBookWidget />
|
|
151
184
|
<TradeTape />
|
|
152
|
-
<ContractEventFeed strategyContractAddress={
|
|
185
|
+
<ContractEventFeed strategyContractAddress={contract} />
|
|
153
186
|
</div>
|
|
154
187
|
</div>
|
|
155
188
|
<Toaster theme="dark" position="bottom-right" />
|
|
@@ -247,22 +280,6 @@ type RegimeBadgeProps = {
|
|
|
247
280
|
};
|
|
248
281
|
```
|
|
249
282
|
|
|
250
|
-
### `<BotDecisionPanel />`
|
|
251
|
-
|
|
252
|
-
Live decision proxy. Combines Binance order book imbalance + recent trade flow + volatility regime + Coinbase cross-venue divergence into a `BUY` / `SELL` / `WAIT` / `STAND DOWN` decision with a 0–100 confidence score and human-readable reasons.
|
|
253
|
-
|
|
254
|
-
```ts
|
|
255
|
-
type BotDecisionPanelProps = {
|
|
256
|
-
className?: string;
|
|
257
|
-
title?: string; // default: "Bot Decision (live)"
|
|
258
|
-
evaluationIntervalMs?: number; // default: 2000
|
|
259
|
-
flowWindowMs?: number; // default: 60000
|
|
260
|
-
historyLimit?: number; // default: 30
|
|
261
|
-
thresholds?: Partial<DecisionThresholds>; // override imbalance/flow/spread/divergence/depth cutoffs
|
|
262
|
-
enabled?: boolean;
|
|
263
|
-
// plus sub-options: orderBook, trades, coinbase, regime
|
|
264
|
-
};
|
|
265
|
-
```
|
|
266
283
|
|
|
267
284
|
The pure decision function `computeBotDecision()` is also exported, so you can re-use the same logic in a Node script or backtest without React.
|
|
268
285
|
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type UseBacktestOptions } from "./useBacktest.js";
|
|
2
|
+
export type BacktestChartProps = UseBacktestOptions & {
|
|
3
|
+
className?: string;
|
|
4
|
+
title?: string;
|
|
5
|
+
height?: number;
|
|
6
|
+
};
|
|
7
|
+
export declare function BacktestChart({ className, title, height, ...hookOptions }: BacktestChartProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=BacktestChart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BacktestChart.d.ts","sourceRoot":"","sources":["../src/BacktestChart.tsx"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAIxE,MAAM,MAAM,kBAAkB,GAAG,kBAAkB,GAAG;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAsCF,wBAAgB,aAAa,CAAC,EAAE,SAAS,EAAE,KAAkB,EAAE,MAAY,EAAE,GAAG,WAAW,EAAE,EAAE,kBAAkB,2CAwHhH"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
import { useBacktest } from "./useBacktest.js";
|
|
4
|
+
import { Skeleton } from "./Skeleton.js";
|
|
5
|
+
import { AnimatedNumber } from "./AnimatedNumber.js";
|
|
6
|
+
const palette = {
|
|
7
|
+
bg: "#0a0a0a",
|
|
8
|
+
surface: "#111113",
|
|
9
|
+
surfaceMuted: "#0f0f11",
|
|
10
|
+
border: "#1f1f23",
|
|
11
|
+
text: "#f5f5f7",
|
|
12
|
+
textMuted: "#9ca3af",
|
|
13
|
+
textDim: "#52525b",
|
|
14
|
+
up: "#10b981",
|
|
15
|
+
upBg: "rgba(16, 185, 129, 0.18)",
|
|
16
|
+
down: "#ef4444",
|
|
17
|
+
downBg: "rgba(239, 68, 68, 0.18)",
|
|
18
|
+
flat: "#9ca3af",
|
|
19
|
+
warning: "#fbbf24"
|
|
20
|
+
};
|
|
21
|
+
const usdFormatter = new Intl.NumberFormat("en-US", {
|
|
22
|
+
currency: "USD",
|
|
23
|
+
maximumFractionDigits: 2,
|
|
24
|
+
minimumFractionDigits: 2,
|
|
25
|
+
style: "currency"
|
|
26
|
+
});
|
|
27
|
+
const compactFormatter = new Intl.NumberFormat("en-US", {
|
|
28
|
+
currency: "USD",
|
|
29
|
+
maximumFractionDigits: 1,
|
|
30
|
+
notation: "compact",
|
|
31
|
+
style: "currency"
|
|
32
|
+
});
|
|
33
|
+
const strategyLabel = {
|
|
34
|
+
arb: "Arbitrage",
|
|
35
|
+
range: "Range (mean-reversion)",
|
|
36
|
+
grid: "Grid (buy low / sell high)"
|
|
37
|
+
};
|
|
38
|
+
export function BacktestChart({ className, title = "Backtest", height = 200, ...hookOptions }) {
|
|
39
|
+
const result = useBacktest(hookOptions);
|
|
40
|
+
const tone = result.pnlUsd > 0 ? palette.up : result.pnlUsd < 0 ? palette.down : palette.flat;
|
|
41
|
+
const toneBg = result.pnlUsd > 0 ? palette.upBg : result.pnlUsd < 0 ? palette.downBg : "transparent";
|
|
42
|
+
const path = useMemo(() => buildPath(result.equity.map((p) => p.equityUsd), result.startUsd, 100, height), [height, result.equity, result.startUsd]);
|
|
43
|
+
const areaPath = useMemo(() => buildAreaPath(result.equity.map((p) => p.equityUsd), result.startUsd, 100, height), [height, result.equity, result.startUsd]);
|
|
44
|
+
const baseLineY = result.equity.length > 0 ? scaleY(result.startUsd, result.equity.map((p) => p.equityUsd), height) : height / 2;
|
|
45
|
+
const isArbPlaceholder = result.strategy === "arb";
|
|
46
|
+
return (_jsxs("section", { className: className, style: {
|
|
47
|
+
background: palette.bg,
|
|
48
|
+
border: `1px solid ${palette.border}`,
|
|
49
|
+
borderRadius: 14,
|
|
50
|
+
boxShadow: "0 20px 60px rgba(0, 0, 0, 0.55)",
|
|
51
|
+
color: palette.text,
|
|
52
|
+
display: "grid",
|
|
53
|
+
fontFamily: "system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif",
|
|
54
|
+
gap: 14,
|
|
55
|
+
padding: 18
|
|
56
|
+
}, children: [_jsxs("header", { style: { alignItems: "center", display: "flex", flexWrap: "wrap", gap: 10, justifyContent: "space-between" }, children: [_jsxs("div", { style: { display: "grid", gap: 4 }, children: [_jsxs("h3", { style: { fontSize: 14, fontWeight: 700, letterSpacing: "0.02em", margin: 0 }, children: [title, " \u00B7 ", strategyLabel[result.strategy] ?? result.strategy] }), _jsxs("span", { style: { color: palette.textMuted, fontSize: 11 }, children: [result.bars, " bars \u00B7 ", result.interval, " \u00B7 ", result.symbol, result.klineStatus === "live" ? " · live" : result.klineStatus === "loading" ? " · loading" : ""] })] }), isArbPlaceholder ? _jsx(PlaceholderBadge, {}) : null] }), result.isLoading && result.equity.length === 0 ? (_jsx(Skeleton, { height: height, borderRadius: 10 })) : result.error ? (_jsx("div", { style: { color: palette.down, fontSize: 12 }, children: result.error })) : result.equity.length < 2 ? (_jsx("div", { style: { color: palette.textDim, fontSize: 12, padding: "20px 0", textAlign: "center" }, children: "Not enough data to backtest yet." })) : (_jsxs(_Fragment, { children: [_jsxs("div", { style: {
|
|
57
|
+
alignItems: "baseline",
|
|
58
|
+
display: "grid",
|
|
59
|
+
gap: 10,
|
|
60
|
+
gridTemplateColumns: "minmax(0, 1fr) auto auto"
|
|
61
|
+
}, children: [_jsxs("div", { style: { display: "grid", gap: 2 }, children: [_jsx("strong", { style: { fontSize: 24, fontWeight: 700, lineHeight: 1.1 }, children: _jsx(AnimatedNumber, { value: result.endUsd, format: (n) => usdFormatter.format(n) }) }), _jsxs("span", { style: { color: palette.textMuted, fontSize: 12 }, children: ["from ", _jsx("strong", { children: compactFormatter.format(result.startUsd) }), " start"] })] }), _jsx(PnlPill, { valueUsd: result.pnlUsd, valuePct: result.pnlPct, tone: tone, toneBg: toneBg }), _jsx(Stat, { label: "Trades", value: result.tradeCount.toString() })] }), _jsxs("svg", { "aria-hidden": true, preserveAspectRatio: "none", style: {
|
|
62
|
+
background: palette.surface,
|
|
63
|
+
border: `1px solid ${palette.border}`,
|
|
64
|
+
borderRadius: 10,
|
|
65
|
+
display: "block",
|
|
66
|
+
height,
|
|
67
|
+
width: "100%"
|
|
68
|
+
}, viewBox: `0 0 100 ${height}`, children: [_jsx("line", { stroke: palette.textDim, strokeDasharray: "2 3", strokeWidth: 0.4, x1: 0, x2: 100, y1: baseLineY, y2: baseLineY }), areaPath ? _jsx("path", { d: areaPath, fill: toneBg }) : null, path ? (_jsx("path", { d: path, fill: "none", stroke: tone, strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 1.2 })) : null] }), result.notes.length > 0 ? (_jsx("ul", { style: { color: palette.textDim, display: "grid", fontSize: 10, gap: 3, lineHeight: 1.4, listStyle: "none", margin: 0, padding: 0 }, children: result.notes.map((note, i) => (_jsxs("li", { children: ["\u00B7 ", note] }, i))) })) : null] }))] }));
|
|
69
|
+
}
|
|
70
|
+
function PnlPill({ valueUsd, valuePct, tone, toneBg }) {
|
|
71
|
+
return (_jsxs("div", { style: {
|
|
72
|
+
background: toneBg,
|
|
73
|
+
border: `1px solid ${tone}55`,
|
|
74
|
+
borderRadius: 999,
|
|
75
|
+
color: tone,
|
|
76
|
+
fontSize: 12,
|
|
77
|
+
fontVariantNumeric: "tabular-nums",
|
|
78
|
+
fontWeight: 700,
|
|
79
|
+
padding: "6px 12px"
|
|
80
|
+
}, children: [valueUsd >= 0 ? "+" : "", usdFormatter.format(valueUsd), " (", valuePct >= 0 ? "+" : "", valuePct.toFixed(2), "%)"] }));
|
|
81
|
+
}
|
|
82
|
+
function Stat({ label, value }) {
|
|
83
|
+
return (_jsxs("div", { style: { display: "grid", gap: 2, textAlign: "right" }, children: [_jsx("span", { style: { color: palette.textDim, fontSize: 10, letterSpacing: "0.06em", textTransform: "uppercase" }, children: label }), _jsx("strong", { style: { fontSize: 13, fontWeight: 700 }, children: value })] }));
|
|
84
|
+
}
|
|
85
|
+
function PlaceholderBadge() {
|
|
86
|
+
const style = {
|
|
87
|
+
background: "rgba(251, 191, 36, 0.12)",
|
|
88
|
+
border: `1px solid ${palette.warning}88`,
|
|
89
|
+
borderRadius: 999,
|
|
90
|
+
color: palette.warning,
|
|
91
|
+
fontSize: 10,
|
|
92
|
+
fontWeight: 700,
|
|
93
|
+
letterSpacing: "0.08em",
|
|
94
|
+
padding: "4px 10px"
|
|
95
|
+
};
|
|
96
|
+
return _jsx("span", { style: style, children: "PLACEHOLDER" });
|
|
97
|
+
}
|
|
98
|
+
function scaleY(value, all, height) {
|
|
99
|
+
const min = Math.min(...all);
|
|
100
|
+
const max = Math.max(...all);
|
|
101
|
+
const range = max - min || max || 1;
|
|
102
|
+
const norm = (value - min) / range;
|
|
103
|
+
return height - norm * (height - 8) - 4;
|
|
104
|
+
}
|
|
105
|
+
function buildPath(values, _start, width, height) {
|
|
106
|
+
if (values.length < 2)
|
|
107
|
+
return null;
|
|
108
|
+
const min = Math.min(...values);
|
|
109
|
+
const max = Math.max(...values);
|
|
110
|
+
const range = max - min || max || 1;
|
|
111
|
+
const stepX = width / (values.length - 1);
|
|
112
|
+
const pts = values.map((v, i) => {
|
|
113
|
+
const x = i * stepX;
|
|
114
|
+
const y = height - ((v - min) / range) * (height - 8) - 4;
|
|
115
|
+
return `${x.toFixed(2)},${y.toFixed(2)}`;
|
|
116
|
+
});
|
|
117
|
+
return `M${pts.join(" L")}`;
|
|
118
|
+
}
|
|
119
|
+
function buildAreaPath(values, _start, width, height) {
|
|
120
|
+
if (values.length < 2)
|
|
121
|
+
return null;
|
|
122
|
+
const line = buildPath(values, _start, width, height);
|
|
123
|
+
if (!line)
|
|
124
|
+
return null;
|
|
125
|
+
return `${line} L${width},${height} L0,${height} Z`;
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=BacktestChart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BacktestChart.js","sourceRoot":"","sources":["../src/BacktestChart.tsx"],"names":[],"mappings":"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"}
|
package/dist/BandPanel.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BandPanel.d.ts","sourceRoot":"","sources":["../src/BandPanel.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAIpC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAqBvE,MAAM,MAAM,cAAc,GAAG;IAC3B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACrE,0BAA0B,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACzD,CAAC;AAgFF,wBAAgB,SAAS,CAAC,EACxB,uBAAuB,EACvB,qBAAqB,EACrB,OAAoB,EACpB,SAAS,EACT,KAAqB,EACrB,WAAW,EACX,0BAA0B,EAC3B,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"BandPanel.d.ts","sourceRoot":"","sources":["../src/BandPanel.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAIpC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAqBvE,MAAM,MAAM,cAAc,GAAG;IAC3B,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACrE,0BAA0B,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACzD,CAAC;AAgFF,wBAAgB,SAAS,CAAC,EACxB,uBAAuB,EACvB,qBAAqB,EACrB,OAAoB,EACpB,SAAS,EACT,KAAqB,EACrB,WAAW,EACX,0BAA0B,EAC3B,EAAE,cAAc,2CA0VhB"}
|
package/dist/BandPanel.js
CHANGED
|
@@ -208,6 +208,8 @@ export function BandPanel({ strategyContractAddress, strategyWalletAddress, chai
|
|
|
208
208
|
}
|
|
209
209
|
}, [deployment.strategyContractAddress, onStrategyContractDeployed, strategyContractAddress]);
|
|
210
210
|
return (_jsxs("section", { className: className, style: {
|
|
211
|
+
alignContent: "start",
|
|
212
|
+
alignSelf: "start",
|
|
211
213
|
background: palette.bg,
|
|
212
214
|
border: `1px solid ${palette.border}`,
|
|
213
215
|
borderRadius: 14,
|
package/dist/BandPanel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BandPanel.js","sourceRoot":"","sources":["../src/BandPanel.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"BandPanel.js","sourceRoot":"","sources":["../src/BandPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { StrategyKind } from "./backtestEngines.js";
|
|
2
|
+
export type StrategySelectorProps = {
|
|
3
|
+
value: StrategyKind;
|
|
4
|
+
onChange: (value: StrategyKind) => void;
|
|
5
|
+
investmentUsd: number;
|
|
6
|
+
onInvestmentChange: (value: number) => void;
|
|
7
|
+
className?: string;
|
|
8
|
+
};
|
|
9
|
+
export declare function StrategySelector({ value, onChange, investmentUsd, onInvestmentChange, className }: StrategySelectorProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=StrategySelector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StrategySelector.d.ts","sourceRoot":"","sources":["../src/StrategySelector.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AA0BF,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,QAAQ,EACR,aAAa,EACb,kBAAkB,EAClB,SAAS,EACV,EAAE,qBAAqB,2CAsEvB"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
const palette = {
|
|
3
|
+
bg: "#0a0a0a",
|
|
4
|
+
surface: "#111113",
|
|
5
|
+
surfaceMuted: "#0f0f11",
|
|
6
|
+
border: "#1f1f23",
|
|
7
|
+
borderActive: "#2a2a30",
|
|
8
|
+
text: "#f5f5f7",
|
|
9
|
+
textMuted: "#9ca3af",
|
|
10
|
+
textDim: "#52525b"
|
|
11
|
+
};
|
|
12
|
+
const OPTIONS = [
|
|
13
|
+
{ key: "arb", label: "ARB", description: "Arbitrage (placeholder backtest)", color: "#10b981" },
|
|
14
|
+
{ key: "range", label: "Range", description: "Mean-reversion in a sideways market", color: "#3b82f6" },
|
|
15
|
+
{ key: "grid", label: "Grid", description: "Buy low / sell high across price levels", color: "#a855f7" }
|
|
16
|
+
];
|
|
17
|
+
export function StrategySelector({ value, onChange, investmentUsd, onInvestmentChange, className }) {
|
|
18
|
+
return (_jsx("section", { className: className, style: {
|
|
19
|
+
background: palette.bg,
|
|
20
|
+
border: `1px solid ${palette.border}`,
|
|
21
|
+
borderRadius: 14,
|
|
22
|
+
boxShadow: "0 20px 60px rgba(0, 0, 0, 0.55)",
|
|
23
|
+
color: palette.text,
|
|
24
|
+
display: "grid",
|
|
25
|
+
fontFamily: "system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif",
|
|
26
|
+
gap: 14,
|
|
27
|
+
padding: 16
|
|
28
|
+
}, children: _jsxs("div", { style: {
|
|
29
|
+
alignItems: "center",
|
|
30
|
+
display: "grid",
|
|
31
|
+
gap: 12,
|
|
32
|
+
gridTemplateColumns: "minmax(0, 1fr) auto"
|
|
33
|
+
}, children: [_jsx("div", { role: "tablist", style: { display: "grid", gap: 6, gridTemplateColumns: "repeat(3, 1fr)" }, children: OPTIONS.map((opt) => {
|
|
34
|
+
const active = opt.key === value;
|
|
35
|
+
return (_jsxs("button", { "aria-pressed": active, onClick: () => onChange(opt.key), role: "tab", style: tabStyle(active, opt.color), type: "button", children: [_jsx("strong", { style: { fontSize: 14, fontWeight: 700, letterSpacing: "0.04em" }, children: opt.label }), _jsx("span", { style: { color: palette.textMuted, fontSize: 11, fontWeight: 500 }, children: opt.description })] }, opt.key));
|
|
36
|
+
}) }), _jsxs("label", { style: { display: "grid", gap: 4, fontSize: 11, fontWeight: 600, letterSpacing: "0.04em" }, children: [_jsx("span", { style: { color: palette.textDim, textTransform: "uppercase" }, children: "Investment (USD)" }), _jsx("input", { inputMode: "decimal", min: 0, onChange: (e) => onInvestmentChange(Math.max(0, Number(e.target.value) || 0)), step: "any", style: {
|
|
37
|
+
background: palette.surfaceMuted,
|
|
38
|
+
border: `1px solid ${palette.border}`,
|
|
39
|
+
borderRadius: 8,
|
|
40
|
+
color: palette.text,
|
|
41
|
+
font: "inherit",
|
|
42
|
+
fontSize: 14,
|
|
43
|
+
fontVariantNumeric: "tabular-nums",
|
|
44
|
+
minHeight: 40,
|
|
45
|
+
padding: "0 12px",
|
|
46
|
+
textAlign: "right",
|
|
47
|
+
width: 140
|
|
48
|
+
}, type: "number", value: investmentUsd })] })] }) }));
|
|
49
|
+
}
|
|
50
|
+
function tabStyle(active, color) {
|
|
51
|
+
return {
|
|
52
|
+
alignItems: "flex-start",
|
|
53
|
+
background: active ? `${color}1a` : palette.surface,
|
|
54
|
+
border: active ? `1px solid ${color}` : `1px solid ${palette.border}`,
|
|
55
|
+
borderRadius: 10,
|
|
56
|
+
color: active ? color : palette.text,
|
|
57
|
+
cursor: "pointer",
|
|
58
|
+
display: "grid",
|
|
59
|
+
fontFamily: "inherit",
|
|
60
|
+
gap: 4,
|
|
61
|
+
minHeight: 60,
|
|
62
|
+
padding: "10px 14px",
|
|
63
|
+
textAlign: "left",
|
|
64
|
+
transition: "background 200ms ease, border-color 200ms ease, color 200ms ease"
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=StrategySelector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StrategySelector.js","sourceRoot":"","sources":["../src/StrategySelector.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { Kline } from "./useBinanceKlines.js";
|
|
2
|
+
export type StrategyKind = "arb" | "range" | "grid";
|
|
3
|
+
export type EquityPoint = {
|
|
4
|
+
at: number;
|
|
5
|
+
equityUsd: number;
|
|
6
|
+
};
|
|
7
|
+
export type Trade = {
|
|
8
|
+
at: number;
|
|
9
|
+
side: "buy" | "sell";
|
|
10
|
+
price: number;
|
|
11
|
+
notionalUsd: number;
|
|
12
|
+
pnlUsd: number;
|
|
13
|
+
};
|
|
14
|
+
export type BacktestResult = {
|
|
15
|
+
strategy: StrategyKind;
|
|
16
|
+
startUsd: number;
|
|
17
|
+
endUsd: number;
|
|
18
|
+
pnlUsd: number;
|
|
19
|
+
pnlPct: number;
|
|
20
|
+
tradeCount: number;
|
|
21
|
+
winRate: number | null;
|
|
22
|
+
equity: EquityPoint[];
|
|
23
|
+
trades: Trade[];
|
|
24
|
+
notes: string[];
|
|
25
|
+
};
|
|
26
|
+
export type BacktestCosts = {
|
|
27
|
+
/** Round-trip cost in basis points (gas + pool fee + slippage). */
|
|
28
|
+
roundTripBps: number;
|
|
29
|
+
/** Fixed gas cost per leg in USD (for tiny trades, gas dominates). */
|
|
30
|
+
gasPerLegUsd: number;
|
|
31
|
+
};
|
|
32
|
+
export type BacktestParams = {
|
|
33
|
+
klines: Kline[];
|
|
34
|
+
strategy: StrategyKind;
|
|
35
|
+
investmentUsd: number;
|
|
36
|
+
costs: BacktestCosts;
|
|
37
|
+
/** Optional grid config — only used for `grid` strategy. */
|
|
38
|
+
grid?: GridConfig;
|
|
39
|
+
};
|
|
40
|
+
export type GridConfig = {
|
|
41
|
+
lowerPrice?: number;
|
|
42
|
+
upperPrice?: number;
|
|
43
|
+
levels?: number;
|
|
44
|
+
};
|
|
45
|
+
export declare const DEFAULT_COSTS_MAINNET: BacktestCosts;
|
|
46
|
+
export declare const DEFAULT_COSTS_L2: BacktestCosts;
|
|
47
|
+
export declare function backtestRange(params: BacktestParams): BacktestResult;
|
|
48
|
+
export declare function backtestGrid(params: BacktestParams): BacktestResult;
|
|
49
|
+
export declare function backtestArb(params: BacktestParams): BacktestResult;
|
|
50
|
+
export declare function runBacktest(params: BacktestParams): BacktestResult;
|
|
51
|
+
//# sourceMappingURL=backtestEngines.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backtestEngines.d.ts","sourceRoot":"","sources":["../src/backtestEngines.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAEnD,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;AAEpD,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,YAAY,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,mEAAmE;IACnE,YAAY,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,QAAQ,EAAE,YAAY,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,aAAa,CAAC;IACrB,4DAA4D;IAC5D,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAGF,eAAO,MAAM,qBAAqB,EAAE,aAGnC,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,aAG9B,CAAC;AAKF,wBAAgB,aAAa,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAmEpE;AAKD,wBAAgB,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CA2GnE;AAKD,wBAAgB,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CA6BlE;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CASlE"}
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
// Default cost model: mainnet ETH/USDC 0.05% pool, ~$2 gas/leg
|
|
2
|
+
export const DEFAULT_COSTS_MAINNET = {
|
|
3
|
+
roundTripBps: 30, // 10 bps pool fee + ~20 bps slippage estimate
|
|
4
|
+
gasPerLegUsd: 2
|
|
5
|
+
};
|
|
6
|
+
export const DEFAULT_COSTS_L2 = {
|
|
7
|
+
roundTripBps: 12,
|
|
8
|
+
gasPerLegUsd: 0.05
|
|
9
|
+
};
|
|
10
|
+
// -------------------------------------------------------------------------
|
|
11
|
+
// Range strategy: rolling mean-reversion (EMA + stddev bands)
|
|
12
|
+
// -------------------------------------------------------------------------
|
|
13
|
+
export function backtestRange(params) {
|
|
14
|
+
const { klines, investmentUsd, costs } = params;
|
|
15
|
+
const window = 30;
|
|
16
|
+
const entryK = 1.5;
|
|
17
|
+
const exitK = 0.25;
|
|
18
|
+
let cashUsd = investmentUsd;
|
|
19
|
+
let positionEth = 0;
|
|
20
|
+
let lastBuyPriceUsd = 0;
|
|
21
|
+
const equity = [];
|
|
22
|
+
const trades = [];
|
|
23
|
+
if (klines.length < window + 1) {
|
|
24
|
+
return emptyResult("range", investmentUsd, ["Not enough kline history for range backtest."]);
|
|
25
|
+
}
|
|
26
|
+
for (let i = window; i < klines.length; i++) {
|
|
27
|
+
const slice = klines.slice(i - window, i);
|
|
28
|
+
const prices = slice.map((k) => k.close);
|
|
29
|
+
const mean = prices.reduce((s, v) => s + v, 0) / prices.length;
|
|
30
|
+
const variance = prices.reduce((s, v) => s + (v - mean) ** 2, 0) / prices.length;
|
|
31
|
+
const stddev = Math.sqrt(variance);
|
|
32
|
+
const bar = klines[i];
|
|
33
|
+
const price = bar.close;
|
|
34
|
+
const z = stddev > 0 ? (price - mean) / stddev : 0;
|
|
35
|
+
// Buy when price is well below mean
|
|
36
|
+
if (positionEth === 0 && z <= -entryK && cashUsd > costs.gasPerLegUsd * 2) {
|
|
37
|
+
const tradeUsd = Math.min(cashUsd * 0.95, investmentUsd);
|
|
38
|
+
const buyCost = costs.gasPerLegUsd + tradeUsd * (costs.roundTripBps / 2 / 10_000);
|
|
39
|
+
const effectiveUsd = Math.max(0, tradeUsd - buyCost);
|
|
40
|
+
const ethBought = effectiveUsd / price;
|
|
41
|
+
if (ethBought > 0) {
|
|
42
|
+
positionEth = ethBought;
|
|
43
|
+
cashUsd -= tradeUsd;
|
|
44
|
+
lastBuyPriceUsd = price;
|
|
45
|
+
trades.push({ at: bar.closeTime, side: "buy", price, notionalUsd: tradeUsd, pnlUsd: -buyCost });
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
// Sell when price reverts above mean (or stop-out at -3σ to limit damage)
|
|
49
|
+
else if (positionEth > 0 && (z >= exitK || z <= -3)) {
|
|
50
|
+
const grossUsd = positionEth * price;
|
|
51
|
+
const sellCost = costs.gasPerLegUsd + grossUsd * (costs.roundTripBps / 2 / 10_000);
|
|
52
|
+
const netUsd = Math.max(0, grossUsd - sellCost);
|
|
53
|
+
const cycleCostBasisUsd = lastBuyPriceUsd * positionEth;
|
|
54
|
+
const cyclePnl = netUsd - cycleCostBasisUsd;
|
|
55
|
+
cashUsd += netUsd;
|
|
56
|
+
trades.push({ at: bar.closeTime, side: "sell", price, notionalUsd: grossUsd, pnlUsd: cyclePnl });
|
|
57
|
+
positionEth = 0;
|
|
58
|
+
lastBuyPriceUsd = 0;
|
|
59
|
+
}
|
|
60
|
+
const equityNow = cashUsd + positionEth * price;
|
|
61
|
+
equity.push({ at: bar.closeTime, equityUsd: equityNow });
|
|
62
|
+
}
|
|
63
|
+
// Mark-to-market any open position
|
|
64
|
+
if (positionEth > 0 && klines.length > 0) {
|
|
65
|
+
cashUsd += positionEth * klines[klines.length - 1].close;
|
|
66
|
+
positionEth = 0;
|
|
67
|
+
}
|
|
68
|
+
return finalise("range", investmentUsd, cashUsd, equity, trades, [
|
|
69
|
+
"Range strategy uses rolling mean ± stddev (z-score) to enter/exit positions.",
|
|
70
|
+
"Mainnet costs assumed: ~30 bps round-trip + $2 gas/leg."
|
|
71
|
+
]);
|
|
72
|
+
}
|
|
73
|
+
// -------------------------------------------------------------------------
|
|
74
|
+
// Grid strategy: level-fill simulation
|
|
75
|
+
// -------------------------------------------------------------------------
|
|
76
|
+
export function backtestGrid(params) {
|
|
77
|
+
const { klines, investmentUsd, costs } = params;
|
|
78
|
+
if (klines.length < 2) {
|
|
79
|
+
return emptyResult("grid", investmentUsd, ["Not enough kline history for grid backtest."]);
|
|
80
|
+
}
|
|
81
|
+
const firstPrice = klines[0].close;
|
|
82
|
+
const lastPrice = klines[klines.length - 1].close;
|
|
83
|
+
const minPrice = Math.min(...klines.map((k) => k.low));
|
|
84
|
+
const maxPrice = Math.max(...klines.map((k) => k.high));
|
|
85
|
+
const lowerPrice = params.grid?.lowerPrice ?? Math.max(firstPrice * 0.9, minPrice);
|
|
86
|
+
const upperPrice = params.grid?.upperPrice ?? Math.min(firstPrice * 1.1, maxPrice);
|
|
87
|
+
const levels = Math.max(3, params.grid?.levels ?? 10);
|
|
88
|
+
const spacing = (upperPrice - lowerPrice) / (levels - 1);
|
|
89
|
+
const usdPerLevel = (investmentUsd * 0.5) / levels;
|
|
90
|
+
// Initial state: half cash, half ETH allocated, plus levels above and below
|
|
91
|
+
let cashUsd = investmentUsd / 2;
|
|
92
|
+
let positionEth = investmentUsd / 2 / firstPrice;
|
|
93
|
+
const grid = [];
|
|
94
|
+
for (let i = 0; i < levels; i++) {
|
|
95
|
+
const price = lowerPrice + spacing * i;
|
|
96
|
+
grid.push({
|
|
97
|
+
price,
|
|
98
|
+
side: price < firstPrice ? "buy" : "sell",
|
|
99
|
+
open: true
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
const equity = [];
|
|
103
|
+
const trades = [];
|
|
104
|
+
for (let i = 1; i < klines.length; i++) {
|
|
105
|
+
const bar = klines[i];
|
|
106
|
+
const prevClose = klines[i - 1].close;
|
|
107
|
+
// For each open level, check if this bar's range crossed it
|
|
108
|
+
for (const level of grid) {
|
|
109
|
+
if (!level.open)
|
|
110
|
+
continue;
|
|
111
|
+
const crossedDown = prevClose > level.price && bar.low <= level.price;
|
|
112
|
+
const crossedUp = prevClose < level.price && bar.high >= level.price;
|
|
113
|
+
if (level.side === "buy" && crossedDown && cashUsd >= usdPerLevel) {
|
|
114
|
+
const fee = costs.gasPerLegUsd + usdPerLevel * (costs.roundTripBps / 2 / 10_000);
|
|
115
|
+
const effectiveUsd = Math.max(0, usdPerLevel - fee);
|
|
116
|
+
const ethBought = effectiveUsd / level.price;
|
|
117
|
+
cashUsd -= usdPerLevel;
|
|
118
|
+
positionEth += ethBought;
|
|
119
|
+
trades.push({
|
|
120
|
+
at: bar.closeTime,
|
|
121
|
+
side: "buy",
|
|
122
|
+
price: level.price,
|
|
123
|
+
notionalUsd: usdPerLevel,
|
|
124
|
+
pnlUsd: -fee
|
|
125
|
+
});
|
|
126
|
+
level.open = false;
|
|
127
|
+
// Arm the next level up as a sell
|
|
128
|
+
const nextUp = grid.find((l) => l.price > level.price && !l.open && l.side === "sell");
|
|
129
|
+
if (nextUp)
|
|
130
|
+
nextUp.open = true;
|
|
131
|
+
else {
|
|
132
|
+
const candidate = grid.find((l) => l.price > level.price && l.side === "sell");
|
|
133
|
+
if (candidate)
|
|
134
|
+
candidate.open = true;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
else if (level.side === "sell" && crossedUp && positionEth * level.price >= usdPerLevel) {
|
|
138
|
+
const ethToSell = usdPerLevel / level.price;
|
|
139
|
+
const grossUsd = ethToSell * level.price;
|
|
140
|
+
const fee = costs.gasPerLegUsd + grossUsd * (costs.roundTripBps / 2 / 10_000);
|
|
141
|
+
const netUsd = Math.max(0, grossUsd - fee);
|
|
142
|
+
positionEth -= ethToSell;
|
|
143
|
+
cashUsd += netUsd;
|
|
144
|
+
// PnL on a grid cycle ≈ spacing × ethToSell − 2 fees (one-leg fee already counted on buy)
|
|
145
|
+
const cyclePnl = spacing * ethToSell - fee;
|
|
146
|
+
trades.push({
|
|
147
|
+
at: bar.closeTime,
|
|
148
|
+
side: "sell",
|
|
149
|
+
price: level.price,
|
|
150
|
+
notionalUsd: grossUsd,
|
|
151
|
+
pnlUsd: cyclePnl
|
|
152
|
+
});
|
|
153
|
+
level.open = false;
|
|
154
|
+
// Arm the next level down as a buy
|
|
155
|
+
const nextDown = [...grid].reverse().find((l) => l.price < level.price && l.side === "buy");
|
|
156
|
+
if (nextDown)
|
|
157
|
+
nextDown.open = true;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
const equityNow = cashUsd + positionEth * bar.close;
|
|
161
|
+
equity.push({ at: bar.closeTime, equityUsd: equityNow });
|
|
162
|
+
}
|
|
163
|
+
// Mark to market
|
|
164
|
+
cashUsd += positionEth * lastPrice;
|
|
165
|
+
positionEth = 0;
|
|
166
|
+
return finalise("grid", investmentUsd, cashUsd, equity, trades, [
|
|
167
|
+
`Grid: ${levels} levels from $${lowerPrice.toFixed(0)} to $${upperPrice.toFixed(0)} (spacing ~$${spacing.toFixed(2)}).`,
|
|
168
|
+
`Starts 50/50 ETH/cash, $${usdPerLevel.toFixed(0)} per level.`,
|
|
169
|
+
"Each fill incurs realistic gas + pool fee + slippage."
|
|
170
|
+
]);
|
|
171
|
+
}
|
|
172
|
+
// -------------------------------------------------------------------------
|
|
173
|
+
// ARB strategy: placeholder positive curve (real arb strategy TBD)
|
|
174
|
+
// -------------------------------------------------------------------------
|
|
175
|
+
export function backtestArb(params) {
|
|
176
|
+
const { klines, investmentUsd } = params;
|
|
177
|
+
if (klines.length < 2) {
|
|
178
|
+
return emptyResult("arb", investmentUsd, ["Not enough klines for placeholder."]);
|
|
179
|
+
}
|
|
180
|
+
// Placeholder: smooth-ish upward equity at ~0.3% per day with mild noise.
|
|
181
|
+
// Real arb backtest is pending — see "notes" array.
|
|
182
|
+
const equity = [];
|
|
183
|
+
const totalMinutes = (klines[klines.length - 1].closeTime - klines[0].closeTime) / 60_000;
|
|
184
|
+
const days = totalMinutes / 1440;
|
|
185
|
+
const totalDriftPct = days * 0.3; // 0.3%/day
|
|
186
|
+
let seed = 1;
|
|
187
|
+
function pseudoRandom() {
|
|
188
|
+
seed = (seed * 9301 + 49297) % 233280;
|
|
189
|
+
return seed / 233280;
|
|
190
|
+
}
|
|
191
|
+
for (let i = 0; i < klines.length; i++) {
|
|
192
|
+
const t = i / (klines.length - 1);
|
|
193
|
+
const drift = (totalDriftPct / 100) * t;
|
|
194
|
+
const noise = (pseudoRandom() - 0.5) * 0.002 * Math.sqrt(t);
|
|
195
|
+
const equityNow = investmentUsd * (1 + drift + noise);
|
|
196
|
+
equity.push({ at: klines[i].closeTime, equityUsd: equityNow });
|
|
197
|
+
}
|
|
198
|
+
const trades = [];
|
|
199
|
+
return finalise("arb", investmentUsd, equity[equity.length - 1].equityUsd, equity, trades, [
|
|
200
|
+
"ARB curve is a placeholder until a real arbitrage strategy is selected.",
|
|
201
|
+
"Replace `backtestArb()` with the chosen strategy when ready."
|
|
202
|
+
]);
|
|
203
|
+
}
|
|
204
|
+
export function runBacktest(params) {
|
|
205
|
+
switch (params.strategy) {
|
|
206
|
+
case "range":
|
|
207
|
+
return backtestRange(params);
|
|
208
|
+
case "grid":
|
|
209
|
+
return backtestGrid(params);
|
|
210
|
+
case "arb":
|
|
211
|
+
return backtestArb(params);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
function emptyResult(strategy, startUsd, notes) {
|
|
215
|
+
return {
|
|
216
|
+
strategy,
|
|
217
|
+
startUsd,
|
|
218
|
+
endUsd: startUsd,
|
|
219
|
+
pnlUsd: 0,
|
|
220
|
+
pnlPct: 0,
|
|
221
|
+
tradeCount: 0,
|
|
222
|
+
winRate: null,
|
|
223
|
+
equity: [],
|
|
224
|
+
trades: [],
|
|
225
|
+
notes
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
function finalise(strategy, startUsd, endUsd, equity, trades, notes) {
|
|
229
|
+
const wins = trades.filter((t) => t.pnlUsd > 0).length;
|
|
230
|
+
const realised = trades.filter((t) => t.side === "sell").length;
|
|
231
|
+
return {
|
|
232
|
+
strategy,
|
|
233
|
+
startUsd,
|
|
234
|
+
endUsd,
|
|
235
|
+
pnlUsd: endUsd - startUsd,
|
|
236
|
+
pnlPct: startUsd > 0 ? ((endUsd - startUsd) / startUsd) * 100 : 0,
|
|
237
|
+
tradeCount: trades.length,
|
|
238
|
+
winRate: realised > 0 ? wins / realised : null,
|
|
239
|
+
equity,
|
|
240
|
+
trades,
|
|
241
|
+
notes
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=backtestEngines.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backtestEngines.js","sourceRoot":"","sources":["../src/backtestEngines.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -24,7 +24,11 @@ export { GasBadge, type GasBadgeProps } from "./GasBadge.js";
|
|
|
24
24
|
export { useCoinbaseTicker, type CoinbaseTickerStatus, type CoinbaseTickerMessage, type UseCoinbaseTickerOptions, type UseCoinbaseTickerResult } from "./useCoinbaseTicker.js";
|
|
25
25
|
export { useBotDecision, type BotDecision, type DecisionResult, type DecisionThresholds, type DecisionHistoryEntry, type UseBotDecisionOptions, type UseBotDecisionResult } from "./useBotDecision.js";
|
|
26
26
|
export { computeBotDecision, computeBookImbalance, computeBookDepth, computeTradeImbalance, DEFAULT_DECISION_THRESHOLDS, type DecisionInputs, type DecisionReason, type BookLevel } from "./decisionEngine.js";
|
|
27
|
-
export {
|
|
27
|
+
export { StrategySelector, type StrategySelectorProps } from "./StrategySelector.js";
|
|
28
|
+
export { BacktestChart, type BacktestChartProps } from "./BacktestChart.js";
|
|
29
|
+
export { useBacktest, type UseBacktestOptions, type UseBacktestResult } from "./useBacktest.js";
|
|
30
|
+
export { runBacktest, backtestRange, backtestGrid, backtestArb, DEFAULT_COSTS_MAINNET, DEFAULT_COSTS_L2, type StrategyKind, type BacktestResult, type BacktestCosts, type BacktestParams, type GridConfig, type EquityPoint, type Trade as BacktestTrade } from "./backtestEngines.js";
|
|
31
|
+
export { useBinanceKlines, type Kline, type KlineInterval, type UseBinanceKlinesOptions, type UseBinanceKlinesResult } from "./useBinanceKlines.js";
|
|
28
32
|
export { useStrategyValueHistory, type ValueSample, type UseStrategyValueHistoryOptions, type UseStrategyValueHistoryResult } from "./useStrategyValueHistory.js";
|
|
29
33
|
export { StrategyValueSparkline, type StrategyValueSparklineProps } from "./StrategyValueSparkline.js";
|
|
30
34
|
export { Skeleton, SkeletonRow, type SkeletonProps } from "./Skeleton.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAE,KAAK,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EACL,iCAAiC,EACjC,6BAA6B,EAC7B,KAAK,oCAAoC,EACzC,KAAK,mCAAmC,EACzC,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,KAAK,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACvF,OAAO,EACL,8BAA8B,EAC9B,yBAAyB,EACzB,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC/B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,iBAAiB,EACjB,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,EACzB,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC7B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,mBAAmB,EACnB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,EAC/B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,KAAK,0BAA0B,EAAE,KAAK,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAGhI,OAAO,EACL,mBAAmB,EACnB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,EAC/B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAElF,OAAO,EACL,gBAAgB,EAChB,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAC5B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhE,OAAO,EACL,yBAAyB,EACzB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,gCAAgC,EACrC,KAAK,+BAA+B,EACrC,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,KAAK,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAGxF,OAAO,EACL,mBAAmB,EACnB,KAAK,MAAM,EACX,KAAK,0BAA0B,EAC/B,KAAK,yBAAyB,EAC/B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEtE,OAAO,EACL,WAAW,EACX,KAAK,OAAO,EACZ,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAG7D,OAAO,EACL,iBAAiB,EACjB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,uBAAuB,EAC7B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,cAAc,EACd,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,EACrB,2BAA2B,EAC3B,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,SAAS,EACf,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -28,7 +28,12 @@ export { GasBadge } from "./GasBadge.js";
|
|
|
28
28
|
export { useCoinbaseTicker } from "./useCoinbaseTicker.js";
|
|
29
29
|
export { useBotDecision } from "./useBotDecision.js";
|
|
30
30
|
export { computeBotDecision, computeBookImbalance, computeBookDepth, computeTradeImbalance, DEFAULT_DECISION_THRESHOLDS } from "./decisionEngine.js";
|
|
31
|
-
|
|
31
|
+
// --- Strategy selector + backtest chart ---------------------------------
|
|
32
|
+
export { StrategySelector } from "./StrategySelector.js";
|
|
33
|
+
export { BacktestChart } from "./BacktestChart.js";
|
|
34
|
+
export { useBacktest } from "./useBacktest.js";
|
|
35
|
+
export { runBacktest, backtestRange, backtestGrid, backtestArb, DEFAULT_COSTS_MAINNET, DEFAULT_COSTS_L2 } from "./backtestEngines.js";
|
|
36
|
+
export { useBinanceKlines } from "./useBinanceKlines.js";
|
|
32
37
|
// --- Strategy value tracking --------------------------------------------
|
|
33
38
|
export { useStrategyValueHistory } from "./useStrategyValueHistory.js";
|
|
34
39
|
export { StrategyValueSparkline } from "./StrategyValueSparkline.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,SAAS,EAAuB,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAA+B,MAAM,wBAAwB,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAmC,MAAM,iBAAiB,CAAC;AACvF,OAAO,EACL,iCAAiC,EACjC,6BAA6B,EAG9B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAgC,MAAM,uBAAuB,CAAC;AACvF,OAAO,EACL,8BAA8B,EAC9B,yBAAyB,EAI1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,iBAAiB,EAKlB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,mBAAmB,EAIpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAmE,MAAM,0BAA0B,CAAC;AAEhI,4EAA4E;AAC5E,OAAO,EACL,mBAAmB,EAMpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAA6B,MAAM,sBAAsB,CAAC;AAElF,OAAO,EACL,gBAAgB,EAMjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAuB,MAAM,gBAAgB,CAAC;AAEhE,4EAA4E;AAC5E,OAAO,EACL,yBAAyB,EAK1B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAA+B,MAAM,wBAAwB,CAAC;AAExF,4EAA4E;AAC5E,OAAO,EACL,mBAAmB,EAIpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,WAAW,EAAyB,MAAM,kBAAkB,CAAC;AAEtE,OAAO,EACL,WAAW,EAIZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAsB,MAAM,eAAe,CAAC;AAE7D,2EAA2E;AAC3E,OAAO,EACL,iBAAiB,EAKlB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,cAAc,EAOf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,qBAAqB,EACrB,2BAA2B,EAI5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAA8B,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type KlineInterval } from "./useBinanceKlines.js";
|
|
2
|
+
import { type BacktestCosts, type BacktestResult, type GridConfig, type StrategyKind } from "./backtestEngines.js";
|
|
3
|
+
export type UseBacktestOptions = {
|
|
4
|
+
strategy: StrategyKind;
|
|
5
|
+
investmentUsd: number;
|
|
6
|
+
symbol?: string;
|
|
7
|
+
interval?: KlineInterval;
|
|
8
|
+
bars?: number;
|
|
9
|
+
costs?: BacktestCosts;
|
|
10
|
+
grid?: GridConfig;
|
|
11
|
+
enabled?: boolean;
|
|
12
|
+
};
|
|
13
|
+
export type UseBacktestResult = BacktestResult & {
|
|
14
|
+
isLoading: boolean;
|
|
15
|
+
error?: string;
|
|
16
|
+
bars: number;
|
|
17
|
+
symbol: string;
|
|
18
|
+
interval: KlineInterval;
|
|
19
|
+
klineStatus: "idle" | "loading" | "live" | "error";
|
|
20
|
+
};
|
|
21
|
+
export declare function useBacktest(options: UseBacktestOptions): UseBacktestResult;
|
|
22
|
+
//# sourceMappingURL=useBacktest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBacktest.d.ts","sourceRoot":"","sources":["../src/useBacktest.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,KAAK,aAAa,EAAgC,MAAM,uBAAuB,CAAC;AAC3G,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,UAAU,EACf,KAAK,YAAY,EAClB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,YAAY,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,cAAc,GAAG;IAC/C,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,aAAa,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;CACpD,CAAC;AAEF,wBAAgB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,iBAAiB,CA4B1E"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { useMemo } from "react";
|
|
2
|
+
import { useBinanceKlines } from "./useBinanceKlines.js";
|
|
3
|
+
import { DEFAULT_COSTS_MAINNET, runBacktest } from "./backtestEngines.js";
|
|
4
|
+
export function useBacktest(options) {
|
|
5
|
+
const symbol = options.symbol ?? "ETHUSDT";
|
|
6
|
+
const interval = options.interval ?? "5m";
|
|
7
|
+
const bars = options.bars ?? 2016;
|
|
8
|
+
const enabled = options.enabled ?? true;
|
|
9
|
+
const costs = options.costs ?? DEFAULT_COSTS_MAINNET;
|
|
10
|
+
const klineOptions = { symbol, interval, bars, enabled };
|
|
11
|
+
const { klines, status, error } = useBinanceKlines(klineOptions);
|
|
12
|
+
return useMemo(() => {
|
|
13
|
+
const result = runBacktest({
|
|
14
|
+
klines,
|
|
15
|
+
strategy: options.strategy,
|
|
16
|
+
investmentUsd: options.investmentUsd,
|
|
17
|
+
costs,
|
|
18
|
+
grid: options.grid
|
|
19
|
+
});
|
|
20
|
+
return {
|
|
21
|
+
...result,
|
|
22
|
+
isLoading: status === "loading" && klines.length === 0,
|
|
23
|
+
error,
|
|
24
|
+
bars,
|
|
25
|
+
symbol,
|
|
26
|
+
interval,
|
|
27
|
+
klineStatus: status
|
|
28
|
+
};
|
|
29
|
+
}, [bars, costs, error, interval, klines, options.grid, options.investmentUsd, options.strategy, status, symbol]);
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=useBacktest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBacktest.js","sourceRoot":"","sources":["../src/useBacktest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAoD,MAAM,uBAAuB,CAAC;AAC3G,OAAO,EACL,qBAAqB,EACrB,WAAW,EAKZ,MAAM,sBAAsB,CAAC;AAsB9B,MAAM,UAAU,WAAW,CAAC,OAA2B;IACrD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,SAAS,CAAC;IAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC;IAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC;IAClC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;IACxC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,qBAAqB,CAAC;IAErD,MAAM,YAAY,GAA4B,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAClF,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAEjE,OAAO,OAAO,CAAoB,GAAG,EAAE;QACrC,MAAM,MAAM,GAAG,WAAW,CAAC;YACzB,MAAM;YACN,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,KAAK;YACL,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAC;QACH,OAAO;YACL,GAAG,MAAM;YACT,SAAS,EAAE,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YACtD,KAAK;YACL,IAAI;YACJ,MAAM;YACN,QAAQ;YACR,WAAW,EAAE,MAAM;SACpB,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AACpH,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export type Kline = {
|
|
2
|
+
openTime: number;
|
|
3
|
+
open: number;
|
|
4
|
+
high: number;
|
|
5
|
+
low: number;
|
|
6
|
+
close: number;
|
|
7
|
+
volume: number;
|
|
8
|
+
closeTime: number;
|
|
9
|
+
};
|
|
10
|
+
export type KlineInterval = "1m" | "3m" | "5m" | "15m" | "30m" | "1h" | "2h" | "4h" | "6h" | "8h" | "12h" | "1d";
|
|
11
|
+
export type UseBinanceKlinesOptions = {
|
|
12
|
+
symbol?: string;
|
|
13
|
+
interval?: KlineInterval;
|
|
14
|
+
bars?: number;
|
|
15
|
+
enabled?: boolean;
|
|
16
|
+
refetchIntervalMs?: number;
|
|
17
|
+
};
|
|
18
|
+
export type UseBinanceKlinesResult = {
|
|
19
|
+
klines: Kline[];
|
|
20
|
+
status: "idle" | "loading" | "live" | "error";
|
|
21
|
+
error?: string;
|
|
22
|
+
lastFetchedAt?: Date;
|
|
23
|
+
};
|
|
24
|
+
export declare function useBinanceKlines(options?: UseBinanceKlinesOptions): UseBinanceKlinesResult;
|
|
25
|
+
//# sourceMappingURL=useBinanceKlines.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBinanceKlines.d.ts","sourceRoot":"","sources":["../src/useBinanceKlines.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,aAAa,GACrB,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,KAAK,GACL,KAAK,GACL,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,IAAI,GACJ,KAAK,GACL,IAAI,CAAC;AAET,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,IAAI,CAAC;CACtB,CAAC;AAmCF,wBAAgB,gBAAgB,CAAC,OAAO,GAAE,uBAA4B,GAAG,sBAAsB,CAsD9F"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { useEffect, useMemo, useState } from "react";
|
|
2
|
+
const REST_URL = "https://api.binance.com/api/v3/klines";
|
|
3
|
+
const MAX_PER_REQUEST = 1000;
|
|
4
|
+
function parseRow(row) {
|
|
5
|
+
return {
|
|
6
|
+
openTime: Number(row[0]),
|
|
7
|
+
open: Number(row[1]),
|
|
8
|
+
high: Number(row[2]),
|
|
9
|
+
low: Number(row[3]),
|
|
10
|
+
close: Number(row[4]),
|
|
11
|
+
volume: Number(row[5]),
|
|
12
|
+
closeTime: Number(row[6])
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
async function fetchPage(symbol, interval, limit, endTime) {
|
|
16
|
+
const params = new URLSearchParams({
|
|
17
|
+
symbol: symbol.toUpperCase(),
|
|
18
|
+
interval,
|
|
19
|
+
limit: String(Math.min(limit, MAX_PER_REQUEST))
|
|
20
|
+
});
|
|
21
|
+
if (endTime)
|
|
22
|
+
params.set("endTime", String(endTime));
|
|
23
|
+
const res = await fetch(`${REST_URL}?${params.toString()}`, { headers: { accept: "application/json" } });
|
|
24
|
+
if (!res.ok)
|
|
25
|
+
throw new Error(`Binance klines ${res.status}`);
|
|
26
|
+
const data = (await res.json());
|
|
27
|
+
return data.map(parseRow);
|
|
28
|
+
}
|
|
29
|
+
export function useBinanceKlines(options = {}) {
|
|
30
|
+
const enabled = options.enabled ?? true;
|
|
31
|
+
const symbol = options.symbol ?? "ETHUSDT";
|
|
32
|
+
const interval = options.interval ?? "5m";
|
|
33
|
+
const bars = options.bars ?? 2016; // 7 days at 5m
|
|
34
|
+
const refetchIntervalMs = options.refetchIntervalMs ?? 60_000;
|
|
35
|
+
const [klines, setKlines] = useState([]);
|
|
36
|
+
const [status, setStatus] = useState("idle");
|
|
37
|
+
const [error, setError] = useState();
|
|
38
|
+
const [lastFetchedAt, setLastFetchedAt] = useState();
|
|
39
|
+
useEffect(() => {
|
|
40
|
+
if (!enabled) {
|
|
41
|
+
setStatus("idle");
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
let cancelled = false;
|
|
45
|
+
async function fetchAll() {
|
|
46
|
+
setStatus((prev) => (prev === "live" ? "live" : "loading"));
|
|
47
|
+
try {
|
|
48
|
+
const all = [];
|
|
49
|
+
let needed = bars;
|
|
50
|
+
let endTime;
|
|
51
|
+
while (needed > 0 && all.length < bars) {
|
|
52
|
+
const page = await fetchPage(symbol, interval, Math.min(needed, MAX_PER_REQUEST), endTime);
|
|
53
|
+
if (page.length === 0)
|
|
54
|
+
break;
|
|
55
|
+
all.unshift(...page);
|
|
56
|
+
needed -= page.length;
|
|
57
|
+
endTime = page[0].openTime - 1;
|
|
58
|
+
if (page.length < MAX_PER_REQUEST)
|
|
59
|
+
break;
|
|
60
|
+
}
|
|
61
|
+
if (cancelled)
|
|
62
|
+
return;
|
|
63
|
+
setKlines(all.slice(-bars));
|
|
64
|
+
setStatus("live");
|
|
65
|
+
setError(undefined);
|
|
66
|
+
setLastFetchedAt(new Date());
|
|
67
|
+
}
|
|
68
|
+
catch (err) {
|
|
69
|
+
if (cancelled)
|
|
70
|
+
return;
|
|
71
|
+
setError(err instanceof Error ? err.message : String(err));
|
|
72
|
+
setStatus("error");
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
fetchAll();
|
|
76
|
+
const id = setInterval(fetchAll, refetchIntervalMs);
|
|
77
|
+
return () => {
|
|
78
|
+
cancelled = true;
|
|
79
|
+
clearInterval(id);
|
|
80
|
+
};
|
|
81
|
+
}, [bars, enabled, interval, refetchIntervalMs, symbol]);
|
|
82
|
+
return useMemo(() => ({ klines, status, error, lastFetchedAt }), [klines, status, error, lastFetchedAt]);
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=useBinanceKlines.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBinanceKlines.js","sourceRoot":"","sources":["../src/useBinanceKlines.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bandkit",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.10",
|
|
4
4
|
"description": "Open-source scaffolding for Ethereum range-bound trading strategies: strategy contract deployment, restricted executor, and React hooks. Strategy logic is not included.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|