<a href="https://github.com/achannarasappa/ticker/releases"><img src="https://img.shields.io/github/v/release/achannarasappa/ticker" alt="Latest Release"></a>
<a href="https://github.com/achannarasappa/ticker/actions"><img src="https://github.com/achannarasappa/ticker/workflows/test/badge.svg" alt="Build Status"></a>
<a href='https://coveralls.io/github/achannarasappa/ticker?branch=master'><img src='https://coveralls.io/repos/github/achannarasappa/ticker/badge.svg?branch=master' alt='Coverage Status' /></a>
<a href='https://goreportcard.com/badge/github.com/achannarasappa/ticker'><img src='https://goreportcard.com/badge/github.com/achannarasappa/ticker' alt='Report Card' /></a>
Ticker
Terminal stock & crypto price watcher and position tracker

## Features
* Live stock & crypto price quotes
* Track value of your stock positions
* Support for multiple cost basis lots
* Support for pre and post market price quotes
## Install
Download the pre-compiled binaries from the [releases page](https://github.com/achannarasappa/ticker/releases) and copy to a location in `PATH` or see quick installs below
**homebrew**
brew install achannarasappa/tap/ticker
**linux**
curl -Ls https://api.github.com/repos/achannarasappa/ticker/releases/latest \
| grep -wo "https.*linux-amd64*.tar.gz" \
| wget -qi - \
&& tar -xvf ticker*.tar.gz ticker \
&& chmod +x ./ticker \
&& sudo mv ticker /usr/local/bin/
**windows**
winget install -e --id achannarasappa.ticker
**docker**
docker run -it --rm achannarasappa/ticker
Note: config file can be mounted from the host machine by using a bind mount with `-v ~/.ticker.yaml:/.ticker.yaml`
**snap**
sudo snap install ticker
sudo snap connect ticker:ticker-config
Note: config file will need to be set with `--config $HOME/ticker.yaml` since Snap does not allow access to dotfiles
### Third-party repositories
These repositories are maintained by a third-party and may not have the latest versions available
**MacPorts**
sudo port selfupdate
sudo port install ticker
## Quick Start
ticker -w NET,AAPL,TSLA
## Usage
|Option Name|Alias|Flag|Default|Description|
|-------------------|--|-------------------|----------------|-------------------------------------------------|
| | |--config |`~/.ticker.yaml`|config file location with watchlist and positions|
|`interval` |-i|--interval |`5` |Refresh interval in seconds|
|`watchlist` |-w|--watchlist | |comma separated list of symbols to watch|
|`show-tags` | |--show-tags | |display currency, exchange name, and quote delay for each quote |
|`show-fundamentals`| |--show-fundamentals| |display open price, previous close, and day range |
|`show-separator` | |--show-separator | |layout with separators between each quote|
|`show-summary` | |--show-summary | |show total day change, total value, and total value change|
|`show-positions` | |--show-positions | |show positions including weight, average cost, and quantity|
|`sort` | |--sort | |sort quotes on the UI - options are change percent (default), `alpha`, `value`, and `user`|
|`version` | |--version | |print the current version number|
|`debug` | | | |enable debug logging to `./ticker-log-.log`|
## Configuration
Configuration is not required to watch stock price but is helpful when always watching the same stocks. Configuration can also be used to set cost basis lots which will in turn be used to show total gain or loss on any position.
# ~/.ticker.yaml
show-summary: true
show-tags: true
show-fundamentals: true
show-separator: true
show-positions: true
interval: 5
currency: USD
currency-summary-only: false
watchlist:
- NET
- TEAM
- ESTC
- BTC-USD # Bitcoin price via Yahoo
- SOL.X # Solana price via Coinbase
- BIT-30MAY25-CDE.CB # Bitcoin futures contract price via Coinbase
lots:
- symbol: "ABNB"
quantity: 35.0
unit_cost: 146.00
- symbol: "ARKW"
quantity: 20.0
unit_cost: 152.25
- symbol: "ARKW"
quantity: 20.0
unit_cost: 145.35
fixed_cost: 7.00 # e.g. brokerage commission fee
groups:
- name: crypto
watchlist:
- SHIB-USD
- VGX-USD
lots:
- symbol: SOL1-USD
quantity: 17
unit_cost: 159.10
* All properties in `.ticker.yaml` are optional
* Symbols not on the watchlist that exists in `lots` are implicitly added to the watchlist
* To add multiple cost basis lots (`quantity`, `unit_cost`) for the same `symbol`, include two or more entries - see `ARKW` example above
* `.ticker.yaml` can be set in user home directory, the current directory, or [XDG config home](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html)
* Quantities can be negative to represent closed positions (position netting), short positions, borrowed assets, and other concepts
### Display Options
With `--show-summary`, `--show-tags`, `--show-fundamentals`, `--show-positions`, and `--show-separator` options set, the layout and information displayed expands:

### Sorting
It's possible to set a custom sort order with the `--sort` flag or `sort:` config option with these options:
* Default - change percent with closed markets at the end
* `alpha` to sort alphabetically by symbol
* `value` to sort by position value
* `user` to sort by the order defined in configuration with positions on first then watched symbols
### Groups
Watchlists and lots can be grouped in `.ticker.yml` under the `groups` property. While running `ticker`, press
TAB to cycle forward through groups or
SHIFT+TAB to cycle backward.
* If top level `watchlist` or `lots` properties are defined in the configuration file, the entries there will be added to a group named `default` which will always be shown first
* Ordering is defined by order in the configuration file
### Data Sources & Symbols
`ticker` pulls market data from a few different sources with Yahoo Finance as the default. Symbols for non default data sources follow the format `