Futures with Negative Prices Processing Notes

Overview

Future Contracts (Futures) may sometimes require negative prices for trade processing and valuation purposes, such as during the week of April 20, 2020, when US West Texas Intermediate (WTI) crude oil hit historic lows. The price of the May 2020 WTI Future plunged into negative territory and closed at an unprecedented price of -37.63 on Monday of that week. The economic impacts of the COVID-19 pandemic effectively halted the global economy, and the demand for oil along with it, causing a massive supply glut. Oil wells worldwide continued to produce roughly 100 million barrels per day, literally leaving producers without facilities in which to store the oil and forcing some to fill tankers bound for nowhere. This resulted in extreme price declines that took prices into negative territory.

Eagle Accounting has support for Futures with negative prices, but local configuration changes are currently required to implement the functionality. This document outlines the required changes for booking trades and maintaining prices, which are used to calculate valuation and variation margin. It is intended for an experienced technical user who is familiar with Eagle's web panel technology. Our recommendation is to work with your Client Operations Manager or your Global Professional Services team.

Implementation

Changes are required for Add Issue Price, Change Issue Price, and the Future panels used by Book Trade. Ensure all code changes are applied in Overlay edit mode.

  • Column: Negative values allowed

  • Original value: NO or 0 (they are equivalent)

  • New Value: YES or 1 (they are equivalent)

Price: Add Issue Price

File: /eagle/star/reference/pan-addsecprice.htm

  • In the ...PANEL tab, set Negative values allowed = YES/1 for the seven (7) fields shown below

  • In the ...LISTBOX tab, add AND (left(:3931:,2) != "FT") to the 0i Link ID scripts for defentry :481:, :1846:, :1847:, :1850:, and :1845:

    • The end result should match what is shown below

0i

script



0i

defentry

:481:

0i

text

IF(left(:3931:,2) != "SW") AND (left(:3931:,2) != "FT") AND (:481: < 0) THEN ERR("Price Must Be Greater Than Zero");

0i

end



0i

script



0i

defentry

:1846:

0i

text

IF(left(:3931:,2) != "SW") AND (left(:3931:,2) != "FT") AND (:1846: < 0) THEN ERR("Bid Price Must Be Greater Then Zero");

0i

end



0i

script



0i

defentry

:1847:

0i

text

IF(left(:3931:,2) != "SW") AND (left(:3931:,2) != "FT") AND (:1847: < 0) THEN ERR("Ask Price Must Be Greater Then Zero");

0i

end



0i

script



0i

defentry

:1850:

0i

text

IF(left(:3931:,2) != "SW") AND (left(:3931:,2) != "FT") AND (:1850: < 0) THEN ERR("Mid Price Must Be Greater Then Zero");

0i

end



0i

script



0i

defentry

:1845:

0i

text

IF(left(:3931:,2) != "SW") AND (left(:3931:,2) != "FT") AND (:1845: < 0) THEN ERR("Last Traded Price Must Be Greater Then Zero");

0i

end



  • Click Save

Price: Change Issue Price

File: /eagle/star/reference/pan-changesecprice.htm

  • In the ...PANEL tab, set Negative values allowed = YES/1 for the eight (8) fields shown below

  • In the ...LISTBOX tab, add AND (left(:3931:,2) != "FT") to the 0i Link ID scripts for defentry :481:, :1846:, :1847:, :1850:, and :1845:

    • The end result should match what is shown below

0i

script



0i

defentry

:481:

0i

text

IF(left(:3931:,2) != "SW") AND (left(:3931:,2) != "FT") AND (:481: < 0) THEN ERR("Price Must Be Greater Than Zero");

0i

end



0i

script



0i

defentry

:1846:

0i

text

IF(left(:3931:,2) != "SW") AND (left(:3931:,2) != "FT") AND (:1846: < 0) THEN ERR("Bid Price Must Be Greater Then Zero");

0i

end



0i

script



0i

defentry

:1847:

0i

text

IF(left(:3931:,2) != "SW") AND (left(:3931:,2) != "FT") AND (:1847: < 0) THEN ERR("Ask Price Must Be Greater Then Zero");

0i

end



0i

script



0i

defentry

:1850:

0i

text

IF(left(:3931:,2) != "SW") AND (left(:3931:,2) != "FT") AND (:1850: < 0) THEN ERR("Mid Price Must Be Greater Then Zero");

0i

end



0i

script



0i

defentry

:1845:

0i

text

IF(left(:3931:,2) != "SW") AND (left(:3931:,2) != "FT") AND (:1845: < 0) THEN ERR("Last Traded Price Must Be Greater Then Zero");

0i

end



  • Click Save

Trade: Future with Variation Margin

File: /eagle/star/trade/pan-futurewvariationmargin.htm

  • In the ...PANEL tab, set Negative values allowed = YES/1 for the nine (9) fields shown below

  • In the ...LISTBOX tab, right-click and select Comment Row to disable the validation error shown below

  • Click Save

Trade: Futures without Variation Margin - Open Future

File: /eagle/star/trade/pan-futureopen.htm

  • In the ...PANEL tab, set Negative values allowed = YES/1 for the seven (7) fields shown below

  • In the ...LISTBOX tab, right-click and select Comment Row to disable the two validation errors shown below

     

Trade: Futures without Variation Margin - Close Future

File: /eagle/star/trade/pan-futureclose.htm

  • In the ...PANEL tab, set Negative values allowed = YES/1 for the seven (7) fields shown below

  • In the ...LISTBOX tab, right-click and select Comment Row to disable the two validation errors shown below

     

 

Known Issues

  1. Reporting: negative prices are not returned on the Variation Margin report. Zeroes are returned instead of the true negative values.

    1. Negative prices can be viewed correctly on the Holdings, Portfolio Valuation, and other position reports.

  2. Manual Cash Settlement: this issue only applies if Eagle's variation margin processing is turned off and an entity has Net Futures Positions (632) = Yes. If a position goes short (negative units) at a negative price, then is closed for a gain, you will receive this error when you attempt to settle the cash using Multiple Settlements Panel: ENGINE ERROR. Unbalanced ledger posting activity. Debits not equal credits. Check estar.log for more information.-- Event ID - D1MPJLKU9NFHB12I

    1. Cash can be settled correctly using Contract Cash.

    2. Fixed in V17.