Securitization is a financial process that can be used to consolidate a set of illiquid assets into a set of tradable securities. A common example of an illiquid asset would be a home mortgage, as one cannot be readily bought and sold. An example of a tradable asset is a stock or bond. This process can be useful for financial institutions that are looking to increase the liquidity of their assets and free up capital. This app leverages the IBM Blockchain Platform Starter Plan and provides a dashboard that allows users to create and view the relationship among assets, pools, investors, and securities.
Financial institutions that own too many long-term non-liquid assets and want to free up capital for new investments can benefit from securitization. Securitization provides a method to add liquidity to assets that cannot be readily bought or sold. The assets can be pooled together and divided up into securities, which can then be publicly traded. This also gives investors an alternative to riskier investments like stocks. Securities are more comparable to bonds, expect the holder receives monthly payments instead of a lump sum.
Securitization hasn’t been widely implemented partially because it’s a complex process, and also because it generally requires the input of many parties – creditors, underwriters, loan officers, etc. Blockchain can be used to provide more transparency, and standardize and automate many of the securitization processes. For example, smart contracts can be used to measure the investment risk of security pools, notify investors/creditors when a mortgage has gone delinquent, and determine the value of securities in real time.
In this code pattern, we will demonstrate securitization and show how this process can be tracked using a blockchain ledger. We’ll present an application using React.js, Express.js, and the Hyperledger Fabric SDK. This integration allows users to simulate a securitization process and understand how the various transactions can be handled on the blockchain.
When you have completed this code pattern, you will understand how to:
- Deploy a Hyperledger blockchain network on IBM Cloud
- Create and enroll an administrative client using the Hyperledger Node SDK
- Deploy and instantiate a smart contract to register assets, asset pools, securities, and investors
- A homebuyer leverages the services of a loan originator to secure financing for a home mortgage.
- The loan originator loads the application and submits requests to update the blockchain ledger state with a new asset.
- The request, handled by the Node.js Express back end, formats CRUD request into a JSON-RPC object and submits it to a Hyperledger peer as a transaction proposal. The request registers a mortgage with a value of 540,000 USD, an interest rate of 3.3 percent, and a credit score of 720. The credit score is used to calculate risk for potential investors.
- Peer uses an endorsement service to simulate the proposed transaction against the relevant smart contracts. This endorsement service confirms that the transaction is possible given the current state of the ledger. Examples of invalid proposals might be creating an asset that already exists or querying the state of an asset that does not exist.
- If the simulation is successful, the proposal is then signed by the peer’s endorser.
- The signed transaction is forwarded to an ordering service, which executes the transaction. In this case, the newly created asset would be placed in an asset pool.
- The updated state is committed to the blockchain ledger.
- The securitization UI queries the updated ledger state and renders tables with the updated information.
- If the asset pool has been split up into securities, an investor can buy and sell them. The security price should be updated every time there is a change to the ledger state.
- A creditor checks the ledger state to determine the risk of losses by late payments or mortgages going into default. If a significant change is found, the security credit rating will be recalculated by the creditor and updated in the ledger.
- Clone repository.
- Set up repository codebase locally or deploy to IBM Cloud.
- Create Watson services with IBM Cloud.
- Upload and instantiate chaincode.
- Start the application.
- Retrieve service credentials.
- Configure and run the application.