My teaching method is based on using simple terms to explain a topic, no jargon. I encourage student's view on a given topic and always encourage them to share their thoughts on a given topic or problem. I tend to explain a topic with enough number of practical examples and teach in a very hands on manner.
I am an experienced quantitative finance consultant with 20 years of experience in the industry. I am entering the world of teaching. I have wealth of experience in computer programming and data analysis in the financial services industry. I believe that I will be able to share my experience and enrich student's learning. My teaching method is online and face-to-face, very much hands on with large number of practical examples. I spend most time on fundamental aspects of computer programming and value student's own approach to come up with ideas and solutions.
■ Data Analytics in Python (J. P. Morgan Chase & Co Investment Bank)
■ ISDA SIMM optimization and LCH Swap compression for T1 banks (Quantile Technologies)
■ CVA/DVA/FVA calculation, analysis and Stress Testing for PRA, DFAST, CCAR (HSBC Bank)
■ Statistical Risk Modelling in R for CCAR, FINMA Stress Testing (Credit Suisse Bank)
■ Pricing Exotic Derivatives and Stochastic Calculus (Barclays Capital Bank)
■ High performance low latency feed handler development (Bloomberg LP)
■ Expertise in Python, C++/ STL/Boost, R, Data Structures and Algorithms, SQL
■ Unix/Linux internals, IPC, Multithreading, Shell scripting, experience in C#, Java, Excel
■ 8 years in Quant Finance out of 20 years of industry experience in Software Design and Development
■ Topcoder (topcoder.com) Data Science Marathon Match high ranker (in top 20)
Certificate in Quantitative Methods in Finance and Risk Management, Stanford University, USA, 2013
M.S. in Software Systems, Birla Institute of Technology and Science, Pilani, India, 2002
B.Tech. (Hons.) in Mechanical Engineering, Indian Institute of Technology Kharagpur, 1997
OS: Linux, Windows, Solaris IDE: Eclipse, Visual Studio Process: Agile/Scrum, Waterfall
Source Control: GIT/BitBucket, SVN, Clearcase, Perforce, MKS, Visual Sourcesafe, Synergy
Test Automation using JENKINS TDD
Quantitative methods in Finance and Risk Management - Stanford University, USA
[1 year certificate course in Quantitative Finance]
Semester 1: Statistical Methods in Finance (Grade - A)
Semester 2: Statistical Models and Methods for Risk Management and Surveillance (Grade - A)
Semester 3: Algorithmic Trading and Quantitative Strategies (Grade - A)
Course objective: Apply regression analysis to the CAPM and multifactor pricing models Use analytic tools e.g. time series modelling and forecasting, to tackle rapidly changing financial markets Develop financial strategies based on algorithmic trading and statistical arbitrage
Key Topics: Linear Regression, Time series - ARIMA, GARCH, Black-Litterman, VaR and Expected Shortfall, Basel accords, Black-Scholes, Credit Risk and PD/LGD/EAD, Logistic regression, GLM/GLMM, Survival analysis and Cox proportional hazard model, Algorithmic Trading strategies, Pairs trading, Contrarian/Momentum strategies, Cointegration, Order Book dynamics
12 assignments including 2 quant projects were completed, programs were developed in R:
Project 1 - Black-Litterman model: Implementation of Black-Litterman model and apply it on Fama-French 6 portfolio data sets. The BL model allows for investors views having certain confidence levels to combine with historical trend to calculate portfolio weights and to predict portfolio return.
Project 2 - Algorithmic trading strategy: Development of a trading strategy for high frequency intraday trading data of 5 technology stocks taken from NYSE TAQ database. The key idea is to dynamically combine cointegration based method with momentum/contrarian based method to achieve consistent and high PNL. It concluded that cointegration, when exists, has a higher Sharpe Ratio than momentum methods, and combining cointegration and momentum produces better PNL than each method applied alone.
Significant Business Projects and Professional Experience
Data Analytics Consultant, J. P. Morgan Chase & Co. (CIB department), Glasgow Aug 2019 - Nov 2019
● Generic table operations using Python: Developed and delivered a python based software tool for generic and configuration driven composition and filtering of multiple data-frames, applied on infrastructure and reference data of the firm. In this implementation all the table compositions, logical operations e.g filtering are completely configurable and also allows any new custom table operation to fit into the framework efficiently.
● Recursive flattening of JSON tree: Delivered a multiprocessing enabled python program for dynamically flattening large JSON files containing data with multiple levels of nested dictionaries and lists. The implementation was based on breadth first traversal of the JSON tree.
Key Areas: Python 2.7, pandas, numpy, sqlalchemy, Oracle-SQL, IntelliJ
Quant Developer / Specialist Consultant(Contract), Quantile Technologies, London June 2017 - June 2019
● ISDA SIMM Optimization: Developed a network flow based cycle cancelling algorithm using Boost C++ graph library to fast reduce a large chunk of margin for the participating banks. This program drastically improved performance of the overall optimization process which also involved a much slower matlab based gradient descent algorithm for minimizing quadratic objective function with quadratic constraints. I also developed and re-factored various python modules around the optimizer for data processing, cleaning and trade generation. I conducted internal daily runs and official weekly optimization runs for FX Delta for participating banks starting from data collection to posting results to clients.
● DASK based distributed computing: Developed a Python-DASK based parallel computing framework for the margin optimization process to execute over a cluster of machines, reducing execution time massively.
● SIMM against LCH: Assuming LCH is risk-free , margin to LCH by banks can be analytically minimized. Developed a software based on this analytical approach using R to minimize banks' IM against LCH. Later re-implemented and delivered this in C++ and integrated with above-mentioned network flow algorithm.
● LCH Swap compression: Designed and developed IR Swap compression software for LCH using a commercial optimizer. The compression optimizer minimizes total gross notional satisfying cash flow constraints and various other risk constraints while keeping the total trade-count of each of participating bank within prescribed limits. Developed a Q program to integrate the newly developed optimizer into a KDB/Q environment. Also experimented with open source COIN-OR solver to compare it with commercial solver.
● Efficient LCH data filtering: Developed and delivered a Python module that implements a large set of strict validation checks for LCH trade data and removes trades and netting keys stringently. This is a high performance Numpy based multiprocessing enabled module that produces clean data for the optimizer.
Key areas: ISDA SIMM, Swap compression, C++, Boost graph library, Python (DASK, pandas, numpy, scipy, scikit-learn), Quantlib, AMPL programming with CPLEX, COIN-OR CBC solver
Quant Analyst and Developer (Contract), HSBC Bank, London, April 2016 - June, 2017
● Counterparty Credit Risk calculation and analysis - Stress Testing for PRA, CCAR, DFAST scenarios:
Composite CDS curve construction and Stress Testing: Developed an algorithm that linearly combines counterparty default probabilities from rating based historical transition matrix and from CDS curve to produce a composite CDS curve. This involves bootstrapping the CDS curve, combining historical and implied probabilities and then re-pricing the CDS legs. During stress testing, shock is directly applied on the composite CDS and this helps in automating the entire stress testing process.
Run stressed scenarios with shocks applied on CDS spread, yield curve, funding spread and FX rates and analyze the shocked XVA values and identify counterparties with large move.
Monthly calculation and reporting of XVA values (CVA, DVA, FVA) for multiple sites and scenarios including major hubs for the bank (NY, London, Paris, Hong Kong) involving ~10000 counterparties per hub. This includes XVA sensitivity calculation by observing changes in XVA values between base and bumped scenarios. Bumps are applied on Interest Rates and FX rates following regeneration of exposures (EPE and ENE).
Analysis of bilateral CVA numbers, comparing with previous month's values, detecting and explaining significant deviation at counterparty level if any, and digging down to per trade exposure changes.
Various contributions to C++ based quant library in terms of new feature development, bug fixing and test development. Most of these features are migrated from Excel implementation to C++ library. I worked very closely with the IT team to integrate new quant functionalities with the UI of the in-house software and supervised them to test all new features thoroughly.
● Bid-Offer Spread modeling for Stress Testing: I developed a linear regression based stress testing framework in R for calculating shock on bid-offer spread when a shock on mid price is given. This method is applied on FX VOL and Interest Rates products to calculate changes in Bid-Offer reserve under stress situation.
Key areas: XVA calculation and analysis, Stress Testing, C++, R
Senior Quant Model Developer (Contract), Crisil UK Ltd (at Credit Suisse), London June 2015 - Dec 2015
● Statistical Risk Modeling for Scenario Analysis for CCAR, FINMA Stress Testing in R:
Implemented a set of quantitative models in R for calculating shocks on risk factors in a stressed economic scenario. An adverse or severely adverse scenario is given by regulators with shocks defined on a set of macro-economic parameters (e.g. GDP, Employment rate). Quantitative models are developed to propagate the shocks to internal risk factors where the bank has positions. A given scenario contains risk factors from different asset classes and a risk factor can be a tradable ticker or synthesized from a set of such tickers. Each risk factor has its own historical time series used for correlation calculation. The risk factors are arranged in hierarchical levels and shocks are propagated across the levels using following statistical methods:
Partial and Semi-Partial Correlation based linear regression: Manual and PCA methods
One-to-One correlation method
Nelson-Siegel method for yield curve interpolation
Standardization of time-series and shocks
The above models were developed in R and successfully applied on multiple regulator-defined and internal scenarios containing up to 4000 risk factors. Shock propagation and subsequent analysis were done for base, adverse and severely adverse scenarios. A Java Spring/Hibernate based database with Swing UI were developed for storing scenarios where I contributed towards SQL query specific module development.
Key areas: Statistical Model Development and Analysis, Stress Testing, R , SQL, JAVA
Quant Developer (Contract), Barclays Capital Investment Bank, London Jul 2014 - April 2015
● Pricing Exotic Derivatives using Monte-Carlo simulation:
I was engaged with the "Quantitative Analytics Central" group of Barclays Capital investment bank. The group aimed at developing a generic (asset class agnostic) quantitative framework for pricing derivatives. Developed and integrated an existing Monte-Carlo engine into this new generic framework for pricing exotic derivatives using Longstaff-Schwartz algorithm. The key work was to design and develop software modules for the calibration and the valuation phases of the algorithm. The design took care of the fact that the Monte-Carlo simulation is run in a distributed environment, and the results were needed to be assembled appropriately. The developed software was tested with data from energy market. The entire development was done in C++ using Visual Studio on Windows7.
As part of test framework improvement, I developed a Python module to enable automatic comparison of xml formatted test outputs. In addition I wrote a number of tests for calculation of Present Values and various Option Greeks for different trades. This work involved programming in C#.
In addition to development contribution, I was also responsible for overseeing one build and release process of the 'Quantitative Analytics' library. I successfully completed this week-long process by coordinating with multiple development groups and synchronizing their codes to release a stable library.
Key areas: Quantitative Finance, C++/STL/Boost, Python, Visual Studio, Perforce, C#
Senior Software Engineer in R&D, Bloomberg LP, London Nov 2011 - May 2014
● Exchange connectivity, Network programming using Boost::ASIO - analyze feeds data and market structure:
A data feed software connects with the stock exchange using a specific network protocol, receives and processes financial data (trades, quotes, reference data), manages connection and data flow throughout the market hours, recovers lost data if required, and maintains a low latency while processing the data. I analyzed market model and financial context of the data and developed feeds software for several European and African stock exchanges making the data available on Bloomberg terminal. The programs were developed using C++/STL/Boost, Python and SQL in a multithreaded low-latency environment.
Developed SQL programs to fetch data from exchange database to be processed by C++ based parser
Developed software for handling several market messaging protocols e.g. FIX, ITCH
Implemented market data modelling standards e.g. Security Status 2.0, Market Model Typology 2.0
Feeds software development for various stock exchanges and generate tick data:
- BATS/Chi-X OTC market: Implementation of Market Model Typology 2.0 standard for trade reporting - Ghana Stock exchange: implementation of Order book processing
- Johannesburg Stock exchange: security creation on Bloomberg terminal for Interest Rate and Currency Derivative market, Volatility data processing for Options and Futures
- Nordpool spot market: News data processing
- MTS Prague: Implementation of the new Security status 2.0 standard
- Financial Express: process and update database with 5-years of historical data
- Istanbul Stock Exchange: New feature addition to Derivative and Bond market
- Seychelles Stock Exchange: develop new feed software for this newly launched exchange
● Framework Development and Maintenance:
Proposed and developed a new feeds software model using boost::ASIO and boost::Signal. This is a single-threaded asynchronous model, performance efficient and can scale up to handle large amount of data with low-latency, and can adapt to available hardware concurrency
Regular maintenance and address issues related to Feeds software framework libraries and build process
Key areas: C++/STL/Boost, Python, SQL, Linux, Eclipse, Network Programming, Market Data models, FIX 4.4 protocol
Senior Software Engineer, Alcatel-Lucent Ltd Jan 2011 - Oct 2011
● Network programming for Content Delivery
Design and implementation of a request-response based network protocol API deployed on a multithreaded and distributed Linux environment. It used non-blocking threads which used unix epoll interface for event-based communication and also used lockless FIFO queue to avoid locking overhead
Implementation of a Python-based test module for a geographic cache selection algorithm
Migrating a database from MySQL to SQLITE3 and re-writing the C++ interface
Key areas: C++/STL, Python, Multithreading, Linux (Ubuntu), Eclipse, Low latency Network programming, GDB
Senior Software Engineer, Nokia (Symbian) UK Ltd Feb 2009 – Dec 2010 (site closed)
● Developing a Graphics Composition Engine (OpenWF) for Symbian Operating System
Design and implementation of OpenWF graphics composition pipeline on Symbian OS using C and C++ and using multi-threading to handle rendering work and rendering requests simultaneously
Analysis of Symbian OS architecture including its thread and process model, inter-thread communication, memory architecture, graphics and display drivers, event driven multi-tasking and error handling mechanism
Integration of a GPU accelerated secondary display (TV) driver into Symbian OS
Key areas: C++, Graphics algorithms, Symbian OS internals, Eclipse
Design Engineer, Imagination Technologies Ltd. UK Jun 2007 - Feb 2009
● OpenVG Graphics Driver development on 3D graphics hardware for embedded systems
OpenVG is a 2D scalable graphics standard primarily for Map Visualization and UI development on mobile devices. The development environment was Linux and WinCE
Adaptive path tessellation algorithm for cubic Bezier curves using Fixed Point mathematics
Mask operations on GPU, filtering operations for separable and non-separable filters
Glyph API for text visualization
Graphics driver's performance calculation: Analysis of load distribution between CPU and GPU
Key areas: C, GPU programming, Geometric algorithms, WinCE, Linux, Data Display Debugger
Researcher and Teaching Assistant, Computer Science, Loughborough University, UK Aug 2005 - Jun 2007
● Development of an image analysis module for defect detection on rail surfaces
Development of an edge detection and analysis module to analyze cracks from the images of rail surface and classification of cracks based on length and straightness (1.5 year funded project by Network Rail)
Key areas: C++, Image processing algorithms, Windows and Visual C++
Senior Systems Analyst (Team Lead), LG Electronics, India, South Korea Apr 2004 - Aug 2005
● Software implementation of OpenGL 3D graphics API for mobile phone
The aim of this project is to develop the OpenGL graphics library (v1.0) for embedded systems. The work is based on the OpenGL-ES API specifications published by Khronos group and the aim is to implement the entire graphics processing pipeline
The developed OpenGL-ES passed the conformance criteria set by Khronos conformance test suite
Among important algorithms implemented by me were point and line rasterization, scan-line algorithm for triangle rasterization including perspective texture mapping and multi-texturing
A fixed point math module was developed for faster floating point calculation
A 3d game engine was developed for testing the OpenGL driver. This included algorithms for collision detection and 3d object culling.
Key areas: C, C++, OpenGL pipeline, 3D graphics algorithms, Windows and Visual Studio
Senior Software Engineer, Parametric Technology Corporation, India Jan 1999 - Mar 2004
● 3D Graphics and Visualization using Hoops3D / OpenGL
Integration of Hoops3D graphics library into CADDS5 (a CAD software) graphics pipeline
Analysis of Hoops3D and OpenGL graphics pipeline and incorporating network based features of Hoops3D in Cadds5
3D Viewing in CADDS5: Analysis of 3D viewing pipeline and unification of two independent viewing modules into one
Surface Modelling: Shrinking Convex Hull Algorithm
Design and development of an algorithm that shrinks a convex hull of a point data set to a certain extent to reveal the concavity present in the point data distribution
Key areas: C, C++, High-level 3D graphics data structures and algorithms, Sun Solaris
Management Trainee, Tata Electric Co., India Jul 1997 - Oct 1998
Understanding the working of thermal and hydro-electric power plants
Microsoft Research Award for the best poster competition at the BCS Summer School, Plymouth, UK, June 2006: Runner-up prize
Brainbench Master’s Level certificate in Programming Concept
Recipient of Certificate of Merit ‘Grade A’ in the ‘Intelligence and Science Talent Test’ in 1989 and 1991, organized by National Science Society, India
Member of Milton Cricket Club, Cambridge (2010 Summer Season Cricket League)
Sub-warden and Fire-management person at Harry French Court, Loughborough University
Winner of the Silver Medal in the Inter Hall Cricket Competition at IIT Kharagpur, 1996
Member of PTC cricket team in Inter-Information Technology Cricket Tournament, Pune, India
Member of the Guard of Honor cadre at the NCC camp held in December, 1993
computer skills lessons closeby? Here's a selection of tutor listings that you can check out.
Superprof can also suggest computer programming lessons to help you.
Learning isn't a problem, C++ lessons for all!
Taking programming languages lessons has never been easier: you're going to learn new skills.
|at his home||at your home||By webcam|
|1 hour||Not available||£32||£25|
|5 hours||Not available||£155||£125|
|10 hours||Not available||£305||£250|