fraudtwin.camouflage#

Fraud camouflage transformations.

Status: Stable

Classes#

fraudtwin.camouflage.CamouflagePlan

Resolved strengths for one generator family and scenario.

fraudtwin.camouflage.ResolvedCamouflage

Complete, deterministic and hashable M13 configuration.

Functions#

fraudtwin.camouflage.apply_camouflage

Return a stable per-scenario plan; no data or RNG is mutated.

fraudtwin.camouflage.resolve_camouflage

Resolve global, family, and leaf M13 controls without consuming RNG.

fraudtwin.camouflage.transform_generated_data

Apply M13 as a post-generation, invariant-preserving transformation.

Detailed API#

Deterministic camouflage resolution and transformations.

class fraudtwin.camouflage.CamouflagePlan(**data)[source][source]

Bases: BaseModel

Resolved strengths for one generator family and scenario.

Parameters:
  • family (str)

  • scenario (str)

  • feature_strengths (dict[str, float])

  • relation_strengths (dict[str, float])

  • cohort (dict[str, object])

model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'frozen': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class fraudtwin.camouflage.ResolvedCamouflage(**data)[source][source]

Bases: BaseModel

Complete, deterministic and hashable M13 configuration.

Parameters:
  • enabled (bool)

  • resolver_version (str)

  • source_namespace (str | None)

  • requested (dict[str, object])

  • resolved_global (dict[str, float])

  • resolved_families (dict[str, dict[str, object]])

  • cohort (dict[str, object])

  • effective_configuration_hash (str)

model_config: ClassVar[ConfigDict] = {'extra': 'forbid', 'frozen': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

fraudtwin.camouflage.apply_camouflage(resolved, family, scenario)[source][source]

Return a stable per-scenario plan; no data or RNG is mutated.

Return type:

CamouflagePlan

Parameters:
fraudtwin.camouflage.resolve_camouflage(config)[source][source]

Resolve global, family, and leaf M13 controls without consuming RNG.

Return type:

ResolvedCamouflage

Parameters:

config (SimulationRunConfig)

fraudtwin.camouflage.transform_generated_data(config, entities, profiles, payments, events, ledger_entries, records, memberships, campaigns, patterns, evidence)[source][source]

Apply M13 as a post-generation, invariant-preserving transformation.

Return type:

tuple[tuple[Payment, ...], tuple[PaymentEvent, ...], tuple[LedgerEntry, ...], tuple[FraudRecord, ...], tuple[GraphCampaignMembership, ...], tuple[GraphCampaign, ...], tuple[GraphPattern, ...], tuple[GraphEvidence, ...], dict[str, object]]

Parameters:
  • config (SimulationRunConfig)

  • entities (EntityDataset)

  • profiles (tuple[BehaviorProfile, ...])

  • payments (tuple[Payment, ...])

  • events (tuple[PaymentEvent, ...])

  • ledger_entries (tuple[LedgerEntry, ...])

  • records (tuple[FraudRecord, ...])

  • memberships (tuple[GraphCampaignMembership, ...])

  • campaigns (tuple[GraphCampaign, ...])

  • patterns (tuple[GraphPattern, ...])

  • evidence (tuple[GraphEvidence, ...])