← Back to examples

Hedge Flow Analysis

Combine impulse-curve and charm-integral analytics for one expiration.

Compute the Hedge Impulse Curve

curve := hedgeflow.ComputeHedgeImpulseCurve(
  canonicalExposure,
  callSurface,
  hedgeflow.HedgeImpulseConfig{
    RangePercent:       3,
    StepPercent:        0.05,
    KernelWidthStrikes: 2,
  },
  time.Now().UnixMilli(),
)

fmt.Println("Regime:", curve.Regime)
fmt.Println("Impulse at spot:", curve.ImpulseAtSpot)
for _, zc := range curve.ZeroCrossings {
  fmt.Println("Flip level:", zc.Price, zc.Direction)
}

Compute the Charm Integral

charm := hedgeflow.ComputeCharmIntegral(
  canonicalExposure,
  hedgeflow.CharmIntegralConfig{TimeStepMinutes: 15},
  time.Now().UnixMilli(),
)

fmt.Println("Minutes to expiry:", charm.MinutesRemaining)
fmt.Println("Total charm to close:", charm.TotalCharmToClose)
fmt.Println("Direction:", charm.Direction)

Full Combined Analysis

analysis := hedgeflow.AnalyzeHedgeFlow(
  canonicalExposure,
  callSurface,
  hedgeflow.HedgeImpulseConfig{},
  hedgeflow.CharmIntegralConfig{},
  time.Now().UnixMilli(),
)

fmt.Println("Market regime:", analysis.RegimeParams.Regime)
fmt.Println("Impulse regime:", analysis.ImpulseCurve.Regime)
fmt.Println("Charm direction:", analysis.CharmIntegral.Direction)