2Branches0Tags
GL
glucryptoSync production with master template updates
dc969c112 days ago54Commits
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; };