You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+17-16Lines changed: 17 additions & 16 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,15 +7,15 @@
7
7
8
8
<h1align="center">Ticker</h2>
9
9
<palign="center">
10
-
Terminal stock watcher and stock position tracker
10
+
Terminal stock & crypto price watcher and position tracker
11
11
</p>
12
12
<palign="center">
13
13
<imgalign="center"src="./docs/ticker.gif" />
14
14
</p>
15
15
16
16
## Features
17
17
18
-
* Live stock price quotes
18
+
* Live stock & crypto price quotes
19
19
* Track value of your stock positions
20
20
* Support for multiple cost basis lots
21
21
* Support for pre and post market price quotes
@@ -85,8 +85,8 @@ ticker -w NET,AAPL,TSLA
85
85
|`show-summary`||--show-summary ||show total day change, total value, and total value change|
86
86
|`show-holdings`||--show-holdings ||show holdings including weight, average cost, and quantity|
87
87
|`sort`||--sort ||sort quotes on the UI - options are change percent (default), `alpha`, `value`, and `user`|
88
-
|`proxy`||--proxy ||proxy URL for requests (default is none)|
89
88
|`version`||--version ||print the current version number|
89
+
|`debug`||||enable debug logging to `./ticker-log-<date>.log`|
90
90
91
91
## Configuration
92
92
@@ -107,9 +107,8 @@ watchlist:
107
107
- TEAM
108
108
- ESTC
109
109
- BTC-USD # Bitcoin price via Yahoo
110
-
- SOL.X # Solana price via CoinGecko
111
-
- SAMOYEDCOIN.CG # Samoyed price via CoinGecko
112
-
- CARDANO.CC # Samoyed price via CoinCap
110
+
- SOL.X # Solana price via Coinbase
111
+
- BIT-30MAY25-CDE.CB # Bitcoin futures contract price via Coinbase
113
112
lots:
114
113
- symbol: "ABNB"
115
114
quantity: 35.0
@@ -132,9 +131,9 @@ groups:
132
131
unit_cost: 159.10
133
132
```
134
133
135
-
* Symbols not on the watchlist that exists in `lots` will automatically be watched
136
-
* To add multiple (`quantity`, `unit_cost`) to the same `symbol`, write two `symbol` entries - see `ARKW` example above
137
134
* All properties in `.ticker.yaml` are optional
135
+
* Symbols not on the watchlist that exists in `lots` are implicitly added to the watchlist
136
+
* To add multiple cost basis lots (`quantity`, `unit_cost`) for the same `symbol`, include two ore more entries - see `ARKW` example above
138
137
* `.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)
139
138
140
139
### Display Options
@@ -154,22 +153,22 @@ It's possible to set a custom sort order with the `--sort` flag or `sort:` confi
154
153
155
154
### Groups
156
155
157
-
Watchlists and holdings can be grouped in `.ticker.yml` under the `groups` property. While running `ticker`, press <kbd>TAB</kbd> to cycle forward through groups.
156
+
Watchlists and holdings can be grouped in `.ticker.yml` under the `groups` property. While running `ticker`, press <kbd>TAB</kbd> to cycle forward through groups or <kbd>SHIFT+TAB</kbd> to cycle backward.
158
157
159
158
* 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
160
159
* Ordering is defined by order in the configuration file
161
160
* The `holdings` property replaces `lots` under `groups` but serves the same purpose
162
161
163
162
### Data Sources & Symbols
164
163
165
-
`ticker` 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:
164
+
`ticker` pulls market data from a few different sources with Yahoo Finance as the default. Symbols for non default data sources follow the format `<symbol>.<source>` where `<symbol>` is the canonical symbol within that data source and `<source>` is the data source specifier. Below is a list of the supported data sources and their specifiers:
166
165
167
166
* *none* - symbols with no suffix will default to Yahoo Finance as the data source
168
167
* `.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`)
169
-
* The full list of ticker symbols can be found [here](https://github.com/achannarasappa/ticker-static/blob/master/symbols.csv). Initial values are populated with the top 250 cryptocurrencies from CoinGecko at time of release
170
-
* `.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](https://www.coingecko.com/en/coins/solana), find the value is `solana`, and use the symbol `SOLANA.CG` in ticker)
171
-
* `.CC` - symbols with this suffix will use CoinCap as the data source. The coin name can be found on [CoinCap](https://coincap.io/) by searching for the asset by name. The name of the asset in the URL bar is the name (e.g. for `EGLD` search for "MultiversX" and on the asset page the url will have the name of the coin: `elrond-egld`)
172
-
* `.CB` - symbols with this suffix will use Coinbase as the data source. The symbol can be found by searching for the asset on [Coinbase](https://www.coinbase.com/explore/s/listed) and finding the symbol for the asset. (e.g. for Starknet check the [asset page](https://www.coinbase.com/price/starknet-token) to find the symbol `STRK` and set the symbol to `STRK.CB` in ticker).
168
+
* The full list of ticker symbols can be found [here](https://github.com/achannarasappa/ticker-static/blob/master/symbols.csv). Initial values are populated with the top cryptocurrencies by volume on Coinbase at the time of update
169
+
* `.CB` - symbols with this suffix will use Coinbase as the data source. The symbol can be found by searching for the asset on [Coinbase](https://www.coinbase.com/explore/s/listed) and finding the symbol for the asset. (e.g. for Starknet check the [market page](https://www.coinbase.com/advanced-trade/spot/STRK-USD) to find the symbol `STRK` and set the symbol to `STRK.CB` in ticker).
170
+
171
+
Note: Coincap (`.CC`) and CoinGecko (`.CG`) are no longer supported after v5.0.0
173
172
174
173
### Currency Conversion
175
174
@@ -182,7 +181,7 @@ Watchlists and holdings can be grouped in `.ticker.yml` under the `groups` prope
182
181
* If a `currency` 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 currencies
183
182
* Currencies are retrieved only once at start time - currency exchange rates do fluctuate over time and thus converted values may vary depending on when ticker is started
184
183
* If the `currency-summary-only` is set to `true` and a value is set for `currency`, only the summary values will be converted
185
-
* If `currency-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.
184
+
* If `currency-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 non-US asset 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.
* **Real-time quotes** - Quotes are pulled from Yahoo finance which may provide delayed stock quotes depending on the exchange. The major US exchanges (NYSE, NASDAQ) have real-time quotes however other exchanges may not. Consult the [help article](https://help.yahoo.com/kb/SLN2310.html) on exchange delays to determine which exchanges you can expect delays for or use the `--show-tags` flag to include timeliness of data alongside quotes in `ticker`.
223
+
* **Market data delay**
224
+
* _Yahoo Finance_ - Market data pulled from Yahoo finance will have some lag (<~30s) introduced by intermediary systems and certain exchanges will impose intentional delays on data. NYSE and NASDAQ offer real-time market data but other exchanges may not. Consult the [help article](https://help.yahoo.com/kb/SLN2310.html) on exchange delays to determine which exchanges you can expect delays for or use the `--show-tags` flag to include timeliness of data alongside quotes in `ticker`. Yahoo Finance also relies on polling which introduces some delay (>=5s). `refresh-interval` determines the polling frequency.
225
+
* _Coinbase_ - Market data for spot assets on Coinbase is directly streamed from the exchange through a WebSocket connection and is available in near real-time. Derivatives assets (i.e. symbols with `-CDE` suffix) are polling based however Basis is updated in near real-time based on spot market data changes
225
226
* **Non-US Symbols, Forex, ETFs** - The names for there may differ from their common name/symbols. Try searching the native name in [Yahoo finance](https://finance.yahoo.com/) to determine the symbol to use in `ticker`
226
227
* **Terminal fonts** - Font with support for the [`HORIZONTAL LINE SEPARATOR` unicode character](https://www.fileformat.info/info/unicode/char/23af/fontsupport.htm) is required to properly render separators (`--show-separator` option)
rootCmd.Flags().BoolVar(&options.ExtraInfoFundamentals, "show-fundamentals", false, "display open price, high, low, and volume for each quote")
67
67
rootCmd.Flags().BoolVar(&options.ShowSummary, "show-summary", false, "display summary of total gain and loss for positions")
68
68
rootCmd.Flags().BoolVar(&options.ShowHoldings, "show-holdings", false, "display average unit cost, quantity, portfolio weight")
69
-
rootCmd.Flags().StringVar(&options.Proxy, "proxy", "", "proxy URL for requests (default is none)")
70
69
rootCmd.Flags().StringVar(&options.Sort, "sort", "", "sort quotes on the UI. Set \"alpha\" to sort by ticker name. Set \"value\" to sort by position value. Keep empty to sort according to change percent")
71
70
72
71
printCmd.PersistentFlags().StringVar(&optionsPrint.Format, "format", "", "output format for printing holdings. Set \"csv\" to print as a CSV or \"json\" for JSON. Defaults to JSON.")
0 commit comments