Terminal stock ticker with live updates and position tracking
Terminal stock watcher and stock position tracker
Download the pre-compiled binaries from the releases page 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/
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
Note: config file will need to be set with --config $HOME/ticker.yaml
since Snap does not allow access to dotfiles
These repositories are maintained by a third-party and may not have the latest versions available
MacPorts
sudo port selfupdate
sudo port install ticker
ticker -w NET,AAPL,TSLA
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-holdings |
--show-holdings | show holdings including weight, average cost, and quantity | ||
sort |
--sort | sort quotes on the UI - options are change percent (default), alpha , value , and user |
||
proxy |
--proxy | proxy URL for requests (default is none) | ||
version |
--version | print the current version number |
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-holdings: true
interval: 5
currency: USD
currency-summary-only: false
watchlist:
- NET
- TEAM
- ESTC
- BTC-USD
- SOL.X # Solana price via CoinGecko
- SAMOYEDCOIN.CG # Samoyed price via CoinGecko
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
holdings:
- symbol: SOL1-USD
quantity: 17
unit_cost: 159.10
lots
will automatically be watchedquantity
, unit_cost
) to the same symbol
, write two symbol
entries - see ARKW
example above.ticker.yaml
are optional.ticker.yaml
can be set in user home directory, the current directory, or XDG config home
With --show-summary
, --show-tags
, --show-fundamentals
, --show-holdings
, and --show-separator
options set, the layout and information displayed expands:
It's possible to set a custom sort order with the --sort
flag or sort:
config option with these options:
alpha
to sort alphabetically by symbolvalue
to sort by position valueuser
to sort by the order defined in configuration with positions on top then lotsWatchlists and holdings can be grouped in .ticker.yml
under the groups
property. While running ticker
, press TAB to cycle forward through groups.
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 firstholdings
property replaces lots
under groups
but serves the same purposeticker
pulls price quotes from Yahoo Finance by default but also supports pulling quotes from CoinGecko which supports price quotes for most cryptocurrencies. In order to pull from a specific data source, use a source suffix:
.X
- symbols with this suffix are shorthand symbols that are specific to ticker and intended to provide more concise and familiar symbols for popular assets (e.g. using SOL.X
rather than SOLANA.CG
)
.CG
- symbols with this suffix will use CoinGecko as the data source. The proper coin name can be found on the CoinGecko page in the API id field (e.g. for SOL
go to the coin's page on CoinGecko, find the value is solana
, and use the symbol SOLANA.CG
in ticker)ticker
supports converting from the exchange's currency to a local currency. This can be set by setting the currency
property in .ticker.yaml
to a ISO 4217 3-digit currency code.
currency
is defined, all values are converted including summary, quote, and positioncurrency
is definedcurrency
is not set (default behavior) and the show-summary
option is enabled, the summary will be calculated in USD regardless of the exchange currency to avoid mixing currenciescurrency-summary-only
is set to true
and a value is set for currency
, only the summary values will be convertedcurrency-disable-unit-cost-conversion
flag to true
, currency conversion will not be done when calculating the cost basis. This can be useful for users that purchase a foreign security and want to use the currency exchange rate at the time of purchase by inputting the unit cost in their local currency (set in currency
) rather than using the most recent currency exchange rate.ticker
supports setting custom color schemes from the config file. Colors are represented by a hex triplet. Below is an annotated example config block from .ticker.yaml
where custom colors are set:
# ~/.ticker.yaml
watchlist:
- NET
- TEAM
- ESTC
- BTC-USD
colors:
text: "#005fff"
text-light: "#0087ff"
text-label: "#00d7ff"
text-line: "#00ffff"
text-tag: "#005fff"
background-tag: "#0087ff"
ticker
supports printing holdings to the terminal as text by using ticker print
. Output defaults to JSON but CSV output can also be generated by passing the --format=csv
flag.
$ ticker --config=./.ticker.yaml print
[{"name":"Airbnb, Inc.","symbol":"ABNB","price":164.71,"value":16965.13,"cost":15038,"quantity":103,"weight":53.66651978212161},{"name":"Tesla, Inc.","symbol":"TSLA","price":732.35,"value":14647,"cost":15660,"quantity":20,"weight":46.33348021787839}]
--config
flag--show-tags
flag to include timeliness of data alongside quotes in ticker
.ticker
HORIZONTAL LINE SEPARATOR
unicode character is required to properly render separators (--show-separator
option).ticker.yaml
from the command lineRunning tests:
ginkgo -cover ./...
Linting:
golangci-lint run
ticker
uses