CONPA
ConPA is a complete stack for an asset allocation application.
ConPA is a single page app with the following components: the asset search,
the list of assets, the basket info, the assets stats and the dashboard of
portfolios.
To fill the basket, the user needs to add an asset, using the autocomplete
search: typing the name or the symbol of an asset, the autocomplete component
suggests a few assets. When the user selects an asset, it is added to the
basket, displaying the symbol.
In the meantime for the last asset added to the basket, the app provides the key
statistics.
When the basket contains at least three assets, the basket is optimized,
displaying the optimal weights of the assets.
There is also a dashboard of portfolios. It contains the stats of all portfolios
created by the users: last created portfolios, best/worst performing portfolios,
high/low risk profile portfolios and high/low return profile portfolios.
Installation
After cloning the project, install the dependencies with
npm:
npm install --ignore-scripts
Start the app with the command:
npm start
It starts the web backend, the PouchDB in-memory instance, creates a new empty
database and imports the latest dump available.
Eventually browse http://localhost
.
Tested locally with PouchDB 4.x and Node.js 10.x.
Notes
-
Sometimes the weights of the optimal portfolio (To Date or Year To Date) are zeroes:
this is due to a problem retrieving the historical prices.
-
If a local db instance is configured, the first time you land on the page the
rendering is very slow, because the db, behind the scenes, is creating the views.
-
Locally the portfolios are saved on a PouchDB in-memory instance. The configuration
allows a live and testing system, you don't need to change the source code when
the app is delivered to a live system.
-
Setting a remote db instance, you may use the environment variables:
CONPA_LIVE_URL
and CONPA_TEST_URL
.
-
Optionally, you may add a Rserve configuration (local or remote). If Rserve is
not configured, ConPA uses a javascript implementation for the optimization.
-
ConPA Sequence Diagram.
History
- ConPA rel. 0 (2008 - 2011): Jaxer + YUI.
- ConPA rel. 1 (2011 - 2012): Node.js + YUI + Cloudant.
- ConPA rel. 2 (2012 - 2015): Node.js + jQuery MVC + Cloudant.
- ConPA rel. 3 (2015 - 2016): Node.js + AngularJS + Cloudant.
- ConPA rel. 4 (2016 - 2018): Node.js + AngularJS + PouchDB / Cloudant.
- ConPA rel. 5 (2018 - present): Node.js + hyperHTML / workway + PouchDB / Cloudant.
There are two old videos about ConPA 0:
welcome and
tutorial.
Disclaimer
NOT INVESTMENT ADVICE AND WILL LOSE LOTS OF MONEY SO PROCEED WITH CAUTION.