ia_aggr_mat_2
1. Description
The IA_aggr_mat_2 program takes bank account data and turns it into maturity reports.
It reads account balances, interest details, cashflows, currencies, and business rules. It then groups similar accounts together and produces files that show the total principal, interest rate, and spread for different maturity periods.
In simple terms: it converts detailed account data into ready-to-use maturity and repricing reports.
2. Program location
<installation_path>/ia_aggr_mat_2
3. Screen Configuration
3.1 File configuration
Here, enter the base input file path and additional inputs required for the setup.

3.1.1 Additional Input selection 🔗
| # | File | Type | Description | Required | Default value | Example |
|---|---|---|---|---|---|---|
| 1 | Exchange_Rate | File_path | Contains currency conversion rates used to convert foreign currency accounts into local | true | N/A | {M_IN002} (this placeholder will get replaced by the actual file path like test-bed/M_IN002.json) Note: We can directly provide the actual file path here. |
| 2 | Excel File | File_path | Contains benchmark interest rates used for spread calculations. | true | N/A | Placeholder will automatically get replaced by the actual file path like test-bed/example.xlsx |
| 3 | Tenor File | File_path | Reference table used to derive account contract duration (tenor) from account dates. | true | N/A | placeholder will be replaced automatically by the actual file path of the tenor file like IA_LLG_TENOR.txt |
| 4 | Rule Selection | File_path | Path to the rule file used for aggregation. Provide a rule-file path, not a numeric rule_id. | true | N/A | {M_IN004}; the placeholder is replaced with the rule file path, for example test-bed/IA_RULES.txt. You can also provide the file path directly. |
3.2 Required Field Mapping

| # | File | Type | Description | Required | Default value | Example |
|---|---|---|---|---|---|---|
| 1 | curr_code | String | Currency code of the account | true | N/A | "KES" , "USD" |
| 2 | next_repr_date | Date | Timestamp of when the interest rate will reset | true | N/A | 30-06-2024 |
| 3 | req_freq | Number of months | Frequency of interest rate reset | true | N/A | 1 , 12 |
| 4 | intt_rate | Interest rate (%) | Effective Interest rate applied to account balance | true | N/A | 7.5 , 12 |
| 5 | cashflows | List | List of scheduled principal & interest payment events | true | N/A | principal amount , interest , date |
| 6 | mat_date | Maturity date | Final contract maturity date of the account | true | N/A | 30-06-2024 |
| 7 | ac_open_date | Date | The date when the account was activated | true | N/A | 30-06-2024 |
| 8 | bm_id | ID | Benchmark interest rate identifier, used for benchmark spread calculation | true | N/A | FIXED |
| 9 | npa_flag | String | Non-performing asset classification status | true | N/A | "STD" |
| 10 | last_repr_date | Date | Date when interest rate was last reset | true | N/A | 30-06-2024 |
| 11 | spread | Number | Margin percentage added or reduced from benchmark rate | false | 0.0 | 1.5 , 0.0 |
3.3 Process Arguments

