openpondai/agents/hyperliquid-delta-neutral
OpenTool app
typescript
import type {
HyperliquidEnvironment,
HyperliquidOrderResponse,
} from "opentool/adapters/hyperliquid";
export type DeltaNeutralAction =
| "delta-neutral-open"
| "delta-neutral-rebalance"
| "delta-neutral-hold"
| "delta-neutral-close";
export type DeltaNeutralMetrics = {
spotValueUsd: number;
perpNotionalUsd: number;
deltaUsd: number;
deltaPct: number | null;
basisBps: number | null;
fundingRateBps: number | null;
spotBalance: number;
perpSize: number;
spotEntryNtl: number | null;
perpUnrealizedPnl: number | null;
spotUnrealizedPnl: number | null;
};
export type PlannedOrder = {
kind: "spot" | "perp";
symbol: string;
side: "buy" | "sell";
size: string;
price: string;
reduceOnly?: boolean;
notionalUsd: number;
};
export type ResolvedPlannedOrder = PlannedOrder & {
quantity: number;
fillPrice: number;
referencePrice: number;
};
export type DeltaNeutralResult = {
ok: boolean;
action: DeltaNeutralAction;
environment: HyperliquidEnvironment;
walletAddress: string;
asset: string;
spotAsset: string;
perpAsset: string;
perpSymbol: string;
spotSymbol: string;
metrics: DeltaNeutralMetrics;
plannedOrders: PlannedOrder[];
executedOrders: PlannedOrder[];
orderResponses: HyperliquidOrderResponse[];
orderIds?: {
cloids: string[];
oids: string[];
};
skipped?: boolean;
reason?: string;
error?: string;
errorDetail?: unknown;
};
export type DeltaNeutralBacktestDecisionPoint = {
ts: string;
price: number;
signal: "buy" | "sell" | "hold" | "unknown";
targetSize: number;
budgetUsd: number;
indicators: Record<string, unknown>;
};
export type DeltaNeutralHistoricalFundingRatePoint = {
time: string;
rateBps: number;
};
export type DeltaNeutralBacktestReplayArtifacts = {
equityPoints: Array<{
ts: string;
equityUsd: number;
drawdownPct: number | null;
returnPct: number | null;
}>;
trades: Array<{
symbol: string;
side: "buy" | "sell";
quantity: number;
price: number;
notionalUsd: number;
feeUsd: number;
pnlUsd: number;
openedAt: string;
closedAt: string;
metadata: Record<string, unknown>;
}>;
metrics: {
totalReturnPct: number | null;
annualizedReturnPct: number | null;
maxDrawdownPct: number | null;
volatilityPct: number | null;
sharpe: number | null;
sortino: number | null;
winRatePct: number | null;
profitFactor: number | null;
expectancyUsd: number | null;
turnoverUsd: number | null;
avgHoldingMinutes: number | null;
totalFeesUsd: number;
slippageImpactUsd: number;
tradeCount: number;
metadata: Record<string, unknown>;
};
benchmarks?: Array<{
label: string;
equityPoints: Array<{
ts: string;
equityUsd: number;
returnPct: number | null;
}>;
totalReturnPct: number | null;
excessReturnPct: number | null;
}>;
};
export type DeltaNeutralBacktestDecisionSeriesResult = {
symbol: string;
timeframeStart: string;
timeframeEnd: string;
barsEvaluated: number;
resolution: string;
mode: "long-short";
indicator: "delta-neutral";
decisions: DeltaNeutralBacktestDecisionPoint[];
replay: DeltaNeutralBacktestReplayArtifacts;
};
export type DeltaNeutralPlanInput = {
config: import("../config").DeltaNeutralConfig;
spotPrice: number;
perpPrice: number;
fundingRateBps: number | null;
spotBalance: number;
spotEntryNtl: number | null;
perpSize: number;
perpUnrealizedPnl: number | null;
maxPerRunUsd: number;
};
export type DeltaNeutralExecutionPlan = {
action: DeltaNeutralAction;
metrics: DeltaNeutralMetrics;
spotOrderUsd: number;
perpOrderUsd: number;
skipped?: boolean;
reason?: string;
};
export type DeltaNeutralBacktestState = {
cashUsd: number;
spotBalance: number;
spotCostBasisUsd: number;
spotOpenedAt: Date | null;
perpSize: number;
perpEntryPrice: number | null;
perpOpenedAt: Date | null;
};
export type NormalizedHistoricalFundingRatePoint = {
tsMs: number;
time: string;
rateBps: number;
};