piquette
finance-go
Go

:bar_chart: Financial markets data library implemented in go.

Last updated Jul 3, 2026
785
Stars
111
Forks
16
Issues
0
Stars/day
Attention Score
34
Language breakdown
Go 99.2%
Makefile 0.6%
Shell 0.3%
Files click to expand
README

finance-go

GoDoc Build Status Coverage Status

Summary

This go package aims to provide a go application with access to current and historical financial markets data in streamlined, well-formatted structures.

Check out the [qtrn cli application][qtrn], which is intended as a living example of this package. It prints quotes/options info in your favorite command-line in a few keystrokes!

Features

Description | Source --- | --- Quote(s) | Yahoo finance Equity quote(s) | Yahoo finance Index quote(s) | Yahoo finance Option quote(s) | Yahoo finance Forex pair quote(s) | Yahoo finance Cryptocurrency pair quote(s) | Yahoo finance Futures quote(s) | Yahoo finance ETF quote(s) | Yahoo finance Mutual fund quote(s) | Yahoo finance Historical quotes | Yahoo finance Options straddles | Yahoo finance

Documentation

A neatly formatted detailed list of implementation instructions and examples will be available on the [piquette website][api-docs].

For now, for details on all the functionality in this library, see the [GoDoc][godoc] documentation.

Installation

This project supports modules and Go 1.13+. Add finance-go to your own project the usual way -

go get github.com/piquette/finance-go

Usage example

Library usage is meant to be very specific about the user's intentions.

Quote

q, err := quote.Get("AAPL")
if err != nil {
  // Uh-oh.  
  panic(err)
}

// Success! fmt.Println(q)

Equity quote (more fields)

q, err := equity.Get("AAPL")
if err != nil {
  // Uh-oh.  
  panic(err)
}

// Success! fmt.Println(q)

Historical quotes (OHLCV)

params := &chart.Params{
  Symbol:   "TWTR",
  Interval: datetime.OneHour,
}
iter := chart.Get(params)

for iter.Next() { fmt.Println(iter.Bar()) } if err := iter.Err(); err != nil { fmt.Println(err) }

Development

Pull requests from the community are welcome. If you submit one, please keep the following guidelines in mind:

  • All types, structs and funcs should be documented.
  • Ensure that make test succeeds.

Test

The test suite needs testify's require package to run:

github.com/stretchr/testify/require

It also depends on a running instance of a test server [finance-mock], so make sure to fetch that project and run the application from another terminal session ([finance-mock's README][finance-mock] contains more information).

Docker

docker run -p 12111:12111 piquette/finance-mock:latest

Brew

brew tap piquette/finance-mock brew install finance-mock finance-mock

Go

go get -u github.com/piquette/finance-mock finance-mock

Run all tests:

go test ./...

Run tests for one package:

go test ./equity

Run a single test:

go test ./equity -run TestGet

For any requests, bug or comments, please [open an issue][issues] or [submit a pull request][pulls]. Also please email or tweet me as needed.

Notes

  • Yahoo changes their finance APIs without warning, which is their right to do so. However, its annoying and leads to some instability in this project..
  • Big shoutout to Stripe and the team working on the [stripe-go][stripe] project, I took a lot of library design / implementation hints from them.
[godoc]: http://godoc.org/github.com/piquette/finance-go [issues]: https://github.com/piquette/finance-go/issues/new [qtrn]: https://github.com/piquette/qtrn [pulls]: https://github.com/piquette/finance-go/pulls [finance-mock]: https://github.com/piquette/finance-mock [stripe]: https://github.com/stripe/stripe-go [api-docs]: https://piquette.io/projects/finance-go/
🔗 More in this category

© 2026 GitRepoTrend · piquette/finance-go · Updated daily from GitHub