| # | Parameters | Description | Required | Default value | Example |
|---|---|---|---|---|---|
| 1 | src_local_ccy | Source Local currency.🔗 | true | N/A | INR |
| 2 | display_local_ccy | Display Local Currency.🔗 | true | N/A | RUP |
| 3 | consol_ccy | Consolidated Currency.🔗 | true | N/A | INR |
| 4 | foreign_local_ccy | Foreign Local Currency | false | "" | USD |
| 5 | default_llg_code | If no rules are satisfied , then this llg code will be used | true | N/A | 08888 |
| 6 | default_overdue_llg_code | default value of overdue llg code | false | 9999 | 08888 |
| 7 | default_tenor_code | Represents the contract length / duration bucket (in days, months, or years) for an account. | false | 0 | 0888 |
| 8 | npa_flag_values | NPA values separated by commas. If any of these values is found in the provided NPA field (from the required field mapping), then the interest rate is treated as 0 and the next repricing date is treated as none for that account. | true | N/A | A123 , B123 |
| 9 | log_level | Log level to log the required logs from the program | false | info | error/warn/info/debug/trace/none |
| 10 | diagnostic_flag | Diagnostic Flag is to get info if diagnostic logs are required or not | false | false | True/False |
| 11 | is_account_level_exchange_rate | The flag that decides whether the account level exchange rate is provided in the input file or not. If provided, then we use exchange rate for conversion. | false | false | True/False |
| 12 | is_consolidated | Is consolidated flag is used to define the currency type of given amount in input field. If is_consolidated flag is set, then the amount given is of consolidated type else it is in the curr input type.🔗 | false | false | True/False |
| 13 | process_config (Auto generated) | Path to process configuration JSON file | true | N/A | test-bed/json/M_PC3189.json |
| 14 | as_on_date(Auto generated) | As on Date | true | N/A | 31-03-2023 |
| 15 | log_file(Auto generated) | Path for main log output | true | N/A | test-bed/logs/log.txt |
| 16 | diagnostics_log_file(Auto generated) | Path for diagnostic log output | true | N/A | test-bed/logs/diag-log.txt |
| 17 | is_amt_abs(Auto generated) | Flag to compute absolute amounts during cashflow aggregation | false | false | true/false |
Click ⬇️ to download the sample data.
4. Output
The program generates one summary file and fifteen detailed files. All output files are pipe-delimited text files.
For an output base name such as IA_td_1, the files are:
| Output file | Number of files | Description |
|---|---|---|
IA_td_1_smry.txt | 1 | Summary of each aggregated account group. |
IA_td_1_principal_amt_1.txt to IA_td_1_principal_amt_5.txt | 5 | Aggregated principal amount for each maturity period. |
IA_td_1_rate_1.txt to IA_td_1_rate_5.txt | 5 | Aggregated interest rate for each maturity period. |
IA_td_1_spread_rate_1.txt to IA_td_1_spread_rate_5.txt | 5 | Aggregated spread rate for each maturity period. |
4.1 Summary output format (File 1)
| # | Field | Field Name | Description | Example |
|---|---|---|---|---|
| 1 | as_on_date | As On Date | Report processing / calculation date (DD-MM-YYYY). | 31-03-2023 |
| 2 | llg_id | LLG ID | Line Level Grouping ID assigned by business rules. 🔗 | 8888 |
| 3 | currency | Currency | Currency code of the aggregated account group. | KES |
| 4 | exchange_rate | Exchange Rate | Exchange rate applied for currency conversion. | 1.0 |
| 5 | benchmark_id | Benchmark ID | Linked benchmark rate identifier (or FIXED). | FIXED |
| 6 | tenor | Tenor | Derived contract duration / tenor code. | 0 |
| 7 | spread | Spread | Weighted average interest rate spread for the group. | 0.0 |
| 8 | next_repricing_date | Next Repricing Date | Next interest rate reset/repricing date (DD-MM-YYYY). | 30-06-2023 |
| 9 | repricing_frequency | Repricing Frequency | Reset frequency in months (1, 3, 6, 12, or14 for fixed). | 1 |
| 10 | outstanding_amount | Outstanding Amount | Total aggregated outstanding principal balance. | 3000.00 |
| 11 | weighted_interest_rate | Weighted Interest Rate | Amount-weighted average interest rate (%) for the group. | 8.50 |
4.2 Aggregated Principal Amount Files (Files 2 to 6)
| # | Field | Field Name | Description | Example |
|---|---|---|---|---|
| 1 | as_on_date | As On Date | Report processing / calculation date (DD-MM-YYYY). | 31-03-2023 |
| 2 | llg_id | LLG ID | Line Level Grouping ID. 🔗 | 8888 |
| 3 | currency | Currency | Currency code of the account group. | KES |
| 4 | exchange_rate | Exchange Rate | Exchange rate applied. | 1.0 |
| 5 | benchmark_id | Benchmark ID | Benchmark rate identifier. | FIXED |
| 6 | tenor | Tenor | Account tenor code. | 0 |
| 7 | next_repricing_date | Next Repricing Date | Next repricing date (DD-MM-YYYY). | 30-06-2023 |
| 8 | repricing_frequency | Repricing Frequency | Repricing frequency code (e.g. 1 = Monthly). | 1 |
| 9 | value | Value | Aggregated principal cashflow amount maturing in Bucket N. | 1500.00 |
4.3 Aggregated Interest rate Files (Files 7 to 11)
| # | Field | Field Name | Description | Example |
|---|---|---|---|---|
| 1 | as_on_date | As On Date | Report processing date (DD-MM-YYYY). | 31-03-2023 |
| 2 | llg_id | LLG ID | Line Level Grouping ID. 🔗 | 8888 |
| 3 | currency | Currency | Currency code of the account group. | KES |
| 4 | exchange_rate | Exchange Rate | Exchange rate applied. | 1.0 |
| 5 | benchmark_id | Benchmark ID | Benchmark rate identifier. | FIXED |
| 6 | tenor | Tenor | Account tenor code. | 0 |
| 7 | next_repricing_date | Next Repricing Date | Next repricing date (DD-MM-YYYY). | 30-06-2023 |
| 8 | repricing_frequency | Repricing Frequency | Repricing frequency code. | 1 |
| 9 | value | Value | Amount-weighted interest rate (%) for Bucket $N$. | 8.50 |
4.4 Aggregated Spread Rate Files (Files 12 to 16)
| # | Field | Field Name | Description | Example |
|---|---|---|---|---|
| 1 | as_on_date | As On Date | Report processing date (DD-MM-YYYY). | 31-03-2023 |
| 2 | llg_id | LLG ID | Line Level Grouping ID. 🔗 | 8888 |
| 3 | currency | Currency | Currency code of the account group. | KES |
| 4 | exchange_rate | Exchange Rate | Exchange rate applied. | 1.0 |
| 5 | benchmark_id | Benchmark ID | Benchmark rate identifier. | FIXED |
| 6 | tenor | Tenor | Account tenor code. | 0 |
| 7 | next_repricing_date | Next Repricing Date | Next repricing date (DD-MM-YYYY). | 30-06-2023 |
| 8 | repricing_frequency | Repricing Frequency | Repricing frequency code. | 1 |
| 9 | value | Value | Amount-weighted interest spread rate for Bucket $N$. | 1.25 |
5. Notes
- All paths mentioned in the process configuration and metadata files must be available before the run starts.
- The account metadata must match the account data file; otherwise, the program cannot read the data correctly.
- The exchange-rate file must contain a rate for every currency that needs to be converted.
- Existing output files with the same name are replaced during a new run.
- The log file should be checked first if a run fails or produces unexpected output.
- No separate health-check report is generated by this program.