{
    "ok": true,
    "_meta": {
        "validator": "oppl_complex_asset_json_validator",
        "validator_version": "1.1.9",
        "captured_at_utc": "2026-08-09T12:07:13+00:00",
        "captured_unix": 1786277233,
        "input_source": "url",
        "input_url": "https://oppl.ai/llms/runs/etf/IE00BG88WH84_balanced_latest.json",
        "source_assessment_hash": "b671050681ffb37132ad0428e92995a525d0344f42111741a30c71ea071e64fc",
        "agent_enabled": true,
        "agent_provider": "openrouter",
        "agent_model": "gpt-4.1-mini",
        "agent_temperature": 0,
        "agent_max_tokens": 1800,
        "warn_short_agent": true,
        "validator_modes": {
            "deterministic": "executed",
            "agent": "executed"
        }
    },
    "isin": "IE00BG88WH84",
    "classification": "complex",
    "policy_mode": "balanced",
    "decision_rule_applied": "balanced_etf_swap_complex_rule",
    "validator_verdict": "warn",
    "publishable": true,
    "confidence": 0.78,
    "issue_count": 1,
    "issues": [
        {
            "severity": "warn",
            "code": "non_decisive_hard_signal_without_direct_evidence_synthetic_replication",
            "message": "signals.synthetic_replication=true but no supporting_evidence quote directly substantiates that hard-complex feature. The signal is not used by decision_rule_applied and classification=complex is independently supported by: commodity_futures_roll, contango_backwardation, swaps."
        }
    ],
    "suggested_repairs": [
        "Remove or downgrade unsupported synthetic_replication, or add product-specific evidence for it. This is an evidence-quality repair and does not invalidate an independently supported complex classification."
    ],
    "deterministic_review": {
        "ok": true,
        "validator_type": "deterministic",
        "validator_verdict": "warn",
        "publishable": true,
        "confidence": 0.78,
        "issues": [
            {
                "severity": "warn",
                "code": "non_decisive_hard_signal_without_direct_evidence_synthetic_replication",
                "message": "signals.synthetic_replication=true but no supporting_evidence quote directly substantiates that hard-complex feature. The signal is not used by decision_rule_applied and classification=complex is independently supported by: commodity_futures_roll, contango_backwardation, swaps."
            }
        ],
        "suggested_repairs": [
            "Remove or downgrade unsupported synthetic_replication, or add product-specific evidence for it. This is an evidence-quality repair and does not invalidate an independently supported complex classification."
        ],
        "decisive_signal_evidence": {
            "checked": true,
            "decision_rule_signal": "swaps",
            "decision_rule_signal_true": true,
            "decision_rule_signal_supported": true,
            "decision_rule_matching_evidence_count": 3,
            "decision_rule_matches": [
                {
                    "index": 0,
                    "source": "PRIIPS_KID",
                    "evidence_signal": "synthetic_replication",
                    "quote": "The Fund invests in US Treasury Bills and uses total return swaps to deliver the Index performance."
                },
                {
                    "index": 1,
                    "source": "KIID",
                    "evidence_signal": "swaps",
                    "quote": "The Fund will gain indirect exposure to the Index Components through the use of swaps."
                },
                {
                    "index": 4,
                    "source": "KIID",
                    "evidence_signal": "derivatives_core_strategy",
                    "quote": "By entering into swap agreements with one or more banks whereby the Fund receives payments from the bank when the Index goes up and the Fund makes payments to the bank when the Index goes down. By using swaps, the Fund can efficiently track the upward or downward performance of the Index."
                }
            ],
            "true_hard_signals": [
                "synthetic_replication",
                "commodity_futures_roll",
                "contango_backwardation"
            ],
            "supported_hard_signals": [
                "commodity_futures_roll",
                "contango_backwardation"
            ],
            "unsupported_hard_signals": [
                "synthetic_replication"
            ],
            "checks": {
                "synthetic_replication": {
                    "signal_true": true,
                    "direct_evidence": false,
                    "matching_evidence_count": 0,
                    "decision_rule_uses_signal": false,
                    "matches": []
                },
                "commodity_futures_roll": {
                    "signal_true": true,
                    "direct_evidence": true,
                    "matching_evidence_count": 2,
                    "decision_rule_uses_signal": false,
                    "matches": [
                        {
                            "index": 2,
                            "source": "PRIIPS_KID",
                            "evidence_signal": "commodity_futures_roll",
                            "quote": "The Index provides broad, diversified exposure to commodity futures using a multi-factor strategy and aims to maximise the roll yield."
                        },
                        {
                            "index": 3,
                            "source": "PRIIPS_KID",
                            "evidence_signal": "contango_backwardation",
                            "quote": "On a daily basis, the Index applies a systematic factor-based weighting overlay to overweight or underweight each commodity (excluding gold and silver) within defined caps and floors, based on three key factors : roll yield (backwardation), slope momentum, and price momentum."
                        }
                    ]
                },
                "contango_backwardation": {
                    "signal_true": true,
                    "direct_evidence": true,
                    "matching_evidence_count": 1,
                    "decision_rule_uses_signal": false,
                    "matches": [
                        {
                            "index": 3,
                            "source": "PRIIPS_KID",
                            "evidence_signal": "contango_backwardation",
                            "quote": "On a daily basis, the Index applies a systematic factor-based weighting overlay to overweight or underweight each commodity (excluding gold and silver) within defined caps and floors, based on three key factors : roll yield (backwardation), slope momentum, and price momentum."
                        }
                    ]
                },
                "swaps": {
                    "signal_true": true,
                    "direct_evidence": true,
                    "matching_evidence_count": 3,
                    "decision_rule_uses_signal": true,
                    "matches": [
                        {
                            "index": 0,
                            "source": "PRIIPS_KID",
                            "evidence_signal": "synthetic_replication",
                            "quote": "The Fund invests in US Treasury Bills and uses total return swaps to deliver the Index performance."
                        },
                        {
                            "index": 1,
                            "source": "KIID",
                            "evidence_signal": "swaps",
                            "quote": "The Fund will gain indirect exposure to the Index Components through the use of swaps."
                        },
                        {
                            "index": 4,
                            "source": "KIID",
                            "evidence_signal": "derivatives_core_strategy",
                            "quote": "By entering into swap agreements with one or more banks whereby the Fund receives payments from the bank when the Index goes up and the Fund makes payments to the bank when the Index goes down. By using swaps, the Fund can efficiently track the upward or downward performance of the Index."
                        }
                    ]
                }
            }
        },
        "derivative_materiality": {
            "checked": true,
            "policy_mode": "balanced",
            "type": "ETF",
            "ucits": true,
            "physical_replication": false,
            "swaps_signal": true,
            "synthetic_replication": true,
            "derivatives_core_strategy": true,
            "derivatives_epm_only": false,
            "derivative_evidence_count": 3,
            "swap_evidence_count": 3,
            "permission_or_ancillary_evidence_count": 0,
            "core_derivative_evidence_count": 3,
            "only_permission_or_ancillary_derivative_evidence": false,
            "supported_independent_hard_signals": [
                "commodity_futures_roll",
                "contango_backwardation"
            ]
        },
        "detected_features": {
            "helo_or_core_options_overlay": false,
            "physical_replication": false,
            "has_epm_only_evidence": false,
            "has_core_derivatives_evidence": true,
            "has_generic_fdi_permission_evidence": false,
            "has_option_overlay_evidence": false
        }
    },
    "agent_review": {
        "ok": true,
        "model": "gpt-4.1-mini",
        "temperature": 0,
        "max_tokens": 1800,
        "usage": {
            "prompt_tokens": 4558,
            "completion_tokens": 346,
            "total_tokens": 4904,
            "raw": {
                "prompt_tokens": 4558,
                "completion_tokens": 346,
                "total_tokens": 4904,
                "cost": 0.0023768,
                "is_byok": false,
                "prompt_tokens_details": {
                    "cached_tokens": 0,
                    "cache_write_tokens": 0,
                    "audio_tokens": 0,
                    "video_tokens": 0
                },
                "cost_details": {
                    "upstream_inference_cost": 0.0023768,
                    "upstream_inference_prompt_cost": 0.0018232,
                    "upstream_inference_completions_cost": 0.0005536
                },
                "completion_tokens_details": {
                    "reasoning_tokens": 0,
                    "image_tokens": 0,
                    "audio_tokens": 0
                }
            }
        },
        "cost": {
            "estimated": false,
            "actual_provider_cost_available": true,
            "model": "gpt-4.1-mini",
            "prompt_tokens": 4558,
            "completion_tokens": 346,
            "total_tokens": 4904,
            "input_cost_usd": 0.0018232,
            "output_cost_usd": 0.0005536,
            "estimated_cost_usd": 0.0023768,
            "pricing_basis": "openrouter_usage_cost"
        },
        "review": {
            "validator_verdict": "warn",
            "publishable": true,
            "confidence": 0.88,
            "summary": "The classification as complex under the balanced_etf_swap_complex_rule is supported by direct product-specific evidence of swap usage and commodity futures roll exposure. All supporting_evidence signal labels correctly match their quotes. The hard-complex signal 'swaps' driving the decision_rule_applied is directly supported by multiple product-specific quotes. The derivatives_epm_only flag is false and does not conflict with derivatives_core_strategy=true. The synthetic_replication signal is true but lacks direct supporting evidence and is not used by the decision rule, constituting an unsupported additional hard signal. This does not invalidate the classification but is an evidence hygiene issue. No HELO or option overlay evidence is present, so no conflict arises with balanced mode policy. The client-facing JSON is publishable as-is. Suggested repair is to remove or downgrade the unsupported synthetic_replication signal or add direct product-specific evidence for it.",
            "issues": [
                {
                    "severity": "warn",
                    "code": "non_decisive_hard_signal_without_direct_evidence_synthetic_replication",
                    "message": "signals.synthetic_replication=true but no supporting_evidence quote directly substantiates that hard-complex feature. The signal is not used by decision_rule_applied and classification=complex is independently supported by: commodity_futures_roll, contango_backwardation, swaps."
                }
            ],
            "suggested_repairs": [
                "Remove or downgrade unsupported synthetic_replication, or add product-specific evidence for it. This is an evidence-quality repair and does not invalidate an independently supported complex classification."
            ]
        }
    }
}