Citizens

MMA — Pricing Policy & Decision Console

Money Market Account repricing · Deposit Pricing & Analytics

Executable form

Compile and artifact

Compilation turns the authored rules into an immutable artifact: an intermediate representation, a read-only SQL projection, an externalised parameter table and explicit catalogue bindings. The digest below changes whenever the logic changes, which is what makes an execution reproducible.

Compilable

Artifact

art-7f0f963cd11c

v4 · CAT-2026.07

IR digest

bf02c11eb6569c09

Stable hash of logic and catalogue binding

Compiled rules

6

Including the default rule

Predicates

8

6 attributes bound

Artifact contents

The same artifact is used by execution, cohort analysis, trace and historical replay.

{
  "policy_id": "MMA-CUT-BASE",
  "policy_version": "v4",
  "catalogue_version": "cat-2026.07",
  "evaluation": {
    "semantics": "ORDERED_FIRST_MATCH",
    "determinism": "point_in_time_snapshot",
    "snapshot_binding": ":as_of_date"
  },
  "eligibility": [
    {
      "criterion": "E1",
      "name": "Product Scope",
      "expression": "product_code in (MMA-STD, MMA-PLUS, MMA-PREMIER)"
    },
    {
      "criterion": "E2",
      "name": "Account Status",
      "expression": "account_status = Active"
    },
    {
      "criterion": "E3",
      "name": "Line of Business",
      "expression": "line_of_business in (Consumer, Wealth)"
    },
    {
      "criterion": "E4",
      "name": "Household Type",
      "expression": "household_type ≠ Business"
    },
    {
      "criterion": "E5",
      "name": "Balance Exclusion",
      "expression": "balance_current >= 1,000"
    },
    {
      "criterion": "E6",
      "name": "Suppression List",
      "expression": "account_key not in suppression_list"
    }
  ],
  "rules": [
    {
      "ordinal": 1,
      "rule_id": "r-6s",
      "leaf": "no_action_pointer",
      "leaf_name": "No Action — Pointer Ineligible",
      "condition": {
        "group": {
          "semantics": "ALL_OF",
          "children": [
            {
              "predicate": {
                "attribute": "rate_pointer_eligible",
                "physical_column": "mma_acct_snap.rate_ptr_elig",
                "operator": "=",
                "value": false
              }
            }
          ]
        }
      }
    },
    {
      "ordinal": 2,
      "rule_id": "r-6z",
      "leaf": "relationship_hold",
      "leaf_name": "Relationship Hold — High Balance",
      "condition": {
        "group": {
          "semantics": "ALL_OF",
          "children": [
            {
              "predicate": {
                "attribute": "balance_current",
                "physical_column": "mma_acct_snap.bal_curr",
                "operator": ">=",
                "value": 250000
              }
            },
            {
              "group": {
                "semantics": "ANY_OF",
                "children": [
                  {
                    "predicate": {
                      "attribute": "relationship_tier",
                      "physical_column": "mma_hh_snap.rel_tier",
                      "operator": "=",
                      "value": "Private Bank"
                    }
                  },
                  {
                    "predicate": {
                      "attribute": "balance_avg_90",
                      "physical_column": "mma_acct_agg.bal_avg_90",
                      "operator": ">=",
                      "value": 200000
                    }
                  },
                  {
                    "predicate": {
                      "attribute": "relationship_balance",
                      "physical_column": "mma_hh_snap.rel_bal_total",
                      "operator": ">=",
                      "value": 500000
                    }
                  }
                ]
              }
            }
          ]
        }
      }
    },
    {
      "ordinal": 3,
      "rule_id": "r-72",
      "leaf": "small_cut",
      "leaf_name": "Small Cut Cohort",
      "condition": {
        "group": {
          "semantics": "ALL_OF",
          "children": [
            {
              "predicate": {
                "attribute": "rate_sensitivity",
                "physical_column": "mma_model_out.rate_sens_band",
                "operator": "=",
                "value": "Low"
              }
            }
          ]
        }
      }
    },
    {
      "ordinal": 4,
      "rule_id": "r-75",
      "leaf": "medium_cut",
      "leaf_name": "Medium Cut Cohort",
      "condition": {
        "group": {
          "semantics": "ALL_OF",
          "children": [
            {
              "predicate": {
                "attribute": "rate_sensitivity",
                "physical_column": "mma_model_out.rate_sens_band",
                "operator": "=",
                "value": "Medium"
              }
            }
          ]
        }
      }
    },
    {
      "ordinal": 5,
      "rule_id": "r-78",
      "leaf": "large_cut",
      "leaf_name": "Large Cut Cohort",
      "condition": {
        "group": {
          "semantics": "ALL_OF",
          "children": [
            {
              "predicate": {
                "attribute": "rate_sensitivity",
                "physical_column": "mma_model_out.rate_sens_band",
                "operator": "=",
                "value": "High"
              }
            }
          ]
        }
      }
    }
  ],
  "default_rule": {
    "leaf": "hold_default",
    "leaf_name": "Hold — No Action"
  },
  "parameters": [
    {
      "parameter": "p_r1_rate_pointer_eligible",
      "attribute": "Rate Pointer Eligible",
      "operator": "=",
      "value": "false",
      "effective_version": "v4"
    },
    {
      "parameter": "p_r2_balance_current",
      "attribute": "Current Balance",
      "operator": ">=",
      "value": "250000",
      "effective_version": "v4"
    },
    {
      "parameter": "p_r2_relationship_tier_2",
      "attribute": "Relationship Tier",
      "operator": "=",
      "value": "Private Bank",
      "effective_version": "v4"
    },
    {
      "parameter": "p_r2_balance_avg_90_3",
      "attribute": "90-Day Average Balance",
      "operator": ">=",
      "value": "200000",
      "effective_version": "v4"
    },
    {
      "parameter": "p_r2_relationship_balance_4",
      "attribute": "Relationship Balance",
      "operator": ">=",
      "value": "500000",
      "effective_version": "v4"
    },
    {
      "parameter": "p_r3_rate_sensitivity",
      "attribute": "Rate Sensitivity",
      "operator": "=",
      "value": "Low",
      "effective_version": "v4"
    },
    {
      "parameter": "p_r4_rate_sensitivity",
      "attribute": "Rate Sensitivity",
      "operator": "=",
      "value": "Medium",
      "effective_version": "v4"
    },
    {
      "parameter": "p_r5_rate_sensitivity",
      "attribute": "Rate Sensitivity",
      "operator": "=",
      "value": "High",
      "effective_version": "v4"
    }
  ],
  "leaves": [
    {
      "leaf": "no_action_pointer",
      "name": "No Action — Pointer Ineligible"
    },
    {
      "leaf": "relationship_hold",
      "name": "Relationship Hold — High Balance"
    },
    {
      "leaf": "small_cut",
      "name": "Small Cut Cohort"
    },
    {
      "leaf": "medium_cut",
      "name": "Medium Cut Cohort"
    },
    {
      "leaf": "large_cut",
      "name": "Large Cut Cohort"
    },
    {
      "leaf": "hold_default",
      "name": "Hold — No Action"
    }
  ],
  "ir_digest": "bf02c11eb6569c09",
  "artifact_id": "art-7f0f963cd11c"
}

Determinism

What guarantees that two runs of this artifact agree.

Evaluation semanticsORDERED_FIRST_MATCH
Snapshot binding:as_of_date = 2026-08-01
Catalogue versionCAT-2026.07
Artifact identifierart-7f0f963cd11c
IR digestbf02c11eb6569c09
Version statusDraft
Working version createdJul 28, 2026

An execution records the artifact identifier, the IR digest, the catalogue version and the snapshot date. Re-running the same four inputs must reproduce the same cohort counts, and any difference is therefore attributable to a recorded change.

Validation summary

Compilation is permitted, execution is not, while a blocking finding is open.

  • L1Well-formedpassed
  • L2Type, operator and domainpassed
  • L3Dead branches and subsumptionwarning
  • L4Exhaustive coveragepassed
  • L5Entitlement validationpassed
  • L6Empirical validationwarning
  • L7Point-in-time availabilitypassed
  • L8Attribute governance statepassed