@lagoon-protocol/lagoon-mcp 0.4.0 → 0.5.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/dist/config.d.ts +1 -1
- package/dist/config.js +1 -1
- package/dist/core/cache-invalidation.d.ts +7 -1
- package/dist/core/cache-invalidation.d.ts.map +1 -1
- package/dist/core/cache-invalidation.js +17 -1
- package/dist/core/cache-invalidation.js.map +1 -1
- package/dist/core/container.js +1 -1
- package/dist/graphql/client.d.ts.map +1 -1
- package/dist/graphql/client.js +6 -0
- package/dist/graphql/client.js.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/prompts/competitor-comparison.d.ts.map +1 -1
- package/dist/prompts/competitor-comparison.js +3 -1
- package/dist/prompts/competitor-comparison.js.map +1 -1
- package/dist/prompts/curator-performance.d.ts.map +1 -1
- package/dist/prompts/curator-performance.js +3 -1
- package/dist/prompts/curator-performance.js.map +1 -1
- package/dist/prompts/financial-analysis.d.ts.map +1 -1
- package/dist/prompts/financial-analysis.js +7 -3
- package/dist/prompts/financial-analysis.js.map +1 -1
- package/dist/prompts/onboarding-first-vault.d.ts.map +1 -1
- package/dist/prompts/onboarding-first-vault.js +5 -1
- package/dist/prompts/onboarding-first-vault.js.map +1 -1
- package/dist/prompts/portfolio-optimization.d.ts.map +1 -1
- package/dist/prompts/portfolio-optimization.js +5 -1
- package/dist/prompts/portfolio-optimization.js.map +1 -1
- package/dist/prompts/protocol-overview.d.ts.map +1 -1
- package/dist/prompts/protocol-overview.js +3 -1
- package/dist/prompts/protocol-overview.js.map +1 -1
- package/dist/resources/schema.d.ts +8 -3
- package/dist/resources/schema.d.ts.map +1 -1
- package/dist/resources/schema.js +34 -30
- package/dist/resources/schema.js.map +1 -1
- package/dist/server.d.ts +4 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +5 -2
- package/dist/server.js.map +1 -1
- package/dist/services/analytics/risk.service.d.ts +1 -0
- package/dist/services/analytics/risk.service.d.ts.map +1 -1
- package/dist/services/analytics/risk.service.js +13 -12
- package/dist/services/analytics/risk.service.js.map +1 -1
- package/dist/skills/loader.d.ts.map +1 -1
- package/dist/skills/loader.js +18 -8
- package/dist/skills/loader.js.map +1 -1
- package/dist/tools/discover-tools.d.ts +3 -3
- package/dist/tools/discover-tools.d.ts.map +1 -1
- package/dist/tools/discover-tools.js +16 -3
- package/dist/tools/discover-tools.js.map +1 -1
- package/dist/tools/predict-yield.d.ts.map +1 -1
- package/dist/tools/predict-yield.js +31 -35
- package/dist/tools/predict-yield.js.map +1 -1
- package/dist/tools/query-graphql.d.ts.map +1 -1
- package/dist/tools/query-graphql.js +139 -0
- package/dist/tools/query-graphql.js.map +1 -1
- package/dist/utils/comparison-metrics.d.ts.map +1 -1
- package/dist/utils/comparison-metrics.js +6 -3
- package/dist/utils/comparison-metrics.js.map +1 -1
- package/dist/utils/drawdown.d.ts +62 -0
- package/dist/utils/drawdown.d.ts.map +1 -0
- package/dist/utils/drawdown.js +132 -0
- package/dist/utils/drawdown.js.map +1 -0
- package/dist/utils/portfolio-optimization.d.ts +3 -1
- package/dist/utils/portfolio-optimization.d.ts.map +1 -1
- package/dist/utils/portfolio-optimization.js +13 -9
- package/dist/utils/portfolio-optimization.js.map +1 -1
- package/dist/utils/risk-scoring.d.ts.map +1 -1
- package/dist/utils/risk-scoring.js +24 -7
- package/dist/utils/risk-scoring.js.map +1 -1
- package/dist/utils/tool-error-handler.d.ts.map +1 -1
- package/dist/utils/tool-error-handler.js +7 -2
- package/dist/utils/tool-error-handler.js.map +1 -1
- package/dist/utils/tool-handler.d.ts +0 -9
- package/dist/utils/tool-handler.d.ts.map +1 -1
- package/dist/utils/tool-handler.js +0 -13
- package/dist/utils/tool-handler.js.map +1 -1
- package/dist/utils/var.d.ts +65 -0
- package/dist/utils/var.d.ts.map +1 -0
- package/dist/utils/var.js +134 -0
- package/dist/utils/var.js.map +1 -0
- package/dist/utils/yield-prediction.d.ts.map +1 -1
- package/dist/utils/yield-prediction.js +33 -10
- package/dist/utils/yield-prediction.js.map +1 -1
- package/package.json +1 -1
|
@@ -17,8 +17,134 @@
|
|
|
17
17
|
* 3. Large datasets would waste cache memory
|
|
18
18
|
* 4. Fresh data is required (no staleness tolerance)
|
|
19
19
|
*/
|
|
20
|
+
import { parse, Kind, OperationTypeNode, } from 'graphql';
|
|
20
21
|
import { getToolDisclaimer } from '../utils/disclaimers.js';
|
|
21
22
|
import { handleToolError } from '../utils/tool-error-handler.js';
|
|
23
|
+
const MAX_QUERY_DEPTH = 10;
|
|
24
|
+
const MAX_ALIASES = 20;
|
|
25
|
+
function buildFragmentMap(document) {
|
|
26
|
+
const map = new Map();
|
|
27
|
+
for (const def of document.definitions) {
|
|
28
|
+
if (def.kind === Kind.FRAGMENT_DEFINITION && def.selectionSet) {
|
|
29
|
+
map.set(def.name.value, def.selectionSet);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return map;
|
|
33
|
+
}
|
|
34
|
+
function getSelectionSet(node) {
|
|
35
|
+
if ('selectionSet' in node) {
|
|
36
|
+
return node.selectionSet ?? undefined;
|
|
37
|
+
}
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
function getDepth(selectionSet, current, fragments, fragmentStack = new Set()) {
|
|
41
|
+
if (!selectionSet)
|
|
42
|
+
return current;
|
|
43
|
+
let maxDepth = current;
|
|
44
|
+
for (const selection of selectionSet.selections) {
|
|
45
|
+
if (selection.kind === Kind.FRAGMENT_SPREAD) {
|
|
46
|
+
const name = selection.name.value;
|
|
47
|
+
// Per-path cycle detection: skip only if this fragment is already on
|
|
48
|
+
// the current recursion path (prevents infinite loops on cyclic fragments).
|
|
49
|
+
// Fragments encountered via different paths are re-evaluated to capture
|
|
50
|
+
// the worst-case depth.
|
|
51
|
+
if (fragmentStack.has(name))
|
|
52
|
+
continue;
|
|
53
|
+
const fragSet = fragments.get(name);
|
|
54
|
+
if (fragSet) {
|
|
55
|
+
const nextStack = new Set(fragmentStack);
|
|
56
|
+
nextStack.add(name);
|
|
57
|
+
const fragDepth = getDepth(fragSet, current, fragments, nextStack);
|
|
58
|
+
if (fragDepth > maxDepth)
|
|
59
|
+
maxDepth = fragDepth;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
const childSet = getSelectionSet(selection);
|
|
64
|
+
if (childSet) {
|
|
65
|
+
const childDepth = getDepth(childSet, current + 1, fragments, fragmentStack);
|
|
66
|
+
if (childDepth > maxDepth)
|
|
67
|
+
maxDepth = childDepth;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return maxDepth;
|
|
72
|
+
}
|
|
73
|
+
function countAliases(selectionSet, fragments, fragmentStack = new Set()) {
|
|
74
|
+
if (!selectionSet)
|
|
75
|
+
return 0;
|
|
76
|
+
let count = 0;
|
|
77
|
+
for (const selection of selectionSet.selections) {
|
|
78
|
+
if (selection.kind === Kind.FIELD && selection.alias)
|
|
79
|
+
count++;
|
|
80
|
+
if (selection.kind === Kind.FRAGMENT_SPREAD) {
|
|
81
|
+
const name = selection.name.value;
|
|
82
|
+
// Per-path cycle detection: each spread site counts aliases independently.
|
|
83
|
+
// Only skip if we're already recursing into this fragment on this path
|
|
84
|
+
// (prevents infinite loops on cyclic fragments).
|
|
85
|
+
if (fragmentStack.has(name))
|
|
86
|
+
continue;
|
|
87
|
+
const fragSet = fragments.get(name);
|
|
88
|
+
if (fragSet) {
|
|
89
|
+
const nextStack = new Set(fragmentStack);
|
|
90
|
+
nextStack.add(name);
|
|
91
|
+
count += countAliases(fragSet, fragments, nextStack);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
const childSet = getSelectionSet(selection);
|
|
96
|
+
if (childSet)
|
|
97
|
+
count += countAliases(childSet, fragments, fragmentStack);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return count;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Validates a GraphQL query string for safety:
|
|
104
|
+
* - Only query operations allowed (no mutations/subscriptions)
|
|
105
|
+
* - Depth limit to prevent resource exhaustion (fragment-aware)
|
|
106
|
+
* - Alias limit to prevent batching attacks (fragment-aware)
|
|
107
|
+
*/
|
|
108
|
+
function validateGraphQLQuery(queryString) {
|
|
109
|
+
let document;
|
|
110
|
+
try {
|
|
111
|
+
document = parse(queryString);
|
|
112
|
+
}
|
|
113
|
+
catch (e) {
|
|
114
|
+
return { valid: false, error: `Invalid GraphQL syntax: ${e.message}` };
|
|
115
|
+
}
|
|
116
|
+
const fragments = buildFragmentMap(document);
|
|
117
|
+
for (const definition of document.definitions) {
|
|
118
|
+
// Check operation types — only queries allowed
|
|
119
|
+
if (definition.kind === Kind.OPERATION_DEFINITION) {
|
|
120
|
+
if (definition.operation !== OperationTypeNode.QUERY) {
|
|
121
|
+
return {
|
|
122
|
+
valid: false,
|
|
123
|
+
error: `Only query operations are allowed. Received: ${definition.operation}`,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// Check query depth and alias count (resolves fragment spreads)
|
|
128
|
+
const defSelectionSet = getSelectionSet(definition);
|
|
129
|
+
if (defSelectionSet) {
|
|
130
|
+
const depth = getDepth(defSelectionSet, 1, fragments);
|
|
131
|
+
if (depth > MAX_QUERY_DEPTH) {
|
|
132
|
+
return {
|
|
133
|
+
valid: false,
|
|
134
|
+
error: `Query depth ${depth} exceeds maximum allowed depth of ${MAX_QUERY_DEPTH}`,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
const aliasCount = countAliases(defSelectionSet, fragments);
|
|
138
|
+
if (aliasCount > MAX_ALIASES) {
|
|
139
|
+
return {
|
|
140
|
+
valid: false,
|
|
141
|
+
error: `Query has ${aliasCount} aliases, exceeding maximum of ${MAX_ALIASES}`,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
return { valid: true };
|
|
147
|
+
}
|
|
22
148
|
/**
|
|
23
149
|
* Create the executeQueryGraphQL function with DI container
|
|
24
150
|
*
|
|
@@ -33,6 +159,19 @@ import { handleToolError } from '../utils/tool-error-handler.js';
|
|
|
33
159
|
export function createExecuteQueryGraphQL(container) {
|
|
34
160
|
return async (input) => {
|
|
35
161
|
try {
|
|
162
|
+
// Validate query safety (no mutations, depth/alias limits)
|
|
163
|
+
const validation = validateGraphQLQuery(input.query);
|
|
164
|
+
if (!validation.valid) {
|
|
165
|
+
return {
|
|
166
|
+
content: [
|
|
167
|
+
{
|
|
168
|
+
type: 'text',
|
|
169
|
+
text: `Query validation failed: ${validation.error}`,
|
|
170
|
+
},
|
|
171
|
+
],
|
|
172
|
+
isError: true,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
36
175
|
// Execute GraphQL query using injected client
|
|
37
176
|
const data = await container.graphqlClient.request(input.query, input.variables);
|
|
38
177
|
// Return successful response with pretty-printed JSON and legal disclaimer
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-graphql.js","sourceRoot":"","sources":["../../src/tools/query-graphql.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAG5D,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE;;;;;;;;;;GAUG;AACH,MAAM,UAAU,yBAAyB,CACvC,SAA2B;IAE3B,OAAO,KAAK,EAAE,KAAwB,EAA2B,EAAE;QACjE,IAAI,CAAC;YACH,8CAA8C;YAC9C,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YAEjF,2EAA2E;YAC3E,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,iBAAiB,CAAC,eAAe,CAAC;qBACzE;iBACF;gBACD,OAAO,EAAE,KAAK;aACf,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QACjD,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"query-graphql.js","sourceRoot":"","sources":["../../src/tools/query-graphql.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comparison-metrics.d.ts","sourceRoot":"","sources":["../../src/utils/comparison-metrics.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGvD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IACnD,aAAa,CAAC,EAAE,kBAAkB,CAAC;IAEnC,IAAI,CAAC,EAAE;QACL,aAAa,EAAE,MAAM,CAAC;QACtB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,eAAgB,SAAQ,mBAAmB;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,cAAc,EAAE;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,UAAU,EAAE;QACV,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,SAAS,EAAE;QACT,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,WAAW,CAAC,EAAE;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,aAAa,CAAC,EAAE;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,WAAW,CAAC,EAAE;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,WAAW,CAAC,EAAE;QACZ,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"comparison-metrics.d.ts","sourceRoot":"","sources":["../../src/utils/comparison-metrics.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,11 +20,14 @@ export function calculatePercentile(value, arr) {
|
|
|
20
20
|
return arr[0] === value ? 50 : 0;
|
|
21
21
|
}
|
|
22
22
|
const sorted = [...arr].sort((a, b) => a - b);
|
|
23
|
-
const
|
|
24
|
-
if (
|
|
23
|
+
const firstIndex = sorted.indexOf(value);
|
|
24
|
+
if (firstIndex === -1)
|
|
25
25
|
return 0;
|
|
26
|
+
const lastIndex = sorted.lastIndexOf(value);
|
|
27
|
+
// Use mid-rank for tied values (average of first and last position)
|
|
28
|
+
const midRank = (firstIndex + lastIndex) / 2;
|
|
26
29
|
// sorted.length - 1 is now guaranteed > 0 because arr.length > 1
|
|
27
|
-
const percentile = (
|
|
30
|
+
const percentile = (midRank / (sorted.length - 1)) * 100;
|
|
28
31
|
return Math.round(percentile * 100) / 100; // Round to 2 decimals
|
|
29
32
|
}
|
|
30
33
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"comparison-metrics.js","sourceRoot":"","sources":["../../src/utils/comparison-metrics.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"comparison-metrics.js","sourceRoot":"","sources":["../../src/utils/comparison-metrics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Drawdown Analysis Utility
|
|
3
|
+
*
|
|
4
|
+
* Provides drawdown analysis for DeFi vault price history using a
|
|
5
|
+
* running-maximum algorithm. Calculates maximum drawdown, duration,
|
|
6
|
+
* recovery time, and current drawdown from all-time high.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* A single price observation in a vault's history
|
|
10
|
+
*/
|
|
11
|
+
export interface PricePoint {
|
|
12
|
+
/** Unix timestamp in seconds */
|
|
13
|
+
timestamp: number;
|
|
14
|
+
/** Price per share or NAV value */
|
|
15
|
+
value: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Complete drawdown analysis result for a vault's price history
|
|
19
|
+
*/
|
|
20
|
+
export interface DrawdownAnalysis {
|
|
21
|
+
/** Maximum drawdown as a percentage (0-100) */
|
|
22
|
+
maxDrawdown: number;
|
|
23
|
+
/** Duration from peak to trough in days */
|
|
24
|
+
maxDrawdownDuration: number;
|
|
25
|
+
/** Days from trough back to a new high, or null if not yet recovered */
|
|
26
|
+
recoveryTime: number | null;
|
|
27
|
+
/** Current drawdown from the all-time high as a percentage (0-100) */
|
|
28
|
+
currentDrawdown: number;
|
|
29
|
+
/** Highest observed value */
|
|
30
|
+
peakValue: number;
|
|
31
|
+
/** Lowest value during the max drawdown period */
|
|
32
|
+
troughValue: number;
|
|
33
|
+
/** Timestamp of the peak preceding the max drawdown */
|
|
34
|
+
peakTimestamp: number;
|
|
35
|
+
/** Timestamp of the trough during the max drawdown */
|
|
36
|
+
troughTimestamp: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Analyze drawdown characteristics from a vault's price history.
|
|
40
|
+
*
|
|
41
|
+
* Uses a running-maximum algorithm to efficiently compute:
|
|
42
|
+
* - Maximum drawdown (peak-to-trough decline as a percentage)
|
|
43
|
+
* - Drawdown duration (time from peak to trough)
|
|
44
|
+
* - Recovery time (time from trough back to a new high)
|
|
45
|
+
* - Current drawdown from the all-time high
|
|
46
|
+
*
|
|
47
|
+
* @param priceHistory - Array of timestamp/value pairs (need not be sorted)
|
|
48
|
+
* @returns Complete drawdown analysis, or zero-valued result if fewer than 2 data points
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* const analysis = analyzeDrawdown([
|
|
53
|
+
* { timestamp: 1700000000, value: 1.00 },
|
|
54
|
+
* { timestamp: 1700086400, value: 1.05 },
|
|
55
|
+
* { timestamp: 1700172800, value: 0.95 },
|
|
56
|
+
* { timestamp: 1700259200, value: 1.10 },
|
|
57
|
+
* ]);
|
|
58
|
+
* // analysis.maxDrawdown ~= 9.52 (from 1.05 down to 0.95)
|
|
59
|
+
* ```
|
|
60
|
+
*/
|
|
61
|
+
export declare function analyzeDrawdown(priceHistory: PricePoint[]): DrawdownAnalysis;
|
|
62
|
+
//# sourceMappingURL=drawdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drawdown.d.ts","sourceRoot":"","sources":["../../src/utils/drawdown.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,mBAAmB,EAAE,MAAM,CAAC;IAC5B,wEAAwE;IACxE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,sEAAsE;IACtE,eAAe,EAAE,MAAM,CAAC;IACxB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,kDAAkD;IAClD,WAAW,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,aAAa,EAAE,MAAM,CAAC;IACtB,sDAAsD;IACtD,eAAe,EAAE,MAAM,CAAC;CACzB;AAgGD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,UAAU,EAAE,GAAG,gBAAgB,CA0C5E"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Drawdown Analysis Utility
|
|
3
|
+
*
|
|
4
|
+
* Provides drawdown analysis for DeFi vault price history using a
|
|
5
|
+
* running-maximum algorithm. Calculates maximum drawdown, duration,
|
|
6
|
+
* recovery time, and current drawdown from all-time high.
|
|
7
|
+
*/
|
|
8
|
+
/** Seconds in one day, used for timestamp-to-days conversion */
|
|
9
|
+
const SECONDS_PER_DAY = 86400;
|
|
10
|
+
/**
|
|
11
|
+
* Returns a zero-valued DrawdownAnalysis, used when input data is insufficient.
|
|
12
|
+
*/
|
|
13
|
+
function createEmptyAnalysis() {
|
|
14
|
+
return {
|
|
15
|
+
maxDrawdown: 0,
|
|
16
|
+
maxDrawdownDuration: 0,
|
|
17
|
+
recoveryTime: null,
|
|
18
|
+
currentDrawdown: 0,
|
|
19
|
+
peakValue: 0,
|
|
20
|
+
troughValue: 0,
|
|
21
|
+
peakTimestamp: 0,
|
|
22
|
+
troughTimestamp: 0,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Initialize drawdown tracking state from the first data point.
|
|
27
|
+
*
|
|
28
|
+
* @param first - The first price point in the sorted history
|
|
29
|
+
* @returns Initial drawdown state
|
|
30
|
+
*/
|
|
31
|
+
function initializeState(first) {
|
|
32
|
+
return {
|
|
33
|
+
runningPeak: first.value,
|
|
34
|
+
runningPeakTimestamp: first.timestamp,
|
|
35
|
+
maxDrawdownPct: 0,
|
|
36
|
+
maxDrawdownPeakValue: first.value,
|
|
37
|
+
maxDrawdownPeakTimestamp: first.timestamp,
|
|
38
|
+
maxDrawdownTroughValue: first.value,
|
|
39
|
+
maxDrawdownTroughTimestamp: first.timestamp,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Process a single price point against the current drawdown state.
|
|
44
|
+
* Updates running peak and max drawdown if a new worst drawdown is found.
|
|
45
|
+
*
|
|
46
|
+
* @param state - Current drawdown tracking state (mutated in place)
|
|
47
|
+
* @param point - The price point to process
|
|
48
|
+
*/
|
|
49
|
+
function processPoint(state, point) {
|
|
50
|
+
if (point.value >= state.runningPeak) {
|
|
51
|
+
state.runningPeak = point.value;
|
|
52
|
+
state.runningPeakTimestamp = point.timestamp;
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const drawdownPct = ((state.runningPeak - point.value) / state.runningPeak) * 100;
|
|
56
|
+
if (drawdownPct > state.maxDrawdownPct) {
|
|
57
|
+
state.maxDrawdownPct = drawdownPct;
|
|
58
|
+
state.maxDrawdownPeakValue = state.runningPeak;
|
|
59
|
+
state.maxDrawdownPeakTimestamp = state.runningPeakTimestamp;
|
|
60
|
+
state.maxDrawdownTroughValue = point.value;
|
|
61
|
+
state.maxDrawdownTroughTimestamp = point.timestamp;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Find the recovery timestamp after the max drawdown trough.
|
|
66
|
+
* Recovery occurs when the price reaches or exceeds the peak that preceded the drawdown.
|
|
67
|
+
*
|
|
68
|
+
* @param sorted - Time-sorted price history
|
|
69
|
+
* @param troughTimestamp - Timestamp of the max drawdown trough
|
|
70
|
+
* @param peakValue - The peak value that must be recovered to
|
|
71
|
+
* @returns Recovery timestamp, or null if recovery has not occurred
|
|
72
|
+
*/
|
|
73
|
+
function findRecoveryTimestamp(sorted, troughTimestamp, peakValue) {
|
|
74
|
+
for (const point of sorted) {
|
|
75
|
+
if (point.timestamp > troughTimestamp && point.value >= peakValue) {
|
|
76
|
+
return point.timestamp;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Analyze drawdown characteristics from a vault's price history.
|
|
83
|
+
*
|
|
84
|
+
* Uses a running-maximum algorithm to efficiently compute:
|
|
85
|
+
* - Maximum drawdown (peak-to-trough decline as a percentage)
|
|
86
|
+
* - Drawdown duration (time from peak to trough)
|
|
87
|
+
* - Recovery time (time from trough back to a new high)
|
|
88
|
+
* - Current drawdown from the all-time high
|
|
89
|
+
*
|
|
90
|
+
* @param priceHistory - Array of timestamp/value pairs (need not be sorted)
|
|
91
|
+
* @returns Complete drawdown analysis, or zero-valued result if fewer than 2 data points
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```typescript
|
|
95
|
+
* const analysis = analyzeDrawdown([
|
|
96
|
+
* { timestamp: 1700000000, value: 1.00 },
|
|
97
|
+
* { timestamp: 1700086400, value: 1.05 },
|
|
98
|
+
* { timestamp: 1700172800, value: 0.95 },
|
|
99
|
+
* { timestamp: 1700259200, value: 1.10 },
|
|
100
|
+
* ]);
|
|
101
|
+
* // analysis.maxDrawdown ~= 9.52 (from 1.05 down to 0.95)
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
export function analyzeDrawdown(priceHistory) {
|
|
105
|
+
if (priceHistory.length < 2) {
|
|
106
|
+
return createEmptyAnalysis();
|
|
107
|
+
}
|
|
108
|
+
const sorted = [...priceHistory].sort((a, b) => a.timestamp - b.timestamp);
|
|
109
|
+
const state = initializeState(sorted[0]);
|
|
110
|
+
for (let i = 1; i < sorted.length; i++) {
|
|
111
|
+
processPoint(state, sorted[i]);
|
|
112
|
+
}
|
|
113
|
+
const lastPoint = sorted[sorted.length - 1];
|
|
114
|
+
const allTimeHigh = sorted.reduce((max, p) => (p.value > max ? p.value : max), sorted[0].value);
|
|
115
|
+
const currentDrawdown = allTimeHigh > 0 ? ((allTimeHigh - lastPoint.value) / allTimeHigh) * 100 : 0;
|
|
116
|
+
const maxDrawdownDuration = (state.maxDrawdownTroughTimestamp - state.maxDrawdownPeakTimestamp) / SECONDS_PER_DAY;
|
|
117
|
+
const recoveryTimestamp = findRecoveryTimestamp(sorted, state.maxDrawdownTroughTimestamp, state.maxDrawdownPeakValue);
|
|
118
|
+
const recoveryTime = recoveryTimestamp !== null
|
|
119
|
+
? (recoveryTimestamp - state.maxDrawdownTroughTimestamp) / SECONDS_PER_DAY
|
|
120
|
+
: null;
|
|
121
|
+
return {
|
|
122
|
+
maxDrawdown: state.maxDrawdownPct,
|
|
123
|
+
maxDrawdownDuration,
|
|
124
|
+
recoveryTime,
|
|
125
|
+
currentDrawdown,
|
|
126
|
+
peakValue: state.maxDrawdownPeakValue,
|
|
127
|
+
troughValue: state.maxDrawdownTroughValue,
|
|
128
|
+
peakTimestamp: state.maxDrawdownPeakTimestamp,
|
|
129
|
+
troughTimestamp: state.maxDrawdownTroughTimestamp,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=drawdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drawdown.js","sourceRoot":"","sources":["../../src/utils/drawdown.ts"],"names":[],"mappings":"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"}
|
|
@@ -57,7 +57,9 @@ export interface VaultForOptimization {
|
|
|
57
57
|
export declare function calculateEqualWeight(vaults: VaultForOptimization[], totalValueUsd: number): PortfolioPosition[];
|
|
58
58
|
/**
|
|
59
59
|
* Calculate risk-parity allocation strategy
|
|
60
|
-
* Allocates based on inverse
|
|
60
|
+
* Allocates based on inverse volatility (lower volatility = higher allocation)
|
|
61
|
+
* Uses market risk (volatility) rather than composite risk score for proper
|
|
62
|
+
* risk parity — the goal is to equalize each asset's risk contribution to the portfolio.
|
|
61
63
|
*/
|
|
62
64
|
export declare function calculateRiskParity(vaults: VaultForOptimization[], totalValueUsd: number): PortfolioPosition[];
|
|
63
65
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portfolio-optimization.d.ts","sourceRoot":"","sources":["../../src/utils/portfolio-optimization.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGvD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,KAAK,EAAE,oBAAoB,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,cAAc,GAAG,aAAa,GAAG,YAAY,GAAG,cAAc,CAAC;IACzE,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAC/B,OAAO,EAAE;QACP,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,CAAC;QACpB,oBAAoB,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,eAAe,EAAE,OAAO,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,kBAAkB,CAAC;CACpC;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,oBAAoB,EAAE,EAC9B,aAAa,EAAE,MAAM,GACpB,iBAAiB,EAAE,CAgCrB;AAED
|
|
1
|
+
{"version":3,"file":"portfolio-optimization.d.ts","sourceRoot":"","sources":["../../src/utils/portfolio-optimization.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,16 +37,18 @@ export function calculateEqualWeight(vaults, totalValueUsd) {
|
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
39
|
* Calculate risk-parity allocation strategy
|
|
40
|
-
* Allocates based on inverse
|
|
40
|
+
* Allocates based on inverse volatility (lower volatility = higher allocation)
|
|
41
|
+
* Uses market risk (volatility) rather than composite risk score for proper
|
|
42
|
+
* risk parity — the goal is to equalize each asset's risk contribution to the portfolio.
|
|
41
43
|
*/
|
|
42
44
|
export function calculateRiskParity(vaults, totalValueUsd) {
|
|
43
45
|
// Guard: empty array
|
|
44
46
|
if (vaults.length === 0) {
|
|
45
47
|
return [];
|
|
46
48
|
}
|
|
47
|
-
//
|
|
48
|
-
const
|
|
49
|
-
const inverseRisks = vaults.map((v) => safeDivide(1, v.
|
|
49
|
+
// Use volatility for risk parity (market risk), not composite riskScore (operational risk)
|
|
50
|
+
const VOLATILITY_EPSILON = 0.01;
|
|
51
|
+
const inverseRisks = vaults.map((v) => safeDivide(1, v.volatility + VOLATILITY_EPSILON, 1));
|
|
50
52
|
const totalInverseRisk = inverseRisks.reduce((sum, r) => sum + r, 0);
|
|
51
53
|
// Guard: if all inverse risks sum to 0, fall back to equal weight
|
|
52
54
|
if (totalInverseRisk === 0) {
|
|
@@ -177,16 +179,18 @@ export function calculatePortfolioMetrics(positions, vaults, riskFreeRate = 2.0)
|
|
|
177
179
|
const weight = position.targetAllocation / 100;
|
|
178
180
|
return sum + vault.expectedApr * weight;
|
|
179
181
|
}, 0);
|
|
180
|
-
// Calculate portfolio risk
|
|
181
|
-
// Note: This
|
|
182
|
-
|
|
182
|
+
// Calculate portfolio risk using independent-asset approximation: sqrt(sum(w_i^2 * vol_i^2))
|
|
183
|
+
// Note: This assumes uncorrelated assets. True portfolio variance requires a covariance matrix,
|
|
184
|
+
// which is not yet available. This approximation understates risk vs the true value when assets
|
|
185
|
+
// are positively correlated (typical in DeFi), and overstates it when correlations are negative.
|
|
186
|
+
const portfolioRisk = Math.sqrt(vaults.reduce((sum, vault, index) => {
|
|
183
187
|
// Guard: check positions array bounds
|
|
184
188
|
const position = positions[index];
|
|
185
189
|
if (!position)
|
|
186
190
|
return sum;
|
|
187
191
|
const weight = position.targetAllocation / 100;
|
|
188
|
-
return sum + vault.volatility *
|
|
189
|
-
}, 0);
|
|
192
|
+
return sum + weight * weight * vault.volatility * vault.volatility;
|
|
193
|
+
}, 0));
|
|
190
194
|
// Calculate Sharpe ratio
|
|
191
195
|
const excessReturn = expectedReturn - riskFreeRate;
|
|
192
196
|
const sharpeRatio = safeDivide(excessReturn, portfolioRisk, 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portfolio-optimization.js","sourceRoot":"","sources":["../../src/utils/portfolio-optimization.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"portfolio-optimization.js","sourceRoot":"","sources":["../../src/utils/portfolio-optimization.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"risk-scoring.d.ts","sourceRoot":"","sources":["../../src/utils/risk-scoring.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,uBAAuB,EAAE,MAAM,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,yBAAyB,EAAE,MAAM,CAAC;IAClC,uBAAuB,EAAE,MAAM,CAAC;IAChC,2BAA2B,EAAE,MAAM,CAAC;IACpC,4BAA4B,EAAE,MAAM,CAAC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IAClD;;;;;OAKG;IACH,WAAW,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACvC;;;OAGG;IACH,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAE3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;CA+B3B,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAYpD;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAgB7F;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"risk-scoring.d.ts","sourceRoot":"","sources":["../../src/utils/risk-scoring.ts"],"names":[],"mappings":"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"}
|