Transaction Model: Normal Behavior Model - IBM/AMLSim GitHub Wiki
Here is a description of normal account transaction behavior models. Suspicious behavior models (AML typologies) are described here.
Implementations
The Java implementation of all normal transaction typologies (models) is in the src/amlsim/model/normal/
directory (amlsim.model.normal package)
except the Java file (src/amlsim/model/AbstractTransactionModel.java
) of base class (AbstractTransactionModel
).
AbstractTransactionModel.java
: The base class of all transaction models (including AML typology classes)SingleTransactionModel.java
: single transaction (single account sends money to another account)FanOutTransactionModel.java
: fan-out (single account distributes money to several accounts)FanInTransactionModel.java
: fan-in (single account receives money from several accounts)MutualTransactionModel.java
: bipartite (some accounts sends money to other accounts)ForwardTransactionModel.java
: stacked bipartitePeriodicalTransactionModel.java
: periodical transactions (single account repeatedly sends money to another account periodically)
1. Single Transaction
Implementation: SingleTransactionModel.java
- An account makes a transaction to one of neighboring accounts randomly only once.
- Example: Purchase of living goods, regular rent payments, other expensive merchandises such as cars
- The originator or beneficiary can be either individual (typed "I") or business (typed "B") account.
- The account initially has a certain amount of money in its account called "INIT_BALANCE" (e.g.$1000) - which is determined by the initial stage of the simulator. Initial amounts are determined randomly between specified amounts in the parameter file located at a file named "prop.ini" under the top directory of AMLSim.
TODO: We are planning to update this model to answer the following questions as the future work.
- In the case of individual persons, people purchase living goods every day with a debit card or credit card, send a living cost to their family with WIRE transaction on a monthly basis. There should be recurring behaviors.
- In the case of business accounts, the amount should be larger than individual accounts. In the case of car dealers, they buy used cars and re-sell them. Their transaction amount is larger and might be fluctuated based on their business situations.
- In summary, each transaction amount and transaction frequency vary depending on whether it is individual or business.
2. Fan-out
Implementation: FanOutTransactionModel.java
- A trusted account sends transactions to other accounts in his/her neighborhoods. The order of the beneficiary accounts is currently determined randomly.
- Example: A company distributes money to employees as the salary
- The originator or beneficiary can be an individual (typed "I") or a business account (typed "B").
- All transaction amounts are similar (current balance of the originator divided by the number of neighbors).
3. Fan-in
Implementation: FanInTransactionModel.java
- A trusted account receives money from other accounts. The order of the originator accounts is currently determined randomly.
- Example 1: Citizens pay taxes or public utility charges to the government
- Example 2: Supporters donate some money to a public organization
4. Mutual
Implementation: MutualTransactionModel.java
- Two accounts make transactions to each other. It is near to a cycle transaction (one of alert transaction types), but each transaction does not fit the AML rules.
- Transaction dates may have a significant difference (e.g. one month).
- Example: Loan or debt.
5. Forward
Implementation: ForwardTransactionModel.java
- When a (trusted) account receives money, it sends the same amount of money to another account immediately.
6. Periodical
Implementation: PeriodicalTransactionModel.java
- An account sends (almost) same amount of money to the same account periodically (e.g. one month).
- Ex. Allowance or salary.
- The originator and beneficiary should have close relationships such as family or co-workers.