Skip to content

Latest commit

 

History

History
76 lines (45 loc) · 5.05 KB

README.md

File metadata and controls

76 lines (45 loc) · 5.05 KB

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.

RoboAdvisor - Presentation Slides

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.csvfilter.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.


Explore more