FraudSociety: A Generative Agent-Based Society for the Financial-Fraud Economy
Organizations: Fudan University, Shanghai, China · University of Illinois Urbana-Champaign, Urbana, IL, USA
Abstract
Financial fraud caused over $15.9 billion in losses in the United States in 2025, according to the Federal Trade Commission~\citep{ftc2026databook}. Understanding such large-scale harm requires jointly modeling informational and financial dynamics. Yet existing simulators typically capture only one side of this interaction, leaving a gap in modeling how fraud unfolds in the real world. To bridge this gap, we introduce FraudSociety, the first LLM-agent-based simulator that jointly models these coupled dynamics. It integrates a dynamic social environment for information exposure and communication, persistent financial ledgers that preserve payment and loss histories, and a Need-Intent-Action architecture for civilian decision making. Fraudsters further adapt their communication and financial actions to individual interaction histories and ledger states, forming a closed feedback loop between the two dynamics. We validate FraudSociety across macro-level outcomes, micro-level behavior, and intervention effects. At the macro level, the simulated fraud outcomes closely match real-world patterns across multiple key statistics. At the micro level, it reproduces strong loss concentration, with the top 10% of victimization records accounting for 81.1% of total losses, consistent with Canadian Anti-Fraud Centre statistics~\citep{cafc2025annual}. Counter-fraud experiments further reveal variation across intervention strategies, with the best-performing personalized intervention reducing the repeat-payment rate from 49.4% to 10.9%. These results establish FraudSociety as both a high-fidelity simulator and a scalable testbed for evaluating anti-fraud strategies under diverse intervention conditions, thereby advancing research on financial fraud and its prevention.
Figures & tables
| System | Demographic profile | Social exposure | Private persuasion | Financial state | Repeated payment | Withdrawal feedback |
| TransXion | ✓ | ✗ | ✗ | ✓ | ✓ | ✗ |
| MultiAgent4Fraud | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ |
| FraudSociety | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
| System | HTL | ALS | FSH | ALR | QD |
| TransXion | 0.3722 | 0.9168 | – | 0.1793 | 0.4894 |
| MultiAgent4Fraud | 0.6211 | 0.6586 | 0.6017 | 0.5243 | 0.6014 |
| FraudSociety | 0.0893 | 0.6513 | 0.3012 | 0.1495 | 0.2978 |
| Need | Need coordinate All transfer | Transfers / 100 h Low high |
| Safety | 0.598 0.710 | 0.94 1.94 |
| Social | 0.630 0.712 | 1.03 1.91 |
Appendix figures & tables24 assets
Supplementary material from the paper’s appendix.
Appendix
| Main-paper reference | Appendix detail | Location |
| Overall design | Global hourly ordering, closed-loop state commit, and operator/civilian decision timing | Sections B and C |
| Fraudster agents | Campaign lifecycle, public outreach, active-dialogue follow-up, financial feedback, and execution gates | Section D |
| Civilian NIA model | Formal need update, active-need selection, intent routing, action generation, and the NIA ablation | Section E |
| Social-economic environment | Bounded observation construction, social exposure, financial ledger transitions, and surfaced-state ablation | Sections B and F |
| Counter-fraud evaluation | Exact intervention triggers, visible channels, information assumptions, and matched outcome accounting | Sections B and G |
| Micro-level validation | Victim–campaign accounting, contact-to-payment latency, escalation depth, and family-level pathways | Section H |
| Age bin | ACS adult target | Realized civilians | Realized share |
| 20–29 | 17.2% | 18 | 16.1% |
| 30–39 | 17.9% | 16 | 14.3% |
| 40–49 | 16.5% | 12 | 10.7% |
| 50–59 | 16.5% | 32 | 28.6% |
| 60–69 | 15.8% | 14 | 12.5% |
| 70–79 | 11.2% | 10 | 8.9% |
| Trait | Sampling target | Realized mean | Behavioral interpretation in civilian decisions |
| Openness | 5.46 | Higher values increase curiosity toward unfamiliar products, new platforms, and novel earning opportunities. | |
| Conscientiousness | 5.54 | Higher values increase verification, delayed commitment, and caution before major payments. | |
| Extraversion | 5.41 | Higher values increase social sharing, public engagement, and sensitivity to peer activity. | |
| Agreeableness | 5.17 | Higher values increase trust, compliance pressure, and difficulty refusing friend-like or authority-like requests. | |
| Neuroticism | 5.10 | Higher values increase sensitivity to urgency, loss avoidance, and fear-of-missing-out cues. |
| Condition | Channel, trigger, and intended mechanism |
| C0 | No warning. Baseline exposure and persuasion dynamics. |
| C1 | Platform private warning. Broadcast every 24 simulated hours; broad awareness with low personalization. |
| C2 | Public monitor annotation. Newly created posts are screened at the exposure surface. |
| C3 | Random peer-style comment. Five percent of civilians are sampled each step, producing sparse socially distributed warnings. |
| C4 | Endogenous peer warning. Civilian planning can interrupt persuasion through peer communication. |
| C5 | Oracle personalized warning. A transaction-specific private warning follows each executed fraud payment; the first-payment message is explicitly distinguished. |
| Variant | Mechanism state and effect |
| Full model | NIA enabled; ledger feedback enabled. Need-conditioned routing uses visible cumulative financial fields. |
| NIA ablation | NIA disabled; ledger feedback enabled. Need updates remain logged, but the route is sampled uniformly from the feasible set. |
| Ledger ablation | NIA enabled; ledger feedback disabled. Transfers remain executable and included in evaluation, but cumulative financial fields are withheld from civilian prompts. |
| Condition | Code-level trigger, visible mutation, and information assumption |
| C0 | No warning insertion or warning-specific prompt affordance. |
| C1 | At divisible by 24, pseudo-user 9999 inserts one fixed unread DM for every civilian; no classifier or victim-specific evidence is used. |
| C2 | After each new post, an independent LLM returns binary JSON from its first 400 characters. A flagged post receives an in-place [system warning] suffix; parse failure leaves it unchanged. |
| C3 | At every , the sampler seeded by selects six civilians. Each adds a generic warning beneath a uniformly selected post among the 50 most recent, irrespective of suspiciousness. |
| C4 | The ordinary civilian social planner may comment under a visible post, publish a warning post, or privately warn a visible user using only its bounded observation. |
| C5 | After each executed fraud payment, pseudo-user 9999 inserts a transaction-keyed personalized DM. It uses true family, amount, cumulative payment, count, and message cues; first-payment wording is distinguished. |
| Decision layer | Admissible action families | Principal execution gates | Persistent effects |
| Civilian routine | work/rest, nearby consumption, no action | time slot, work schedule, nearby POI, available balance | mobility, legal transactions, routine memory |
| Civilian social | post, comment, like, repost, follow, private reply, ignore/defer, mark suspicious, forward warning | visible post and message identifiers, reply grounding, current route, social availability | graph edges, public traces, dialogue state, warning exposure |
| Civilian financial | fraud payment, hold, withdrawal request | visible campaign contact, positive affordable amount, campaign state, no duplicate pending request | economy transaction and victim-campaign ledger |
| Operator social | create post, feed-driven outreach, active-dialogue follow-up, like/repost/follow, coordination task | phase, visible eligible target, active-conversation membership, cadence, per-step deduplication | public exposure, private contact, task/shared memory |
| Operator financial | pay return, pay withdrawal, delay withdrawal, request top-up/unlock, no action | existing paid victim, pending request, available campaign pool, lifecycle consistency | return/payout transaction, delay state, follow-up message |
| Subpolicy | Invocation | Principal observation | Deterministic post-LLM constraints |
| Lifecycle | At most once per simulated date | campaign age and phase, victims, raised and returned funds, outreach state, withdrawal pressure | valid phase label; monotone advance; nonempty economic evidence before peak; terminal collapse |
| Financial feedback | Credibility/peak; context change or 2–4 h cache expiry | campaign pool, paid-victim ledger, pending withdrawals, recent messages and financial events | existing paid victim or request; positive amount; available pool; valid lifecycle; no duplicate execution |
| Step 2A: public/outreach | When a phase-scaled outreach window is due or visible candidates exist | recent public posts, no more than 10 grounded candidates, warm and repeat leads, campaign and shared-task context | visible eligible target; no active dialogue; follow is Step 2A only; six-hour follow-to-DM warm-up for strangers; per-step deduplication |
| Step 2B: dialogue | Up to two rounds per tick when a civilian spoke last and reply cadence is due | bounded recent dialogue, account-state summary, campaign semantics, retrieved memory | target must belong to the active-conversation set; private-message action only; one sent message per target per tick |
| View | Main fields | Role in decision making |
| Profile | age, gender, education, occupation, work hours, Big-Five traits | Conditions sleep, routine intent, spending style, and social response. |
| Need state | satiety, energy, safety, social, active need, previous intent | Provides the NIA salience signal for route selection. |
| Economic state | balance, monthly income, payday recency, recent purchases | Grounds affordability, scarcity pressure, and routine consumption. |
| Social feed | post id, author id, content, likes, comments, recent comments, campaign metadata | Exposes public campaign posts and peer or monitor warning comments. |
| Inbox | message id, message type, family, source role, source channel, sender id, content, contact count | Exposes private campaign contact, warning messages, and follow-up messages. |
| Dialogue state | whether the civilian replied, whether the sender replied last, turn count, recent messages | Distinguishes ongoing private conversations from independent single-turn messages. |
| Schema group | Fields | Meaning |
| Campaign identity | campaign id, fraud family, victim age bin, interaction channel | Links every loss to a campaign, FTC-aligned age bin, fraud family, and contact channel. |
| Contact path | first/last contact time, total contact count, received message identifiers | Reconstructs exposure and private-contact history before payment. |
| Payment ledger | total invested, total returned, net loss, investment count, last payment amount | Records gross payments, returns, current net loss, and repeated-payment depth. |
| Withdrawal ledger | withdrawal attempts, pending amount, delayed count, completed count | Records recovery attempts, delayed exits, and payout feedback. |
| Provenance | prior legal transaction count, social-proof exposure count, policy and ablation modes | Stores experimental and pathway metadata for later stratified analysis. |
| Condition | Total positive loss ($) | Payment count | Repeat-payment rate | Withdrawal-attempt rate |
| C0 No warning | 144,999.50 | 623 | 49.4% | 8.6% |
| C1 Platform broadcast | 96,170.10 | 205 | 38.2% | 17.1% |
| C2 Monitor labels | 70,220.55 | 284 | 41.5% | 22.6% |
| C3 Random comments | 42,014.25 | 141 | 49.1% | 18.2% |
| C4 Peer warnings | 24,752.50 | 155 | 43.1% | 21.6% |
| C5 Oracle personalized | 17,916.00 | 117 | 10.9% | 47.5% |
| Fraud family | Records | Unique victims | Net loss ($) | Loss share | Median lag (h) | Median final contacts |
| Investment | 19 | 18 | 89,350.00 | 61.6% | 114 | 16 |
| Impersonation | 23 | 20 | 11,590.00 | 8.0% | 50 | 12 |
| Marketplace | 34 | 31 | 40,459.50 | 27.9% | 52 | 18.5 |
| Romance | 5 | 5 | 3,600.00 | 2.5% | 203 | 29 |
| All records | 81 | 63 | 144,999.50 | 100.0% | 72 | 16 |
| Simulation time | Information state and recorded reasoning | Financial state transition |
| Mar. 15, 05:00–Mar. 17, 04:00 | The civilian repeatedly asks about task content, the refund process, and the minimum advance. The operator describes phone-based tasks, an advance range of 315, payment through common mobile channels, and a return “generally within one hour.” | No fraud payment is executed during the 48-hour cultivation interval. |
| Mar. 17, 05:00 | The operator lowers the actionable threshold to $52. The civilian records that the amount is low enough to try. | First advance: $52. |
| Mar. 17, 08:00 | A $15 “first-task profit” notification is delivered together with a new-task invitation. | The ledger records a 37. |
| Mar. 17, 09:00–12:00 | Repeated notifications couple the realized small return with new tasks capped at $100. Before the fourth transfer, the civilian explicitly records that they had asked repeatedly and “received returns.” | Three further 352 within seven hours of entry. |
| Mar. 17, 13:00 | The civilian records that losses remain substantial despite returns and asks to reduce risk. | A $100 withdrawal is requested; no withdrawal payout is completed. |
| Mar. 17, 20:00–Mar. 18, 08:00 | Additional small return notices continue while the withdrawal remains unresolved. | Four later returns total 105.60. |
| Condition | Pre-intervention path and visible warning | Civilian response recorded in the trace | Observed financial implication |
| C1 | V13 repeatedly inquires about a part-time-work campaign, including whether a $50 trial is available. At hour 72, the fixed platform DM warns against transfers, deposits, unlocking fees, and guaranteed returns. | The same hourly decision records: “received a safety reminder and decided not to process the part-time-work invitation.” The campaign dialogue ends at that decision. | No payment to that campaign, or to any fraud campaign, is recorded over the 480-hour run. This is consistent with entry inhibition, although it is not an individual counterfactual estimate. |
| C2 | V75 repeatedly sees monitor-annotated investment posts. The appended label states that the content may involve fraud and advises against blind transfers. | Across hours 9–34, the reasons repeatedly state that the system marked the post suspicious and that the civilian would “observe first” or “handle it cautiously.” Actions remain low-cost likes rather than private inquiry. | No fraud payment is recorded for V75 over the full horizon. The trace is consistent with the label constraining escalation from public attention to private contact and payment. |
| C4 | V12 pays $500 once to an investment campaign. The civilian subsequently produces peer warnings based on the loss and observes an environment in which the platform is repeatedly reported. | At hour 419, the reason states: “the platform has been repeatedly reported and is risky; request withdrawal to reduce losses.” | The record remains at one payment and adds a $500 withdrawal request. No payout is completed, so C4 inhibits further escalation and induces exit seeking without guaranteeing recovery. |
| C5 | V5 pays a $100 verification deposit. The next-hour oracle DM identifies the named platform and amount, instructs the civilian to stop transferring, withdraw, preserve evidence, and verify through official channels. | In that hour, the civilian records that the anti-fraud reminder made the platform appear fraudulent, requests withdrawal, and marks the campaign suspicious. | The path stops after one payment and carries a $100 pending withdrawal. This is the clearest transaction-to-warning-to-exit chain, while its use of simulator truth confirms that C5 is an idealized upper bound. |
| Quantity | Range | Scale-defining operation |
| Unclipped relative error against the target tail share. | ||
| Mean seven-bin relative error, capped at two per bin. | ||
| Unclipped normalized log-ratio error; fallback value one when unavailable. | ||
| Total variation distance between age-share distributions. | ||
| Unclipped arithmetic mean of the four component distances. |
| Age | Median | |||
| 20–29 | 417 | 155,346 | 0.44 | 0.1735 |
| 30–39 | 450 | 203,764 | 0.40 | 0.2069 |
| 40–49 | 500 | 191,508 | 0.38 | 0.1847 |
| 50–59 | 520 | 175,898 | 0.35 | 0.1563 |
| 60–69 | 691 | 208,896 | 0.29 | 0.1538 |
| 70–79 | 1,000 | 159,550 | 0.24 | 0.0972 |
| Component | Simulation statistic | Target | Distance |
| HTL | tail share above 200 | 0.126 | 0.0893 |
| ALS | seven-bin simulated medians shown in Figure 11 (a) | FTC median profile | 0.6513 |
| FSH | investment-to-impersonation median gross-payment ratio | 11.50 | 0.3012 |
| ALR | seven-bin simulated unique-victim shares shown in Figure 11 (b) | FTC loss-report profile | 0.1495 |
| arithmetic mean of the four distances, without clipping | 0 | 0.2978 |
| System | Loss adapter | Age and family support | Composite convention in the main-paper table |
| TransXion | Sum flagged transaction amounts by source account; join person_age and retain positive aggregates | age available; no compatible individual-targeted fraud-family label | FSH is reported as unavailable. The displayed 0.4894 is the mean of the three available distances, , and is therefore a partial composite. |
| MultiAgent4Fraud | Aggregate successful victim-originating transfers to malicious agents by civilian profile in the archived evaluation output | profile age and assigned malicious-agent fraud category available to the audit adapter | Mean of all four reported distances: . |
| FraudSociety | Sum gross payments across campaigns once per civilian for HTL, ALS, and ALR; retain victim–campaign family records for FSH | explicit age, campaign identity, and fraud family | Four-component QD: . |
| Configuration group | Reported value | Implementation detail |
| Clock and horizon | 3,600 s/tick; 480 ticks; March 11, 2025 at 08:00 | identical 20-day calendar for every condition; daily and payday triggers use the simulated date and hour |
| Population | 112 civilians, 8 operators, 8 campaigns | first 112 civilians in the fixed profile file; two operators/campaigns per fraud family |
| Randomness | simulator seed 42 | fixes profile truncation, graph sampling, and random-warning sampling; it does not guarantee bitwise-identical remote inference |
| Social bounds | feed 10 posts; inbox 20 unread DMs | observations carry stable post, message, author, sender, campaign, and transaction identifiers for execution grounding |
| Initial graph | geographic ; rewire ; operator degree-weighted targets | relation labels and homophily/attachment additions are retained in the shared graph |
| LLM and sampling | Qwen3-14B; temperature 0 | validated JSON; recoverable syntax repair; invalid names, targets, and arguments rejected |
| Result | Condition-specific setting | Unified start | Run status |
| C0 | all C1–C5 warning switches disabled | Mar. 11, 08:00 | completed |
| C1 | USE_PLATFORM_WARNING=1 | Mar. 11, 08:00 | completed |
| C2 | USE_MONITOR_AGENT=1 | Mar. 11, 08:00 | completed |
| C3 | USE_RANDOM_WARNING=1 | Mar. 11, 08:00 | completed |
| C4 | USE_PEER_WARNING=1 | Mar. 11, 08:00 | completed |
| C5 | USE_C5_ORACLE_WARNING=1 | Mar. 11, 08:00 | completed |
| Artifact | Primary unit | Reproducibility role |
| social.db | ||
| social_dm_metadata.json | post, comment, private message, social trace | reconstruct visible public/private surfaces, authorship, warning insertions, and dialogue order |
| economy_ledger_v3.json | ||
| daily_fraud_transactions.jsonl | financial transaction | audit legal/fraud flags, payer, recipient, amount, step, and daily aggregation |
| victim_profiles.json | final victim–campaign record | compute gross payment, net loss, repeat-payment depth, contact timing, returns, and withdrawal outcomes |
| exposure_records.jsonl |
| Environment item | Experimental configuration |
| Operating system | Ubuntu 22.04.2 LTS; Linux 6.8.0-111-generic; x86_64 |
| CPU | 2 Intel Xeon Gold 6133 @ 2.50 GHz; 20 cores per socket and 2 threads per core, for 40 physical cores and 80 logical threads |
| System memory | 502 GiB |
| GPU | 8 NVIDIA A800 80GB PCIe; 81,920 MiB per device |
| GPU software stack | NVIDIA driver 535.309.01; driver-reported CUDA compatibility 12.2; locally installed CUDA Toolkit 11.5 |
| Python | CPython 3.13.11; project minimum Python version 3.11 |
Financial Fraud Detection
Financial fraud detection identifies suspicious transactions, accounts, claims, and behavior to prevent losses and guide investigation.
See all 135 papers