DcaPal is a pragmatic Dollar Cost Averaging tool for passive investors like me: financially-educated people managing their own portfolios of not-too-many assets replicating major world indices.
I was facing a common problem: it's that time of the month, got some savings to invest and have to split them across my portfolio assets. How the heck can I do it so that my portfolio stays balanced?
Hence DcaPal. You come here every week/month/quarter, build your portfolio, define asset allocation in percentage, input how much you want to invest and let the algorithm do the splitting for you.
You can start using DcaPal right away. It's free. No registration required.
Build your own portfolio or, if you don't know where to start, explore our Demo portfolios:
DcaPal does not store any user data. But if you are still concerned for your privacy, you can build and run it on your machine.
Start Docker environment
cd dcapal-backend
docker compose -f docker-compose.yml -f docker/docker-compose.dev.yml up -d
(Note: if you're using a Mac with an ARM processor, you should replace (in the docker-compose dev file) Cadvisor's image version with gcr.io/cadvisor/cadvisor:v0.47.1 and set platform: linux/aarch64)
Run DcaPal backend
Prepare dcapal.yml
config file
cd dcapal-backend
cp config/dcapal/dcapal.yml dcapal.yml
Compile and start backend service
cargo run --release
Run DcaPal frontend
Build DcaPal Optimizer
cd dcapal-optimizer-wasm
curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
wasm-pack build --release
Install NPM dependencies. Note: this is installing dcapal-optimizer-wasm
package as well.
cd ../dcapal-frontend
npm install # Install dcapal-optimizer-wasm pkg as well
Run frontend server
npm run start
flowchart LR
Frontend[Frontend] ---|"/api/external/search?q={query}<br>/api/external/chart/${symbol}"|nginx[nginx]
subgraph dcapal.com
nginx---TradFiProvider[TradFi Provider]
nginx---Backend[Backend]
Backend---CryptoProvider[Crypto Provider REST API]
Backend---|"/assets/fiat<br>/assets/crypto<br>/price/{base}?quote={quote}"|Redis[Redis]
end
Contributions and suggestions about how to improve this project are welcome! Please follow our contribution guidelines.
Born as a personal Sunday morning project, DcaPal would have never grown so much without the help of heros willing to contribute with their time and work. Thank you very much ya all!