openpondai/agents/hyperliquid-delta-neutral
OpenTool app
typescript
import type { DeltaNeutralConfig } from "../config";
import type { DeltaNeutralMetrics } from "./types";
export function buildDeltaNeutralMetrics(params: {
config: DeltaNeutralConfig;
spotPrice: number;
perpPrice: number;
fundingRateBps: number | null;
spotBalance: number;
spotEntryNtl: number | null;
perpSize: number;
perpUnrealizedPnl: number | null;
}): DeltaNeutralMetrics {
const spotValueUsd = params.spotBalance * params.spotPrice;
const perpNotionalUsd = params.perpSize * params.perpPrice;
const deltaUsd = spotValueUsd + perpNotionalUsd;
const deltaPct =
params.config.targetNotionalUsd > 0
? (Math.abs(deltaUsd) / params.config.targetNotionalUsd) * 100
: null;
const basisBps =
params.spotPrice > 0
? ((params.perpPrice - params.spotPrice) / params.spotPrice) * 10_000
: null;
return {
spotValueUsd,
perpNotionalUsd,
deltaUsd,
deltaPct,
basisBps,
fundingRateBps: params.fundingRateBps,
spotBalance: params.spotBalance,
perpSize: params.perpSize,
spotEntryNtl: params.spotEntryNtl,
perpUnrealizedPnl: params.perpUnrealizedPnl,
spotUnrealizedPnl:
params.spotEntryNtl != null ? spotValueUsd - params.spotEntryNtl : null,
};
}