Commodity Risk Management System

Project Category: Software

Come join us!

We’re here from 9:30am to 1:30pm MDT on April 13th 2021

About our project

This project’s goal is to create a fast and powerful risk management tool so commodity traders can easily visualize the risk of the options in their portfolio and make informed trading decisions. This system was custom made for the National Bank of Canada’s commodity traders, providing many commodity trading specific features far beyond what alternative option risk management systems provide. This includes real time portfolio analysis, as the system uses a live data feed to evaluate the overall portfolio risk as market conditions change. The system also provides commodity specific visualizations of the risk, including risk aggregations over different delivery dates, strike prices, currencies, and more. The system supports many option types and seamlessly integrates them together into a single cohesive view of the portfolio. Overall, this risk management system will provide traders with the edge in the market they need to make informed decisions in real time.

Meet our team

Yashharan Babra

I am currently in the final year of my software engineering degree. Before this year, I completed an internship at Pason Systems, over which I had the opportunity to rotate through several different teams to develop a wide array of skills as a software developer and gain a better understanding of my interests. I enjoy how software development allows me to combine my creativity, logical thinking, and problem solving skills together. I especially enjoy working on projects where I can see the direct impact of the work I have done, and thus web development is one of the many areas that I am interested in.

Kevin Brereton

I am the project manager for this system. Last year, I worked at the National Bank of Canada designing and implementing software for them. During that time, I created the ComOptionAnalytics ecosystem, which is a series of tools the commodity traders use for option analysis. This project is an extension of that work. In terms of skills, I really enjoy coding. It’s like a puzzle, with multiple moving pieces, which is enjoyable to solve. It is from that passion that I create high quality, soundly designed software. I also have plenty of experience working on various other projects, and I worked as a teacher for 2 years at Schulich Ignite. I have the most experience with JavaScript and Python, but I know many other programming technologies.

Nicole Caballero

I am currently finishing my final year as a Software Engineering student. During this time, I have completed a 16-month internship with IRISNDT focusing on web development and testing using current C#, JavaScript, and HTML/CSS coding practices. Working on this project has definitely allowed me to further my knowledge of creating reusable and maintainable code using new technologies. What I enjoyed most during these experiences was knowing that these projects had a meaningful impact on current and potential users. I am always looking to improve upon my skills while creating products that would leave users fulfilled.

Sean Kenny

I am currently completing my final year of the Software Engineering program at the University of Calgary. Through my years spent coding, I’ve learned to work with many different technologies and languages. Working on this project has taught me a lot about web development. I love coding because I find it incredibly challenging both technically and creatively and I take tremendous pride and joy in overcoming challenges and improving my skills.

Yesha Patel

I am currently completing my final year of Software Engineering at the University of Calgary. I’ve completed two research internships abroad in the past, one in China, and another in Germany. I have also completed a twelve month internship at Hydro One. Over the course of my internships, I had the opportunity to work with various programming languages alongside developing my communication skills. During my internship at Hydro One she was able to gain exposure on large databases and develop automation scripts for various day-to-day processes. I love to take on challenges and software development provides me with the freedom to explore new ideas and bring my creativity into practice. I enjoy working on projects in which I can see a real-life implication of my work.

Details about our design


The National Bank of Canada’s Commodity Derivatives group trades options and futures contracts on crude oil, natural gas, and other related commodities. Each trader has a portfolio of options and each option has a dynamic risk profile attached to it, which changes rapidly with changing market conditions. To evaluate the risk metrics of their portfolios, the National Bank of Canada previously used an assortment of Excel workbooks. However, using these workbooks is a time consuming and manual process. 

One of the Excel workbooks used by the bank is their risk analysis workbook, which shows the risk of each option in the trader’s portfolio. This project will replace this slow and inefficient Excel workbook with a fast and powerful risk management system. The increase in speed will be beneficial to the traders as the market updates many times within a second. Therefore, the less time that it takes to evaluate the risk of their portfolio, the more opportunities traders will have to react to the market and make a profitable trade.


While the bank’s previous system made use of a slow and outdated Excel spreadsheet ecosystem, our design provides the same functionality and more, using the modern web technology of React. Unlike the spreadsheets, this new system is fast, user friendly, and allows for a great deal of customization. 

We have provided traders with the ability to create custom filters of the data, allowing them to analyze the data using even parameters that they could not filter using before. Additionally, a dynamic layout allows each trader to rearrange the charts and tables on the page to suit their needs. Finally, this design eliminates much of the manual work needed to evaluate the risk portfolio, streamlining and speeding up the process so that traders can be more responsive to rapid changes in the market.


Using modern and reliable web technologies has allowed us to develop a risk management system that effectively meets the needs of traders at the National Bank of Canada. Our new system eliminates the manual work needed by their previous Excel based solution, thus speeding up the process of evaluating their risk portfolio. Data can be grouped and indexed by various parameters, to then be displayed in both graphical and tabular format. All graphs and tables also update in real-time as the market changes, providing traders with the up to date information they need to make informed trade decisions. 

Beyond simply the bank’s current needs, our system has been designed in such a way that additional functionality can easily be added in the future as their needs change. Additionally, our new risk management system integrates well with other tools used by the traders, which have recently been upgraded to use a similar React based solution.


Throughout our project, we made sure to meet with our technical advisor and sponsors from the National Bank of Canada regularly. This ensured that we received constant feedback on whether our design met requirements and whether it was user friendly. Additionally, throughout the implementation process, the team made use of code reviews so that all code was up to standard and had been reviewed by others for errors. Finally, we wrote an extensive test suite in Jest testing all functionality surrounding the filtering and aggregation of data. As decisions concerning large sums of money will be made based on this functionality, it was incredibly important that we tested it thoroughly.


Before starting the implementation phase of the project, we evaluated several different technologies on their ability to meet the project requirements. We regularly met with our sponsors at the National Bank of Canada to make sure that these requirements were realistic and that our design would be able to fulfill them. We also met with our technical advisor throughout the project to ensure that our design was feasible from a technical standpoint.

In terms of making sure that the project could be completed on time, we broke the project down into milestones and planned which deliverables would belong to which milestone. We also made sure to meet as a team regularly to ensure that the project progress was on track for successful completion.

Partners and mentors

We would like to thank everyone who helped us with this project. Our Teacher Assistant Manuel Zamudio Lopez ensured that we were on track with meeting the requirements of this project, while our Technical Advisor Emmanuel Onu provided us with technical guidance along the way. Finally, a special thanks goes out to our sponsors at the National Bank of Canada, Clifford Kitchen and Parag Dhar, without whom this project would not have been possible.

Our photo gallery

The front page
Options grid
Legs grid
Creating a hypothetical option
Adding an aggregation
Editing an aggregation
Deleting an aggregation
Aggregation tab