TwitterGoogleRSS

Bitcoin Charts – Bid Comparison

For information about Bitcoin and its history I provide a brief overview in my other post “Bitcoin – Is it dead yet?“. To better understand bullet graphs have a read of the Bullet Graph Design Spec.

There are a large number of exchanges listed on bitcoincharts.com. These exchanges are all competing to exchange bitcoin for you. For a better understanding of these exchanges I wrote a go script to list the bid prices for all the USD exchanges on bitcoincharts. While some of these exchange appear to be out of operation others show a very competitive exchange rate. The measure (bar) shown on these charts is the best bid price currently being offered. When compared with mtgox some of these exchanges appear to offer a better bid price. On the right side of the bar the lighter color indicates a range where the user would expect to be making a profit on the exchange (approximated as mtgoxUSD.Ask + 1% exchange fee). At the time of producing this graph bitfloor appears to be offering a very competitive price. An intelligent arbitration bot could take advantage of this.

Comparison of bid prices for bitcoin exchanges

I’m not the first to notice this. Searching github shows a few attempts at arbitration on the bitcoin exchanges. My script was written in go and produces an SVG image. Three important packages are used to help produce the image.

1. github.com/ajstarks/svgo – Produces the SVG markup.
2. github.com/NerdGGuy/bitcoincharts – Queries bitcoincharts.com for bitcoin market information.
3. github.com/NerdGGuy/BulletGraphGo – Produces the bullet charts.

The code to produce this chart is below:

package main

import (
	"fmt"
	"github.com/NerdGGuy/BulletGraphGo"
	"github.com/NerdGGuy/bitcoincharts"
	"github.com/ajstarks/svgo"
	"math"
	"os"
	"time"
)

func main() {
	canvas := svg.New(os.Stdout)
	canvas.Start(1024, 1800)
	canvas.Rect(0, 0, 1024, 1800, "fill:white")
	canvas.Gstyle("font-family:Calibri;font-size:18px")
	canvas.Title("Bitcoin Bid Comparison")
	bg := bulletgraph.New(canvas)

	bitcoin := bitcoincharts.BitcoinCharts{Timeout: time.Millisecond * 1000}

	mtgoxUSD, err := bitcoin.GetMarket("mtgoxUSD")
	if err != nil {
		fmt.Errorf("%s: %s", err.MyError, err.TheError)
		return
	}

	usd, err := bitcoin.GetMarketsWithCurrency("USD")
	if err != nil {
		fmt.Errorf("%s: %s", err.MyError, err.TheError)
		return
	}

	//Want to sell bitcoin at a profit
	for _, market := range *usd {

		//SELLING BITCOIN:
		//We will assume the mtgoxUSD.Bid price is current "real" price for selling bitcoin
		//To make a profit we must be able to "buy" the bitcoin back at a better price
		//We will assume the fee for transaction is 1%
		qm := fmt.Sprintf("%v,%v", mtgoxUSD.Bid, mtgoxUSD.Ask+(mtgoxUSD.Ask*0.01))
		scale := fmt.Sprintf("%v,%v,%v", 0, math.Floor(mtgoxUSD.Bid)*2, math.Floor(mtgoxUSD.Bid/12))
		if market.Ask > 0 {
			//CMeasure will be the current Asking price. If someone is lucky enough to get this price they will make a profit.
			//Measure is the actually market.bid price we can currently sell our bitcoin for
			bg.Data = append(bg.Data, bulletgraph.Bdata{Title: market.Symbol, Subtitle: market.Currency, Scale: scale, Qmeasure: qm, Cmeasure: market.Ask, Measure: market.Bid})
		}

		//BUYING BITCOIN
		//--not yet--
	}

	bg.Drawbg(canvas)
	canvas.Gend()
	canvas.End()
}
Be Sociable, Share!

One thought on “Bitcoin Charts – Bid Comparison

Leave a comment

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>