graintrack ctrm system traders

Product Update: P&L by commodity and incoterms. Part #2

Let’s get back to the previous topic: how do we calculate the PNL if we don’t care which transaction refers to which transaction; we just have contracts for sale, and we ship something from warehouses, terminals, or directly. The previous part is here.


That said, the main division is the following question: whether the company needs to calculate the PNL of each transaction (of contract or supply chain), or it is enough to look at the result for the period alone, grouped by certain areas (basis of supply, culture, period).


This is how it works:



  1. We start calculating the sold volume for each basis and for each crop (through shipped logistics or bills of lading)
    → EXW – Date of the warehouse receipt
    → FCA – Date of shipment
    → CPT, DAT, DDP, DAP – Date of unloading
    → FOB, FAS, CIF, CFR, CIP – Date of bill of lading
  2. Then we subtract from this all the associated costs of delivery and bringing the price to the sale basis, as well as the purchase price, taking VAT into account.
  3. Next we calculate the open balance of contracts that still need to be purchased or sold on each basis.
  4. Taking this open balance, we charge the market price, obtaining the current state of the market, which allows us to calculate the PNL at the expected value.


In addition, there is also a separate item for washout contracts, in order to separate them from the total amount.




Another feature of the report is the ability to work with “tolerance” meaning we look at the volume of the contract and we can add or subtract a certain part of the volume according to the terms of the contract, which can also affect the PNL. Take a look at this example:

Contract volume is 5000 tons, % tolerance is 5%, if the tolerance option is “minus” then the contract volume is not 5000 tons, but 5000 tons + (5000 * (-5)) = 4750 tons.

Having reviewed the whole picture, you can always dive down to the level of detail: which contracts are closed, which are paid, which are under execution, for which we have a plus and for which we have a minus.




Thus, we build a report for each month, for each crop and for each delivery basis, which is divided into a “closed” part and an open part (which can be adjusted).


At the same time, this report works with different currencies: each shipment can be converted into a single currency based on its own unique rate, or the latest rate at the time of payment, or at the time of the report.


This allows you to get the most up-to-date PNL, even when not all the contracts are executed and invoices are paid.