Tradable is an of with functions , direct subtypes and keys that represents the parent of any denoting some product (financial or not) that can be traded.
An object of the Tradable type must generally contain all specification parameters that define the respective financial contract, in other words the rules that define its future cash flows under any conceivable market environment.
In the special case where the flag is TRUE, some of the contract details are left unspecified and become context dependent, but the above statement still applies because the respective dependency rules are still part of the specification parameters set in the Tradable object.
In principle, any Tradable can be transacted (bought or sold) in exchange for another Tradable, to which we refer as the Reference Tradable, with respect to that particular transaction.
The so called Market Price of a Tradable with respect to a given Reference Tradable at some time t is defined as the number of units of Reference Tradable that are actually exchanged at t for one unit of the original Tradable.
All Tradable objects contain the function that is capable of calculating the so called Model Price, which is a best guess of what the Market Price under certain modelling assumptions would be.
These modelling assumptions are an explicit input of the function Price and can be anything, although they will usually assume a perfect, liquid and arbitrage-free economy.
Every Tradable contains the properties , and .
Examples of Tradable types (i.e. types deriving from Tradable) are: , , etc.