{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/dripmetrics-ai/json-schema/dripmetrics-ai-aerodrome-order-flow-concentration-result-schema.json",
  "title": "AerodromeOrderFlowConcentrationResult",
  "x-generated": "2026-11-06",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/dripmetrics-ai-openapi.json#/components/schemas/AerodromeOrderFlowConcentrationResult",
  "type": "object",
  "properties": {
    "metric": {
      "type": "string",
      "const": "order-flow-concentration"
    },
    "methodologyVersion": {
      "type": "string",
      "const": "aerodrome-order-flow-concentration-v1"
    },
    "pair": {
      "type": "string",
      "enum": [
        "B20:SPCX/USDC",
        "B20:MSTR/USDC",
        "B20:SNDK/USDC",
        "B20:MSFT/USDC",
        "B20:TSLA/USDC"
      ]
    },
    "exchange": {
      "type": "string",
      "const": "aerodrome"
    },
    "chain": {
      "type": "string",
      "const": "base"
    },
    "chainId": {
      "type": "integer",
      "const": 8453
    },
    "interval": {
      "type": "string",
      "const": "1h"
    },
    "intervalStart": {
      "type": "string",
      "format": "date-time"
    },
    "intervalEnd": {
      "type": "string",
      "format": "date-time"
    },
    "intervalEndSemantics": {
      "type": "string",
      "const": "exclusive"
    },
    "value": {
      "type": "number",
      "minimum": 0,
      "maximum": 1,
      "description": "HHI of absolute buy-minus-sell USDC flow across UTC-aligned minutes."
    },
    "units": {
      "type": "object",
      "properties": {
        "totalAbsoluteNetQuoteFlow": {
          "type": "string",
          "const": "USDC"
        },
        "shares": {
          "type": "string",
          "const": "fraction"
        },
        "effectiveFlowMinutes": {
          "type": "string",
          "const": "minutes"
        }
      },
      "required": [
        "totalAbsoluteNetQuoteFlow",
        "shares",
        "effectiveFlowMinutes"
      ],
      "additionalProperties": false
    },
    "components": {
      "type": "object",
      "properties": {
        "hhi": {
          "type": "number",
          "minimum": 0,
          "maximum": 1
        },
        "effectiveFlowMinutes": {
          "type": "number",
          "exclusiveMinimum": 0,
          "maximum": 60
        },
        "nonZeroFlowMinutes": {
          "type": "integer",
          "minimum": 1,
          "maximum": 60
        },
        "totalAbsoluteNetQuoteFlow": {
          "type": "string",
          "pattern": "^(?:0|[1-9]\\d*)(?:\\.\\d+)?$"
        },
        "top1MinuteShare": {
          "type": "number",
          "minimum": 0,
          "maximum": 1
        },
        "top5MinuteShare": {
          "type": "number",
          "minimum": 0,
          "maximum": 1
        },
        "top10MinuteShare": {
          "type": "number",
          "minimum": 0,
          "maximum": 1
        }
      },
      "required": [
        "hhi",
        "effectiveFlowMinutes",
        "nonZeroFlowMinutes",
        "totalAbsoluteNetQuoteFlow",
        "top1MinuteShare",
        "top5MinuteShare",
        "top10MinuteShare"
      ],
      "additionalProperties": false
    },
    "sampleSize": {
      "type": "object",
      "properties": {
        "poolExecutionCount": {
          "type": "integer",
          "minimum": 20
        },
        "transactionCount": {
          "type": "integer",
          "minimum": 1
        },
        "activeMinutes": {
          "type": "integer",
          "minimum": 1,
          "maximum": 60
        },
        "totalMinutes": {
          "type": "integer",
          "const": 60
        },
        "minimumExecutionCount": {
          "type": "integer",
          "const": 20
        }
      },
      "required": [
        "poolExecutionCount",
        "transactionCount",
        "activeMinutes",
        "totalMinutes",
        "minimumExecutionCount"
      ],
      "additionalProperties": false
    },
    "methodology": {
      "type": "object",
      "properties": {
        "minuteAlignment": {
          "type": "string",
          "const": "utc"
        },
        "flowMagnitude": {
          "type": "string",
          "const": "absolute_buy_minus_sell_usdc_per_minute"
        },
        "emptyMinuteTreatment": {
          "type": "string",
          "const": "zero_flow"
        },
        "crossPairComparison": {
          "type": "string",
          "const": "use_effective_flow_minutes"
        }
      },
      "required": [
        "minuteAlignment",
        "flowMagnitude",
        "emptyMinuteTreatment",
        "crossPairComparison"
      ],
      "additionalProperties": false
    },
    "quality": {
      "type": "object",
      "additionalProperties": true
    },
    "source": {
      "type": "object",
      "additionalProperties": true
    }
  },
  "required": [
    "metric",
    "methodologyVersion",
    "pair",
    "exchange",
    "chain",
    "chainId",
    "interval",
    "intervalStart",
    "intervalEnd",
    "intervalEndSemantics",
    "value",
    "units",
    "components",
    "sampleSize",
    "methodology",
    "quality",
    "source"
  ],
  "additionalProperties": false
}