RoboAdvisor - A Portfolio Selection Recommendation System
A portfolio selection recommendation system based on Markowitz Mean-Variance Model and Black-Litterman Model implemented on the App Navigator
.
This is my first practical project during my internship as a data analyst at a leading fintech company in Beijing. And the project is already implemented on the Navigator
financial APP with thousands of users.
Documentation File (Chinese Version)
About
Here are the presentation slides for the whole project.
You may also take a glance at the sample portfolio report generated by the Roboadvisor.
Sample Portfolio Report - Risk Level 5 (most aggressive strategy, for risk-loving customers)
Sample Portfolio Report - Risk Level 3 (neutral strategy, for risk-neutral customers)
Sample Portfolio Report - Risk Level 1 (most convervative strategy, for risk-averse customers)
Programming Languages
- Python 3: For model implementation
(PyPortfolioOpt)
, fund prediction(statsmodels)
, online data crawling(selenium)
, project integrating(rpy2)
and data processing(pandas)
.- R: For model implementation
(PortfolioAnalytics)
and online data crawling(rvest)
.- Javascript: For plotting related intuitive financial figures
(ECharts)
and online survey designing.- Html: For online survey designing.
Building
Download the whole repository through this link.
Running
Access the Final Version
directory and make sure that the three input files bloomberg.csv
、filter.csv
and newfund.csv
are present in the Final Version
directory.
All functions are included in the app.py
file.
Implementation and running are included in the Navigator
App for commercial purpose, so detailed running process will not be made public.
You may also refer to the sample report to get a quick glance at the output generated by RoboAdvisor.
Milestones
Data Acquisition - Web Crawler
Our team first crawled the historical data for 800 selected funds from iFund and Bloomberg terminal.
For more details, you may refer to my Web Crawler repository.
Investment Preferences Analysis - Online Survey Design
Then we designed a questionaire to investigate the customers' specific investment preferences (like risks and return rates requirements).
Data Processing & Analysis - Fund Filter and Classifier
In the next step, we utilized pandas
to process the data using a fund filter together with a classifier. All kinds of statistical values of the data are also obtained in this step and get pipelined to the Model Construction part.
Model Construction - Markowitz Mean-Variance Model and Black-litterman Model
Then we designed the specific funding recommendation system to satisfy each customer's specific investment preferences based on Python and R.
Our project is mainly based on the Markowit mean-variance model and Black-Litterman model supported by PyPortfolioOpt
package.
We also use a Time Series Model - ARIMA to make better estimates of the expected return for the portfolio under the support of statsmodels
.
Generate Portfolio Report - Diagram Plotting
Finally, we plotted the related financial statistical charts and generate the Portfolio report by EChart
. Sample report is also included in this repo.