Create Security Debt Default Periods Automatically
Overview
There may be a requirement to shut off accruals for a security or position in Eagle Accounting for market or operational reasons. The most common drivers are going into default, being priced dirty in the market, or having an unsupported accrual calculation.
One option to support these scenarios is to set up the security with a fixed rate of 0%, which will generate accrued interest of zero on a daily basis. In cases where manipulating the market reference data is not feasible, another option is to put the security or position in default. This allows you to suppress accruals, amortization/accretion, and/or OID. Additional details are available in Understand Default Processing.
Putting a security in default is a two-step process that involves populating fields on the security master file (SMF) and adding Debt Default Periods. This can create challenges for automation as most clients do not have an existing source that can generate the Debt Default Period messages.
This document describes a local workaround that can be implemented to add Debt Default Periods automatically during security creation when the security is created simply by setting Default Indicator (1551) = Yes
. The process works when the security is set up via automation with a message or manually in Issue Viewer.
Assumptions
This process will create two Debt Default Periods with:
Add Periods Based On (1256) =
Security
Accounting Basis (21): one with
USTAX
and one withGAAP
Default Type (1551) =
Income
The same general process could be used with other elections for the fields above, but it would require adjustments to the logic and/or additional fields on the SMF panel.
Securities created in Reference Data Center will not invoke this process.
Implementation
Task 1: Copy Create Debt Default Period Panel to Lookups Folder
The Create Debt Default Period panel (pan-adefaulttype.htm) has logic to change the Event Type (55) between ADD_POS_DEFAULT and ADD_SEC_DEFAULT depending on whether a position-level or security-level record is being added. However, the default Submessage in the panel’s Global Properties, which is also the default Event Type, is ADD_POS_DEFAULT.
When a panel is called as a lookup (from another panel), the default Submessage (Event Type) is always used regardless of the panel logic and what is mapped to it. For this reason, we need a copy of the panel with a default Submessage of ADD_SEC_DEFAULT.
Open Web Panel Designer
Navigate to eagle > star > reference > Debt Default Periods
Right-click Add Debt Default Periods/Inhibit Earnings and select Copy
Navigate to eagle > star > LOOKUPS
Right-click LOOKUPS and select Paste as
Name the panel
pan-adefaulttype-sec.htm
Open the panel and change to Overlay edit mode
Click Global Properties…
Change Submessage to
ADD_SEC_DEFAULT
and click OKYou will receive a message asking if you want to change the default value for tag 55
Click Yes
Save your changes
Task 2: Copy List Debt Default Period Panel to Lookups Folder
Repeat the procedure from Task 1 above except:
In Step 3, right-click List Debt Default Periods/Inhibit Earnings and select Copy
In Step 6, name the panel
pan-ldefaulttype-sec.htm
Task 3: Update Panel for Adding Multi-Leg Swaps
Once we have a panel that can create the appropriate records when called as a lookup, we can add the logic to call that panel from the Multiple Leg Swap panel (pan-addsecmastermultilegswap.htm). There are also tweaks to allow Default Indicator (1551) and Default Date (10142) to be set independently on each leg when creating a swap manually via Issue Viewer. Currently the values are entered on the contract and then propagated down to the legs.
Open Web Panel Designer
Navigate to eagle > star > reference > Add/List Issue
Open Multiple Leg Swap and change to Overlay edit mode
Click the …LISTBOX tab
Under the Link ID column, locate 3931i
In the first Script section, remove L1551 and L10142 from the “Before” line below
Before:
IF :4590: != "C" THEN SET(L14,L1432,L38,L1551,L10142,L3997,L3998);
After:
IF :4590: != "C" THEN SET(L14,L1432,L38,L3997,L3998);
Under the Link ID column, locate 1551i
Comment out the whole existing Script section:
1551i !Script 1551i !Defentry :1551: 1551i !class global 1551i !Text Loop(:vi:, :0:1551:, :0:1551:) [ 1551i !Text Loop(:vl:, :0:1551:, :0:1551:) [ 1551i !Text IF Not(IsEmpty(:vi:)) AND :vi:!=:vl: THEN FORCE(:vl:,:vi:) 1551i !Text ]; 1551i !Text ]; 1551i !End
Copy and paste the code from the 1551i section of the Multiple Leg Swap tab of the attached spreadsheet before the Script we just commented out
Under the Link ID column, locate 10142i, which should immediately follow 1551i
Comment out the whole section:
10142i !Script 10142i !Defentry :10142: 10142i !class global 10142i !Text Loop(:vi:, :0:10142:, :0:10142:) [ 10142i !Text Loop(:vl:, :0:10142:, :0:10142:) [ 10142i !Text IF Not(IsEmpty(:vi:)) AND :vi:!=:vl: THEN FORCE(:vl:,:vi:) 10142i !Text ]; 10142i !Text ]; 10142i !End
Under the Link ID column, locate 7705i
Copy and paste the code from the 7705i section of the Multiple Leg Swap tab of the attached spreadsheet to the end
Save your changes
Task 4: Update Panel for Editing Multi-Leg Swaps
There are separate panels for adding and editing multi-leg swaps. If we want to be able to invoke this process for existing securities, we need to apply similar changes to Edit Multiple Leg Swap (pan-editsecmastermultilegswap.htm).
Open Web Panel Designer
Navigate to eagle > star > reference > Add/List Issue
Open Edit Multiple Leg Swap and change to Overlay edit mode
Click the …LISTBOX tab
Under the Link ID column, locate 3931i
In the fifth Script section, remove L1551 and L10142 from the “Before” line below
Before:
IF (RefRow(:vThisRef:)!=1) THEN SET(L14,L1432,L38,L1551,L10142,L3997,L3998);
After:
IF (RefRow(:vThisRef:)!=1) THEN SET(L14,L1432,L38,L3997,L3998);
Under the Link ID column, locate 1551i
Comment out the whole existing Script section:
1551i !Script 1551i !Defentry :1551: 1551i !class global 1551i !Text Loop(:vi:, :0:1551:, :0:1551:) [ 1551i !Text Loop(:vl:, :0:1551:, :0:1551:) [ 1551i !Text IF Not(IsEmpty(:vi:)) AND :vi:!=:vl: THEN FORCE(:vl:,:vi:) 1551i !Text ]; 1551i !Text ]; 1551i !End
Copy and paste the code from the 1551i section of the Edit Multiple Leg Swap tab of the attached spreadsheet before the Script we just commented out
Under the Link ID column, locate 10142i, which should immediately follow 1551i
Comment out the whole section:
10142i !Script 10142i !Defentry :10142: 10142i !class global 10142i !Text Loop(:vi:, :0:10142:, :0:10142:) [ 10142i !Text Loop(:vl:, :0:10142:, :0:10142:) [ 10142i !Text IF Not(IsEmpty(:vi:)) AND :vi:!=:vl: THEN FORCE(:vl:,:vi:) 10142i !Text ]; 10142i !Text ]; 10142i !End
Under the Link ID column, locate 7705i
Copy and paste the code from the 7705i section of the Edit Multiple Leg Swap tab of the attached spreadsheet to the end
Save your changes