Skip to content

Dollar cost averaging bot with Jupiter TypeScript SDK

License

Notifications You must be signed in to change notification settings

ARBProtocol/jup-dca-bot

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Jup V4 DCA Bot

This bot runs a simple dollar cost averaging strategy to buy assets over a period of time. It utilizes Jupiter Aggregator, a swap aggregator on Solana using their SDK V4. It has built in rudimentary retry logic for failed transactions.

This code was adapted from ARBProtocol's jup-dca-bot orginally written by Jerald Tomada and has been updated to experiment and learn. It has not been thoroughly tested and is unaudited. Please use at your own risk!

It is best practice not to store tokens on the wallet used with this bot apart from what is needed for swapping. Setting up a schedule to move tokens (not needed on the wallet) to a cold-storage hardware backed wallet (aka Ledger wallet) should be implemented to secure the DCA tokens being collected.

Jup DCA Bot Demo

Install

yarn install

Configure

  1. Create an .env file at the project root. See .env-example. Private key can be obtained from Phantom via Settings -> Export Private Key.

As the private key is stored in the .env file it is important to secure access to this file (on top of severly limiting funds stored on this wallet). Remove other/group access as a starting point to this file to only allow the owner and root user to be able to read the file (chmod 600 .env), use a secure password for the user for accessing the server it runs on and follow other best practices to reduce risk here including frequently moving swapped dca tokens to a hardware backed wallet.

  1. Create your own dcaconfig.ts. See dcaconfig-example.ts for a template.

Remove the entires you do not need from the sample file. Always start with a very small amount to see it is doing what is expected before you test further. Use at your own risk.

To see example cron expressions, check out crontab.guru. Note: the minimum interval is one minute.

Run

yarn start

Future Pending Improvements

  • Improved error and transaction retry logic and validation on if the trade is worth executing (outside of Jupiter)
  • Log to remote database for tracking
  • Auto enable / disable and adjustments for timing & amounts based on custom trading approach ruleset(s)

About

Dollar cost averaging bot with Jupiter TypeScript SDK

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • TypeScript 100.0%