# ExecutionAttribution

[All API schemas](/api-reference/schemas/)

<code>object</code> — Additional properties rejected

| Field | Required at this level | Type | Description and constraints |
| --- | --- | --- | --- |
| <code>attributionVersion</code> | Yes | Constant <code>execution-attribution-v1</code> | — |
| <code>proposalId</code> | Yes | <code>string</code> | — |
| <code>transactionHash</code> | Yes | [Hash](/api-reference/schemas/hash/) | — |
| <code>finalizedAt</code> | Yes | <code>string</code> | Format: <code>date-time</code> |
| <code>observationHorizonsComplete</code> | Yes | <code>boolean</code> | — |
| <code>sourceSimulationStudyId</code> | Yes | <code>string</code> | — |
| <code>frozenForecastArtifactHash</code> | Yes | [Hash](/api-reference/schemas/hash/) | — |
| <code>finalityEvidenceHash</code> | Yes | [Hash](/api-reference/schemas/hash/) | — |
| <code>reconciliationEvidenceHash</code> | Yes | [Hash](/api-reference/schemas/hash/) | — |
| <code>observationHorizons</code> | Yes | Array of <code>object</code> | — |
| <code>observationHorizons&#91;&#93;.kind</code> | Yes | <code>string</code> | Allowed: <code>IMMEDIATE</code>, <code>ADVERSE&#95;SELECTION</code>, <code>RECOVERY</code> |
| <code>observationHorizons&#91;&#93;.endedAt</code> | Yes | <code>string</code> | Format: <code>date-time</code> |
| <code>observationHorizons&#91;&#93;.evidenceHash</code> | Yes | [Hash](/api-reference/schemas/hash/) | — |
| <code>metrics</code> | Yes | Array of <code>object</code> | — |
| <code>metrics&#91;&#93;.metric</code> | Yes | <code>string</code> | Allowed: <code>SLIPPAGE</code>, <code>FEES</code>, <code>GAS</code>, <code>INVENTORY</code>, <code>CAPITAL&#95;EFFICIENCY</code>, <code>PRICE&#95;MOVEMENT</code> |
| <code>metrics&#91;&#93;.predicted</code> | Yes | [SignedAtomicAmount](/api-reference/schemas/signed-atomic-amount/) | — |
| <code>metrics&#91;&#93;.realized</code> | Yes | [SignedAtomicAmount](/api-reference/schemas/signed-atomic-amount/) | — |
| <code>metrics&#91;&#93;.residual</code> | Yes | [SignedAtomicAmount](/api-reference/schemas/signed-atomic-amount/) | — |
| <code>metrics&#91;&#93;.unit</code> | Yes | <code>string</code> | Allowed: <code>QUOTE&#95;ATOMIC</code>, <code>TOKEN&#95;ATOMIC</code>, <code>PIPS</code> |
| <code>adverseSelectionQuote</code> | Yes | [SignedAtomicAmount](/api-reference/schemas/signed-atomic-amount/) | — |
| <code>noActionCounterfactualQuote</code> | Yes | [SignedAtomicAmount](/api-reference/schemas/signed-atomic-amount/) | — |
| <code>realizedOutcomeQuote</code> | Yes | [SignedAtomicAmount](/api-reference/schemas/signed-atomic-amount/) | — |
| <code>calibrationResidualHash</code> | Yes | [Hash](/api-reference/schemas/hash/) | — |
| <code>evidenceHashes</code> | Yes | Array of [Hash](/api-reference/schemas/hash/) | — |

Nested required fields apply when their parent object or matching union branch is present. Named types link to their complete schema.

Exact definition: <code>#/components/schemas/ExecutionAttribution</code> in the [OpenAPI contract](/openapi/liquidity-operating-system-v2.openapi.json).