@timmeck/trading-brain 2.0.2 → 2.1.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.
- package/Dockerfile +32 -5
- package/dist/db/migrations/008_backtest_alerts.d.ts +2 -0
- package/dist/db/migrations/008_backtest_alerts.js +32 -0
- package/dist/db/migrations/008_backtest_alerts.js.map +1 -0
- package/dist/db/migrations/index.js +2 -0
- package/dist/db/migrations/index.js.map +1 -1
- package/dist/db/repositories/alert.repository.d.ts +50 -0
- package/dist/db/repositories/alert.repository.js +87 -0
- package/dist/db/repositories/alert.repository.js.map +1 -0
- package/dist/ipc/router.d.ts +8 -0
- package/dist/ipc/router.js +26 -0
- package/dist/ipc/router.js.map +1 -1
- package/dist/mcp/tools.js +211 -0
- package/dist/mcp/tools.js.map +1 -1
- package/dist/services/alert.service.d.ts +33 -0
- package/dist/services/alert.service.js +137 -0
- package/dist/services/alert.service.js.map +1 -0
- package/dist/services/backtest.service.d.ts +96 -0
- package/dist/services/backtest.service.js +242 -0
- package/dist/services/backtest.service.js.map +1 -0
- package/dist/services/import.service.d.ts +24 -0
- package/dist/services/import.service.js +94 -0
- package/dist/services/import.service.js.map +1 -0
- package/dist/services/risk.service.d.ts +52 -0
- package/dist/services/risk.service.js +244 -0
- package/dist/services/risk.service.js.map +1 -0
- package/dist/trading-core.js +14 -2
- package/dist/trading-core.js.map +1 -1
- package/dist/utils/events.d.ts +5 -0
- package/dist/utils/events.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { TradeService } from './trade.service.js';
|
|
2
|
+
import type { SignalInput } from '../signals/fingerprint.js';
|
|
3
|
+
export interface ImportTradeRow {
|
|
4
|
+
pair: string;
|
|
5
|
+
botType: string;
|
|
6
|
+
profitPct: number;
|
|
7
|
+
win: boolean;
|
|
8
|
+
signals: SignalInput;
|
|
9
|
+
regime?: string;
|
|
10
|
+
timeframe?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface ImportResult {
|
|
13
|
+
imported: number;
|
|
14
|
+
failed: number;
|
|
15
|
+
errors: string[];
|
|
16
|
+
}
|
|
17
|
+
export declare class ImportService {
|
|
18
|
+
private tradeService;
|
|
19
|
+
private logger;
|
|
20
|
+
constructor(tradeService: TradeService);
|
|
21
|
+
importTrades(trades: ImportTradeRow[]): ImportResult;
|
|
22
|
+
importFromJson(jsonString: string): ImportResult;
|
|
23
|
+
private validateRow;
|
|
24
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { getLogger } from '../utils/logger.js';
|
|
2
|
+
export class ImportService {
|
|
3
|
+
tradeService;
|
|
4
|
+
logger = getLogger();
|
|
5
|
+
constructor(tradeService) {
|
|
6
|
+
this.tradeService = tradeService;
|
|
7
|
+
}
|
|
8
|
+
importTrades(trades) {
|
|
9
|
+
let imported = 0;
|
|
10
|
+
let failed = 0;
|
|
11
|
+
const errors = [];
|
|
12
|
+
for (let i = 0; i < trades.length; i++) {
|
|
13
|
+
const row = trades[i];
|
|
14
|
+
try {
|
|
15
|
+
const input = {
|
|
16
|
+
pair: row.pair,
|
|
17
|
+
botType: row.botType,
|
|
18
|
+
profitPct: row.profitPct,
|
|
19
|
+
win: row.win,
|
|
20
|
+
signals: row.signals,
|
|
21
|
+
regime: row.regime,
|
|
22
|
+
};
|
|
23
|
+
this.tradeService.recordOutcome(input);
|
|
24
|
+
imported++;
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
failed++;
|
|
28
|
+
const msg = `Row ${i}: ${err instanceof Error ? err.message : String(err)}`;
|
|
29
|
+
errors.push(msg);
|
|
30
|
+
this.logger.info(`Import error at row ${i}: ${msg}`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
this.logger.info(`Import complete: ${imported} imported, ${failed} failed`);
|
|
34
|
+
return { imported, failed, errors };
|
|
35
|
+
}
|
|
36
|
+
importFromJson(jsonString) {
|
|
37
|
+
let parsed;
|
|
38
|
+
try {
|
|
39
|
+
parsed = JSON.parse(jsonString);
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
const msg = `Invalid JSON: ${err instanceof Error ? err.message : String(err)}`;
|
|
43
|
+
this.logger.info(`Import failed: ${msg}`);
|
|
44
|
+
return { imported: 0, failed: 0, errors: [msg] };
|
|
45
|
+
}
|
|
46
|
+
if (!Array.isArray(parsed)) {
|
|
47
|
+
const msg = 'Expected a JSON array of trade objects';
|
|
48
|
+
this.logger.info(`Import failed: ${msg}`);
|
|
49
|
+
return { imported: 0, failed: 0, errors: [msg] };
|
|
50
|
+
}
|
|
51
|
+
const validationErrors = [];
|
|
52
|
+
const validRows = [];
|
|
53
|
+
for (let i = 0; i < parsed.length; i++) {
|
|
54
|
+
const item = parsed[i];
|
|
55
|
+
const rowErrors = this.validateRow(item, i);
|
|
56
|
+
if (rowErrors.length > 0) {
|
|
57
|
+
validationErrors.push(...rowErrors);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
validRows.push({
|
|
61
|
+
pair: item['pair'],
|
|
62
|
+
botType: item['botType'],
|
|
63
|
+
profitPct: item['profitPct'],
|
|
64
|
+
win: item['win'],
|
|
65
|
+
signals: item['signals'],
|
|
66
|
+
regime: item['regime'],
|
|
67
|
+
timeframe: item['timeframe'],
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (validRows.length === 0 && validationErrors.length > 0) {
|
|
72
|
+
return { imported: 0, failed: parsed.length, errors: validationErrors };
|
|
73
|
+
}
|
|
74
|
+
const result = this.importTrades(validRows);
|
|
75
|
+
result.failed += validationErrors.length;
|
|
76
|
+
result.errors.push(...validationErrors);
|
|
77
|
+
return result;
|
|
78
|
+
}
|
|
79
|
+
validateRow(item, index) {
|
|
80
|
+
const errors = [];
|
|
81
|
+
if (typeof item['pair'] !== 'string')
|
|
82
|
+
errors.push(`Row ${index}: missing or invalid "pair"`);
|
|
83
|
+
if (typeof item['botType'] !== 'string')
|
|
84
|
+
errors.push(`Row ${index}: missing or invalid "botType"`);
|
|
85
|
+
if (typeof item['profitPct'] !== 'number')
|
|
86
|
+
errors.push(`Row ${index}: missing or invalid "profitPct"`);
|
|
87
|
+
if (typeof item['win'] !== 'boolean')
|
|
88
|
+
errors.push(`Row ${index}: missing or invalid "win"`);
|
|
89
|
+
if (typeof item['signals'] !== 'object' || item['signals'] === null)
|
|
90
|
+
errors.push(`Row ${index}: missing or invalid "signals"`);
|
|
91
|
+
return errors;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=import.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import.service.js","sourceRoot":"","sources":["../../src/services/import.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { TradeRepository } from '../db/repositories/trade.repository.js';
|
|
2
|
+
import type { SignalService } from './signal.service.js';
|
|
3
|
+
import type { SynapseManager } from '../synapses/synapse-manager.js';
|
|
4
|
+
export interface KellyResult {
|
|
5
|
+
kellyFraction: number;
|
|
6
|
+
halfKelly: number;
|
|
7
|
+
brainAdjusted: number;
|
|
8
|
+
sampleSize: number;
|
|
9
|
+
winRate: number;
|
|
10
|
+
avgWin: number;
|
|
11
|
+
avgLoss: number;
|
|
12
|
+
recommendation: 'aggressive' | 'normal' | 'conservative' | 'avoid';
|
|
13
|
+
}
|
|
14
|
+
export interface PositionSizeResult {
|
|
15
|
+
sizePct: number;
|
|
16
|
+
kellyRaw: number;
|
|
17
|
+
confidence: number;
|
|
18
|
+
reason: string;
|
|
19
|
+
}
|
|
20
|
+
export interface RiskMetrics {
|
|
21
|
+
maxDrawdownPct: number;
|
|
22
|
+
currentDrawdownPct: number;
|
|
23
|
+
consecutiveLosses: number;
|
|
24
|
+
maxConsecutiveLosses: number;
|
|
25
|
+
riskRewardRatio: number;
|
|
26
|
+
expectancy: number;
|
|
27
|
+
}
|
|
28
|
+
export declare class RiskService {
|
|
29
|
+
private tradeRepo;
|
|
30
|
+
private signalService;
|
|
31
|
+
private synapseManager;
|
|
32
|
+
private logger;
|
|
33
|
+
constructor(tradeRepo: TradeRepository, signalService: SignalService, synapseManager: SynapseManager);
|
|
34
|
+
/**
|
|
35
|
+
* Calculate Kelly Criterion fraction for position sizing.
|
|
36
|
+
* K = W - (1-W)/R where W = win rate, R = avg win / avg loss ratio.
|
|
37
|
+
*/
|
|
38
|
+
getKellyFraction(pair?: string, regime?: string): KellyResult;
|
|
39
|
+
/**
|
|
40
|
+
* Get a recommended position size based on Kelly Criterion and signal confidence.
|
|
41
|
+
* Caps at 25% of capital per position.
|
|
42
|
+
*/
|
|
43
|
+
getPositionSize(capitalPct: number, signals: {
|
|
44
|
+
fingerprint: string;
|
|
45
|
+
confidence?: number;
|
|
46
|
+
}, regime?: string): PositionSizeResult;
|
|
47
|
+
/**
|
|
48
|
+
* Get risk metrics for overall portfolio or a specific pair.
|
|
49
|
+
*/
|
|
50
|
+
getRiskMetrics(pair?: string): RiskMetrics;
|
|
51
|
+
private getFilteredTrades;
|
|
52
|
+
}
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
import { getLogger } from '../utils/logger.js';
|
|
2
|
+
export class RiskService {
|
|
3
|
+
tradeRepo;
|
|
4
|
+
signalService;
|
|
5
|
+
synapseManager;
|
|
6
|
+
logger = getLogger();
|
|
7
|
+
constructor(tradeRepo, signalService, synapseManager) {
|
|
8
|
+
this.tradeRepo = tradeRepo;
|
|
9
|
+
this.signalService = signalService;
|
|
10
|
+
this.synapseManager = synapseManager;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Calculate Kelly Criterion fraction for position sizing.
|
|
14
|
+
* K = W - (1-W)/R where W = win rate, R = avg win / avg loss ratio.
|
|
15
|
+
*/
|
|
16
|
+
getKellyFraction(pair, regime) {
|
|
17
|
+
const trades = this.getFilteredTrades(pair, regime);
|
|
18
|
+
if (trades.length === 0) {
|
|
19
|
+
this.logger.info('Kelly: no trades found for given filters');
|
|
20
|
+
return {
|
|
21
|
+
kellyFraction: 0,
|
|
22
|
+
halfKelly: 0,
|
|
23
|
+
brainAdjusted: 0,
|
|
24
|
+
sampleSize: 0,
|
|
25
|
+
winRate: 0,
|
|
26
|
+
avgWin: 0,
|
|
27
|
+
avgLoss: 0,
|
|
28
|
+
recommendation: 'avoid',
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
const wins = trades.filter(t => t.win === 1);
|
|
32
|
+
const losses = trades.filter(t => t.win === 0);
|
|
33
|
+
const winRate = wins.length / trades.length;
|
|
34
|
+
const avgWin = wins.length > 0
|
|
35
|
+
? wins.reduce((s, t) => s + t.profit_pct, 0) / wins.length
|
|
36
|
+
: 0;
|
|
37
|
+
const avgLoss = losses.length > 0
|
|
38
|
+
? Math.abs(losses.reduce((s, t) => s + t.profit_pct, 0) / losses.length)
|
|
39
|
+
: 0;
|
|
40
|
+
// Kelly formula: K = W - (1-W)/R
|
|
41
|
+
// R = avgWin / avgLoss (win/loss ratio)
|
|
42
|
+
let kellyFraction = 0;
|
|
43
|
+
if (avgLoss > 0) {
|
|
44
|
+
const R = avgWin / avgLoss;
|
|
45
|
+
kellyFraction = winRate - (1 - winRate) / R;
|
|
46
|
+
}
|
|
47
|
+
else if (winRate > 0) {
|
|
48
|
+
// No losses recorded — Kelly would be 1, but cap it
|
|
49
|
+
kellyFraction = winRate;
|
|
50
|
+
}
|
|
51
|
+
const halfKelly = kellyFraction / 2;
|
|
52
|
+
// Brain-adjusted: use synapse confidence for the most common fingerprint
|
|
53
|
+
let brainConfidence = 0.5;
|
|
54
|
+
if (trades.length > 0) {
|
|
55
|
+
// Find the most frequent fingerprint in the filtered trades
|
|
56
|
+
const fpCounts = new Map();
|
|
57
|
+
for (const t of trades) {
|
|
58
|
+
fpCounts.set(t.fingerprint, (fpCounts.get(t.fingerprint) ?? 0) + 1);
|
|
59
|
+
}
|
|
60
|
+
let topFp = '';
|
|
61
|
+
let topCount = 0;
|
|
62
|
+
for (const [fp, count] of fpCounts) {
|
|
63
|
+
if (count > topCount) {
|
|
64
|
+
topFp = fp;
|
|
65
|
+
topCount = count;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (topFp) {
|
|
69
|
+
const synapse = this.synapseManager.getByFingerprint(topFp);
|
|
70
|
+
if (synapse && synapse.activations >= 3) {
|
|
71
|
+
brainConfidence = synapse.weight;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
const brainAdjusted = halfKelly * brainConfidence;
|
|
76
|
+
// Recommendation
|
|
77
|
+
let recommendation;
|
|
78
|
+
if (trades.length < 10 || kellyFraction <= 0) {
|
|
79
|
+
recommendation = 'avoid';
|
|
80
|
+
}
|
|
81
|
+
else if (kellyFraction > 0.25) {
|
|
82
|
+
recommendation = 'aggressive';
|
|
83
|
+
}
|
|
84
|
+
else if (kellyFraction > 0.1) {
|
|
85
|
+
recommendation = 'normal';
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
recommendation = 'conservative';
|
|
89
|
+
}
|
|
90
|
+
this.logger.info(`Kelly: K=${kellyFraction.toFixed(3)} | half=${halfKelly.toFixed(3)} | ` +
|
|
91
|
+
`brainAdj=${brainAdjusted.toFixed(3)} | WR=${(winRate * 100).toFixed(1)}% | ` +
|
|
92
|
+
`n=${trades.length} → ${recommendation}`);
|
|
93
|
+
return {
|
|
94
|
+
kellyFraction,
|
|
95
|
+
halfKelly,
|
|
96
|
+
brainAdjusted,
|
|
97
|
+
sampleSize: trades.length,
|
|
98
|
+
winRate,
|
|
99
|
+
avgWin,
|
|
100
|
+
avgLoss,
|
|
101
|
+
recommendation,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Get a recommended position size based on Kelly Criterion and signal confidence.
|
|
106
|
+
* Caps at 25% of capital per position.
|
|
107
|
+
*/
|
|
108
|
+
getPositionSize(capitalPct, signals, regime) {
|
|
109
|
+
const MAX_POSITION_PCT = 25;
|
|
110
|
+
const MIN_POSITION_PCT = 1;
|
|
111
|
+
// Get Kelly for the regime context
|
|
112
|
+
const kelly = this.getKellyFraction(undefined, regime);
|
|
113
|
+
// Signal confidence from synapse
|
|
114
|
+
let confidence = signals.confidence ?? 0.5;
|
|
115
|
+
const synapse = this.synapseManager.getByFingerprint(signals.fingerprint);
|
|
116
|
+
if (synapse && synapse.activations >= 3) {
|
|
117
|
+
confidence = synapse.weight;
|
|
118
|
+
}
|
|
119
|
+
let sizePct;
|
|
120
|
+
let reason;
|
|
121
|
+
if (kelly.recommendation === 'avoid') {
|
|
122
|
+
sizePct = MIN_POSITION_PCT;
|
|
123
|
+
reason = 'minimum size — Kelly suggests avoiding (insufficient data or negative edge)';
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
// Base size from half-Kelly, scaled by confidence and capital percentage
|
|
127
|
+
sizePct = kelly.halfKelly * confidence * capitalPct * 100;
|
|
128
|
+
// Clamp to reasonable limits
|
|
129
|
+
sizePct = Math.max(MIN_POSITION_PCT, Math.min(MAX_POSITION_PCT, sizePct));
|
|
130
|
+
if (kelly.recommendation === 'conservative') {
|
|
131
|
+
sizePct = Math.min(sizePct, 5);
|
|
132
|
+
reason = `conservative — Kelly edge is thin (K=${kelly.kellyFraction.toFixed(3)})`;
|
|
133
|
+
}
|
|
134
|
+
else if (kelly.recommendation === 'aggressive') {
|
|
135
|
+
reason = `aggressive — strong edge detected (K=${kelly.kellyFraction.toFixed(3)}, conf=${confidence.toFixed(2)})`;
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
reason = `normal — solid edge (K=${kelly.kellyFraction.toFixed(3)}, conf=${confidence.toFixed(2)})`;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
this.logger.info(`Position size: ${sizePct.toFixed(1)}% | Kelly raw: ${kelly.kellyFraction.toFixed(3)} | ` +
|
|
142
|
+
`confidence: ${confidence.toFixed(2)} | ${reason}`);
|
|
143
|
+
return {
|
|
144
|
+
sizePct,
|
|
145
|
+
kellyRaw: kelly.kellyFraction,
|
|
146
|
+
confidence,
|
|
147
|
+
reason,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Get risk metrics for overall portfolio or a specific pair.
|
|
152
|
+
*/
|
|
153
|
+
getRiskMetrics(pair) {
|
|
154
|
+
const trades = pair ? this.tradeRepo.getByPair(pair) : this.tradeRepo.getAll();
|
|
155
|
+
if (trades.length === 0) {
|
|
156
|
+
return {
|
|
157
|
+
maxDrawdownPct: 0,
|
|
158
|
+
currentDrawdownPct: 0,
|
|
159
|
+
consecutiveLosses: 0,
|
|
160
|
+
maxConsecutiveLosses: 0,
|
|
161
|
+
riskRewardRatio: 0,
|
|
162
|
+
expectancy: 0,
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
// Sort ascending by date for sequential analysis
|
|
166
|
+
const sorted = [...trades].sort((a, b) => a.created_at.localeCompare(b.created_at));
|
|
167
|
+
// Max drawdown (peak-to-trough on equity curve)
|
|
168
|
+
let cumulative = 0;
|
|
169
|
+
let peak = 0;
|
|
170
|
+
let maxDrawdown = 0;
|
|
171
|
+
for (const t of sorted) {
|
|
172
|
+
cumulative += t.profit_pct;
|
|
173
|
+
if (cumulative > peak)
|
|
174
|
+
peak = cumulative;
|
|
175
|
+
const drawdown = peak - cumulative;
|
|
176
|
+
if (drawdown > maxDrawdown)
|
|
177
|
+
maxDrawdown = drawdown;
|
|
178
|
+
}
|
|
179
|
+
// Current drawdown
|
|
180
|
+
const currentDrawdown = peak - cumulative;
|
|
181
|
+
// Consecutive losses (current streak + max ever)
|
|
182
|
+
let currentStreak = 0;
|
|
183
|
+
let maxStreak = 0;
|
|
184
|
+
let tempStreak = 0;
|
|
185
|
+
for (const t of sorted) {
|
|
186
|
+
if (t.win === 0) {
|
|
187
|
+
tempStreak++;
|
|
188
|
+
if (tempStreak > maxStreak)
|
|
189
|
+
maxStreak = tempStreak;
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
tempStreak = 0;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
// Current streak: count from the end
|
|
196
|
+
for (let i = sorted.length - 1; i >= 0; i--) {
|
|
197
|
+
if (sorted[i].win === 0) {
|
|
198
|
+
currentStreak++;
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
break;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
// Win/loss stats
|
|
205
|
+
const wins = sorted.filter(t => t.win === 1);
|
|
206
|
+
const losses = sorted.filter(t => t.win === 0);
|
|
207
|
+
const avgWin = wins.length > 0
|
|
208
|
+
? wins.reduce((s, t) => s + t.profit_pct, 0) / wins.length
|
|
209
|
+
: 0;
|
|
210
|
+
const avgLoss = losses.length > 0
|
|
211
|
+
? Math.abs(losses.reduce((s, t) => s + t.profit_pct, 0) / losses.length)
|
|
212
|
+
: 0;
|
|
213
|
+
const winRate = wins.length / sorted.length;
|
|
214
|
+
// Risk-reward ratio: avgWin / avgLoss
|
|
215
|
+
const riskRewardRatio = avgLoss > 0 ? avgWin / avgLoss : avgWin > 0 ? Infinity : 0;
|
|
216
|
+
// Expectancy: W * avgWin - (1-W) * avgLoss
|
|
217
|
+
const expectancy = winRate * avgWin - (1 - winRate) * avgLoss;
|
|
218
|
+
this.logger.info(`Risk metrics${pair ? ` (${pair})` : ''}: MaxDD=${maxDrawdown.toFixed(2)}% | ` +
|
|
219
|
+
`CurDD=${currentDrawdown.toFixed(2)}% | ConsLoss=${currentStreak}/${maxStreak} | ` +
|
|
220
|
+
`RR=${riskRewardRatio === Infinity ? '∞' : riskRewardRatio.toFixed(2)} | E=${expectancy.toFixed(3)}`);
|
|
221
|
+
return {
|
|
222
|
+
maxDrawdownPct: maxDrawdown,
|
|
223
|
+
currentDrawdownPct: currentDrawdown,
|
|
224
|
+
consecutiveLosses: currentStreak,
|
|
225
|
+
maxConsecutiveLosses: maxStreak,
|
|
226
|
+
riskRewardRatio,
|
|
227
|
+
expectancy,
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
getFilteredTrades(pair, regime) {
|
|
231
|
+
let trades;
|
|
232
|
+
if (pair) {
|
|
233
|
+
trades = this.tradeRepo.getByPair(pair);
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
trades = this.tradeRepo.getAll();
|
|
237
|
+
}
|
|
238
|
+
if (regime) {
|
|
239
|
+
trades = trades.filter(t => t.regime === regime);
|
|
240
|
+
}
|
|
241
|
+
return trades;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
//# sourceMappingURL=risk.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"risk.service.js","sourceRoot":"","sources":["../../src/services/risk.service.ts"],"names":[],"mappings":"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"}
|
package/dist/trading-core.js
CHANGED
|
@@ -16,6 +16,7 @@ import { InsightRepository } from './db/repositories/insight.repository.js';
|
|
|
16
16
|
import { CalibrationRepository } from './db/repositories/calibration.repository.js';
|
|
17
17
|
import { MemoryRepository } from './db/repositories/memory.repository.js';
|
|
18
18
|
import { SessionRepository } from './db/repositories/session.repository.js';
|
|
19
|
+
import { AlertRepository } from './db/repositories/alert.repository.js';
|
|
19
20
|
// Graph
|
|
20
21
|
import { WeightedGraph } from './graph/weighted-graph.js';
|
|
21
22
|
// Synapses
|
|
@@ -28,6 +29,10 @@ import { SynapseService } from './services/synapse.service.js';
|
|
|
28
29
|
import { AnalyticsService } from './services/analytics.service.js';
|
|
29
30
|
import { InsightService } from './services/insight.service.js';
|
|
30
31
|
import { MemoryService } from './services/memory.service.js';
|
|
32
|
+
import { BacktestService } from './services/backtest.service.js';
|
|
33
|
+
import { RiskService } from './services/risk.service.js';
|
|
34
|
+
import { AlertService } from './services/alert.service.js';
|
|
35
|
+
import { ImportService } from './services/import.service.js';
|
|
31
36
|
// Engines
|
|
32
37
|
import { LearningEngine } from './learning/learning-engine.js';
|
|
33
38
|
import { ResearchEngine } from './research/research-engine.js';
|
|
@@ -82,6 +87,7 @@ export class TradingCore {
|
|
|
82
87
|
const calibrationRepo = new CalibrationRepository(this.db);
|
|
83
88
|
const memoryRepo = new MemoryRepository(this.db);
|
|
84
89
|
const sessionRepo = new SessionRepository(this.db);
|
|
90
|
+
const alertRepo = new AlertRepository(this.db);
|
|
85
91
|
// 6. Synapse Manager
|
|
86
92
|
const synapseManager = new SynapseManager(synapseRepo, config.calibration);
|
|
87
93
|
// 7. Weighted Graph (load from DB)
|
|
@@ -100,14 +106,20 @@ export class TradingCore {
|
|
|
100
106
|
const tradeCount = () => tradeRepo.count();
|
|
101
107
|
// 9. Services
|
|
102
108
|
const memoryService = new MemoryService(memoryRepo, sessionRepo);
|
|
109
|
+
const tradeService = new TradeService(tradeRepo, signalRepo, chainRepo, synapseManager, graph, cal, config.learning);
|
|
110
|
+
const signalService = new SignalService(synapseManager, graph, cal, tradeCount, ruleRepo, tradeRepo);
|
|
103
111
|
const services = {
|
|
104
|
-
trade:
|
|
105
|
-
signal:
|
|
112
|
+
trade: tradeService,
|
|
113
|
+
signal: signalService,
|
|
106
114
|
strategy: new StrategyService(synapseManager, graph, cal, tradeCount),
|
|
107
115
|
synapse: new SynapseService(synapseManager, graph),
|
|
108
116
|
analytics: new AnalyticsService(tradeRepo, ruleRepo, chainRepo, insightRepo, synapseManager, graph, memoryRepo, sessionRepo),
|
|
109
117
|
insight: new InsightService(insightRepo),
|
|
110
118
|
memory: memoryService,
|
|
119
|
+
backtest: new BacktestService(tradeRepo, signalService, synapseManager),
|
|
120
|
+
risk: new RiskService(tradeRepo, signalService, synapseManager),
|
|
121
|
+
alert: new AlertService(alertRepo, signalService),
|
|
122
|
+
import: new ImportService(tradeService),
|
|
111
123
|
ruleRepo,
|
|
112
124
|
chainRepo,
|
|
113
125
|
calRepo: calibrationRepo,
|
package/dist/trading-core.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trading-core.js","sourceRoot":"","sources":["../src/trading-core.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"trading-core.js","sourceRoot":"","sources":["../src/trading-core.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/events.d.ts
CHANGED
|
@@ -52,6 +52,11 @@ export type TradingBrainEvents = {
|
|
|
52
52
|
sessionId: number;
|
|
53
53
|
summary: string;
|
|
54
54
|
};
|
|
55
|
+
'alert:triggered': {
|
|
56
|
+
alertId: number;
|
|
57
|
+
name: string;
|
|
58
|
+
conditionType: string;
|
|
59
|
+
};
|
|
55
60
|
};
|
|
56
61
|
export type TradingBrainEventName = keyof TradingBrainEvents;
|
|
57
62
|
export declare class TypedEventBus extends GenericEventBus<TradingBrainEvents> {
|
package/dist/utils/events.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/utils/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,eAAe,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/utils/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAqBvE,MAAM,OAAO,aAAc,SAAQ,eAAmC;CAAG;AAEzE,IAAI,WAAW,GAAyB,IAAI,CAAC;AAE7C,MAAM,UAAU,WAAW;IACzB,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,WAAW,GAAG,IAAI,aAAa,EAAE,CAAC;IACpC,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@timmeck/trading-brain",
|
|
3
|
-
"version": "2.0
|
|
3
|
+
"version": "2.1.0",
|
|
4
4
|
"description": "Adaptive trading intelligence system with Hebbian synapses, spreading activation, Wilson Score confidence, and adaptive calibration",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|