https://github.com/anthonykrivonos/guanaco
🦙 A cute and cuddly multi-platform cryptocurrency quant trading engine.
https://github.com/anthonykrivonos/guanaco
algorithmic-trading algorithmic-trading-engine coin crypto cryptocurrency cryptocurrency-exchanges engine guanaco javascript quant quantitative-trading trading typescript
Last synced: about 2 months ago
JSON representation
🦙 A cute and cuddly multi-platform cryptocurrency quant trading engine.
- Host: GitHub
- URL: https://github.com/anthonykrivonos/guanaco
- Owner: anthonykrivonos
- Created: 2019-08-12T18:50:32.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2022-12-09T22:12:37.000Z (over 2 years ago)
- Last Synced: 2025-04-27T01:49:04.515Z (2 months ago)
- Topics: algorithmic-trading, algorithmic-trading-engine, coin, crypto, cryptocurrency, cryptocurrency-exchanges, engine, guanaco, javascript, quant, quantitative-trading, trading, typescript
- Language: TypeScript
- Homepage:
- Size: 255 KB
- Stars: 9
- Watchers: 1
- Forks: 3
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
#
Guanaco
## A cute and cuddly cryptocurrency quant trading engine in TypeScript.
> The guanaco (Lama guanicoe) (from Quechua "Wanaku", via Spanish) is a camelid native to South America, closely related to the llama. Its name comes from the Quechua word huanaco (modern spelling wanaku). - [Wikipedia](https://en.wikipedia.org/wiki/Guanaco)
## ✨ Features
- **Live**, schedule-based trading
- Algorithm **backtesting**
- **Same source code** for all clients
- ... and many more to come!## 📦 Installation
```
npm install --save guanaco
```
or
```
yarn add guanaco
```## ✅ It's Easy AF
### Live Trading Example with [Gemini](https://github.com/mjesuele/gemini-api-node)
1. `yarn add gaunaco`
2. Paste and start trading like a badass.
```
import { GeminiClient, Scheduler } from 'guanaco'const geminiClient = GeminiClient({
key: 'my-key',
secret: 'my-secret'
})let lastPrice = 0
// Schedule every hour
Scheduler.hourInterval(() => {
geminiClient.info('btcusd').then((info) => {
// Not-so-great strategy here
const change = (info.ticker.last - lastPrice)/lastPrice
if (change > 0.05) {
geminiClient.sell('btcusd', 20, 50)
}
lastPrice = info.ticker.last
})
}, 1)
```### 🕗 Backtesting Example
1. `yarn add gaunaco`
2. Determine your start date and interval of trading.
3. Run your algorithm with the starting portfolio of your choice (here, we start with $2400).
4. Asynchronously get your results!
```
import { Backtester, BacktestClient, BacktestClientPortfolio, BacktestInterval, OrderType } from '../../src';const lastMonth = new Date(2019, 7, 30)
const backtestInterval = BacktestInterval.ONE_DAYlet backtester = new Backtester(lastMonth, backtestInterval)
let lastAskPrice = null
backtester.run({ usd: 2400 }, (client:BacktestClient) => {
const info = client.info('btcusd')
if (lastAskPrice && lastAskPrice > info.ticker.ask) {
client.buy('btcusd', 0.25, info.ticker.ask, OrderType.MARKET)
lastAskPrice = info.ticker.ask
}
}).then((result) => {
console.log(`We earned ${result.usd!}!`)
})
```## 💸 Supported Clients
### Current
- [Gemini Node API](https://github.com/mjesuele/gemini-api-node)
- [Coinbase Pro API](https://github.com/coinbase/coinbase-pro-node)### Future
- [ccxt](https://github.com/ccxt/ccxt)
## 👫 Collaboration
If you're interested in collaborating and adding onto the available clients and functionality, please feel free to submit pull requests.
## 📝 Authors
Anthony Krivonos - [Portfolio](https://anthonykrivonos.com) | [GitHub](https://github.com/anthonykrivonos)