Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

guanaco

anthonykrivonos38MIT0.0.4TypeScript support: included

A cute and cuddly cryptocurrency quant trading engine in TypeScript.

typescript, javascript, js, ts, algorithmic, algo, quantitative, quant, trading, trade, cryptocurrencies, cryptocurrency, crypto, bitcoin, coin, gemini-api, gemini, coinbase, client, cron

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

✨ 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

  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_DAY

let 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

Future

👫 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 | GitHub