yoghurt 0.1.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- yoghurt-0.1.1/.gitignore +31 -0
- yoghurt-0.1.1/AGENTS.md +75 -0
- yoghurt-0.1.1/LICENSE +21 -0
- yoghurt-0.1.1/PKG-INFO +460 -0
- yoghurt-0.1.1/README.md +430 -0
- yoghurt-0.1.1/pyproject.toml +219 -0
- yoghurt-0.1.1/src/yoghurt/__init__.py +7 -0
- yoghurt-0.1.1/src/yoghurt/__main__.py +8 -0
- yoghurt-0.1.1/src/yoghurt/cli.py +808 -0
- yoghurt-0.1.1/src/yoghurt/client.py +361 -0
- yoghurt-0.1.1/src/yoghurt/commands.py +2722 -0
- yoghurt-0.1.1/src/yoghurt/docs/QUERY_DSL.md +330 -0
- yoghurt-0.1.1/src/yoghurt/docs/QUOTE_FIELDS.md +146 -0
- yoghurt-0.1.1/src/yoghurt/docs/QUOTE_SUMMARY_MODULES.md +67 -0
- yoghurt-0.1.1/src/yoghurt/docs/TIMESERIES_TYPES.md +132 -0
- yoghurt-0.1.1/src/yoghurt/docs/__init__.py +1 -0
- yoghurt-0.1.1/src/yoghurt/exceptions.py +38 -0
- yoghurt-0.1.1/src/yoghurt/params.py +210 -0
- yoghurt-0.1.1/src/yoghurt/query.py +616 -0
- yoghurt-0.1.1/src/yoghurt/session_cache.py +101 -0
- yoghurt-0.1.1/src/yoghurt/types.py +8 -0
- yoghurt-0.1.1/tests/__init__.py +1 -0
- yoghurt-0.1.1/tests/test_cli.py +2674 -0
- yoghurt-0.1.1/tests/test_client.py +111 -0
- yoghurt-0.1.1/tests/test_help_verbose.py +112 -0
- yoghurt-0.1.1/tests/test_package_data.py +34 -0
- yoghurt-0.1.1/tests/test_params.py +167 -0
- yoghurt-0.1.1/tests/test_query.py +310 -0
- yoghurt-0.1.1/tests/test_session_cache.py +40 -0
yoghurt-0.1.1/.gitignore
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Byte-compiled / optimized files
|
|
2
|
+
__pycache__/
|
|
3
|
+
|
|
4
|
+
# Test and coverage output
|
|
5
|
+
.pytest_cache/
|
|
6
|
+
.coverage
|
|
7
|
+
coverage.xml
|
|
8
|
+
junit*.xml
|
|
9
|
+
htmlcov/
|
|
10
|
+
|
|
11
|
+
# Virtual environments and uv cache
|
|
12
|
+
.venv/
|
|
13
|
+
.uv-cache/
|
|
14
|
+
|
|
15
|
+
# Tool caches
|
|
16
|
+
.ruff_cache/
|
|
17
|
+
.tox/
|
|
18
|
+
.mypy_cache/
|
|
19
|
+
node_modules/
|
|
20
|
+
|
|
21
|
+
# Editors
|
|
22
|
+
.vscode/
|
|
23
|
+
|
|
24
|
+
# Local session/cache material
|
|
25
|
+
yahoo-session.json
|
|
26
|
+
.playwright-cli
|
|
27
|
+
.playwright-mcp
|
|
28
|
+
docs/MISSING_ENDPOINTS.md
|
|
29
|
+
docs/plans/
|
|
30
|
+
.worktrees/
|
|
31
|
+
output/
|
yoghurt-0.1.1/AGENTS.md
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# AGENTS.md
|
|
2
|
+
|
|
3
|
+
## Project
|
|
4
|
+
Yoghurt exposes Yahoo Finance HTTP endpoints as an LLM-friendly CLI that prints the raw JSON Yahoo returns.
|
|
5
|
+
|
|
6
|
+
## Stack
|
|
7
|
+
Python 3.10+, uv, httpx, argparse, pytest, pytest-httpx, ruff, pyright, tox, hatchling.
|
|
8
|
+
|
|
9
|
+
## Commands
|
|
10
|
+
- Install/sync: `uv sync --all-groups`
|
|
11
|
+
- Run CLI: `uv run yoghurt --help`
|
|
12
|
+
- Test single: `uv run pytest path/to/test_file.py`
|
|
13
|
+
- Test all: `uv run pytest`
|
|
14
|
+
- Lint: `uv run ruff check .`
|
|
15
|
+
- Format: `uv run ruff format .`
|
|
16
|
+
- Type check: `uv run pyright`
|
|
17
|
+
- Spell check: `npm run spell` or `make spell`
|
|
18
|
+
- Spell changed files: `npm run spell:changed` or `make spell-changed`
|
|
19
|
+
- Full check: `uv run tox`
|
|
20
|
+
|
|
21
|
+
## Architecture
|
|
22
|
+
- `src/yoghurt/client.py` -> Yahoo HTTP session, cookies, crumbs, retries, raw response retrieval.
|
|
23
|
+
- `src/yoghurt/session_cache.py` -> persisted Yahoo cookie/crumb cache for one-shot CLI reuse.
|
|
24
|
+
- `src/yoghurt/commands.py` -> command metadata used to build CLI commands, validation, and help.
|
|
25
|
+
- `src/yoghurt/params.py` -> CLI parameter coercion and validation helpers.
|
|
26
|
+
- `src/yoghurt/cli.py` -> argparse command tree and stdout/stderr behavior.
|
|
27
|
+
- `tests/` -> pytest tests mirroring `src/yoghurt/`.
|
|
28
|
+
|
|
29
|
+
## Rules
|
|
30
|
+
- IMPORTANT: `--help` is the primary product surface; keep it complete, adaptive, and generated from command metadata where practical.
|
|
31
|
+
- Do not add `describe`, `endpoints`, `params`, or other discovery commands; discovery belongs under `yoghurt --help` and `yoghurt <endpoint> --help`.
|
|
32
|
+
- Print Yahoo response bodies to stdout exactly as returned; do not model, reshape, pretty-print, or interpret endpoint JSON.
|
|
33
|
+
- Keep Yahoo endpoint knowledge in metadata and validation only; do not create response classes.
|
|
34
|
+
- Use `uv run python` for Python scripts; never use bare `python` or `python3`.
|
|
35
|
+
- Never log or print Yahoo cookies, crumbs, or full session-cache contents.
|
|
36
|
+
- Keep runtime dependencies narrow; do not add TUI, ORM, web framework, or rich formatting libraries.
|
|
37
|
+
|
|
38
|
+
## Help text
|
|
39
|
+
When adding or editing a CLI command:
|
|
40
|
+
1. **Summary**: active verb, ≤68 chars (over wraps two-line in top-level help). `Fetch` (data), `List` (catalog), `Run` (saved query), `Query` (DSL), `Show` (symbol-free), `Discover` (curated). Pair sibling commands with the same verb.
|
|
41
|
+
2. **Description**: describe response content, not yoghurt mechanics. Forbidden phrasings: `Calls Yahoo`, `writes to stdout`, `response-model mapping`. The root parser already covers output behavior. Do not paraphrase the summary.
|
|
42
|
+
3. **Notes**: real clarifications only — Yahoo quirks (typos, 500s, paywalled empties), switch-behavior surprises, instrument-type dependencies. Drop live-probe diary entries and redundant restatements.
|
|
43
|
+
4. **Order in `COMMANDS` tuple by importance**: daily-driver → discovery → symbol-bound analysis → market-wide state → schema introspection → `raw`. The DSL parsers (`visualization`, `screener`) slot inside the loop after `screener-predefined` in `cli.py`. Never append to the end.
|
|
44
|
+
5. **Param boilerplate is shared** (`--lang`, `--region`, `--formatted` use exact strings — copy them). Run `pytest -k help` before and after. Pinned-string assertions guard things like `INSIDER_TRANSACTION`, `snake_case`, `Module availability depends on instrument type`. Negative guards (`Calls Yahoo`, `Output:`) forbid implementation leak — do not reintroduce.
|
|
45
|
+
|
|
46
|
+
## Workflow
|
|
47
|
+
- Make minimal changes and avoid unrelated refactors.
|
|
48
|
+
- When adding a command or parameter, update validation, adaptive help, and tests in the same change.
|
|
49
|
+
- Prefer focused unit tests with mocked HTTP; mark live Yahoo tests as integration.
|
|
50
|
+
- Before considering code changes done, run `uv run tox`. It is the expected bundled verification for formatting, lint, type check, tests, and spelling.
|
|
51
|
+
- For command or parameter changes, also run the app against Yahoo after `tox`:
|
|
52
|
+
- `uv run yoghurt <command> --help`
|
|
53
|
+
- `uv run yoghurt <command> <minimal required parameters>`
|
|
54
|
+
- `uv run yoghurt <command> <parameters with each supported date/time format when dates are involved>`
|
|
55
|
+
- `uv run yoghurt <command> <parameters with meaningful modules, types, field lists, booleans, or other values that could affect Yahoo's raw output>`
|
|
56
|
+
- When a command has open-ended value lists such as `modules`, `types`, or `fields`, test representative variations and an all-known-values request when practical.
|
|
57
|
+
- When a parameter has a default, test both omission and explicit override if the default affects the request sent to Yahoo.
|
|
58
|
+
- Ask before making architectural changes that affect the CLI grammar or session-cache behavior.
|
|
59
|
+
|
|
60
|
+
## Yahoo API state probes
|
|
61
|
+
- When checking the current quote-page API surface with browser tooling or live Yahoo calls, use a mixed symbol set so endpoint behavior is not inferred from US mega-cap equities only.
|
|
62
|
+
- Baseline probe symbols:
|
|
63
|
+
- US stocks, high profile and smaller: `AAPL`, `MSFT`, `OKLO`
|
|
64
|
+
- ETFs: `SPY`, `QQQ`, `VT`
|
|
65
|
+
- Futures and commodities: `ES=F`, `CL=F`
|
|
66
|
+
- Forex: `EURUSD=X`
|
|
67
|
+
- Indices: `^GSPC`, `^DJI`, `^IXIC`
|
|
68
|
+
- Crypto: `BTC-USD`
|
|
69
|
+
- Foreign listings: `RY.TO`, `0700.HK`, `7203.T`, `SHEL.L`
|
|
70
|
+
- Add targeted probes when an endpoint is symbol-sensitive, but keep this baseline for broad API-surface discovery and for checking whether an observed endpoint applies across asset classes.
|
|
71
|
+
|
|
72
|
+
## Out of scope
|
|
73
|
+
- Mapping Yahoo JSON into Python domain models.
|
|
74
|
+
- Separate documentation/discovery subcommands.
|
|
75
|
+
- Secrets, API keys, or checked-in session-cache files.
|
yoghurt-0.1.1/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Jocelyn Legault
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
yoghurt-0.1.1/PKG-INFO
ADDED
|
@@ -0,0 +1,460 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: yoghurt
|
|
3
|
+
Version: 0.1.1
|
|
4
|
+
Summary: LLM-friendly CLI for raw Yahoo Finance endpoint JSON.
|
|
5
|
+
Project-URL: Homepage, https://github.com/joce/yoghurt
|
|
6
|
+
Project-URL: Repository, https://github.com/joce/yoghurt
|
|
7
|
+
Project-URL: Issues, https://github.com/joce/yoghurt/issues
|
|
8
|
+
Author-email: Jocelyn Legault <jocelynlegault@gmail.com>
|
|
9
|
+
License-Expression: MIT
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Keywords: cli,finance,llm-tools,quotes,screener,stock-market,yahoo-finance
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Environment :: Console
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: Intended Audience :: Financial and Insurance Industry
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
24
|
+
Classifier: Topic :: Office/Business :: Financial
|
|
25
|
+
Classifier: Topic :: Utilities
|
|
26
|
+
Requires-Python: <4.0,>=3.10
|
|
27
|
+
Requires-Dist: httpx<1.0,>=0.28
|
|
28
|
+
Requires-Dist: typing-extensions>=4.13; python_version < '3.12'
|
|
29
|
+
Description-Content-Type: text/markdown
|
|
30
|
+
|
|
31
|
+
# Yoghurt
|
|
32
|
+
|
|
33
|
+
[](https://github.com/joce/yoghurt/actions/workflows/ci.yml)
|
|
34
|
+
[](https://codecov.io/gh/joce/yoghurt)
|
|
35
|
+
[](https://github.com/astral-sh/ruff)
|
|
36
|
+
[](https://github.com/psf/black)
|
|
37
|
+
[](https://github.com/joce/yoghurt/blob/main/LICENSE)
|
|
38
|
+
|
|
39
|
+
Yahoo!-Originated Graphs, Histories, Updates, Returns & Tickers.
|
|
40
|
+
|
|
41
|
+
Yoghurt brings Yahoo Finance's HTTP endpoints to the command line. It is built
|
|
42
|
+
for scripts, agents, and quick terminal work that needs the JSON returned by
|
|
43
|
+
Yahoo's finance endpoints.
|
|
44
|
+
|
|
45
|
+
The project stays deliberately close to the source. It does not reshape Yahoo
|
|
46
|
+
responses, define finance domain models, or add a discovery API beyond CLI
|
|
47
|
+
help.
|
|
48
|
+
|
|
49
|
+
## Features
|
|
50
|
+
|
|
51
|
+
- Raw Yahoo Finance JSON on stdout, with no pretty-printing or interpretation.
|
|
52
|
+
- Endpoint-specific commands for common Yahoo Finance data.
|
|
53
|
+
- A SQL-flavored DSL (`screener`, `visualization`) for ad-hoc filters and
|
|
54
|
+
cross-entity queries against Yahoo's data-platform endpoints.
|
|
55
|
+
- Generated help that includes examples, parameters, field references, modules,
|
|
56
|
+
or types when Yoghurt knows them.
|
|
57
|
+
- Reusable Yahoo session cache for faster one-shot CLI calls.
|
|
58
|
+
- A `raw` command for Yahoo query paths that do not have dedicated metadata yet.
|
|
59
|
+
|
|
60
|
+
## Install From Source
|
|
61
|
+
|
|
62
|
+
Yoghurt is currently intended to run from a local checkout. It is a Python 3.10+
|
|
63
|
+
project managed with [uv](https://docs.astral.sh/uv/).
|
|
64
|
+
|
|
65
|
+
```powershell
|
|
66
|
+
uv sync --all-groups
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Run the CLI from the repository:
|
|
70
|
+
|
|
71
|
+
```powershell
|
|
72
|
+
uv run yoghurt --help
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Or install it as a package from a local checkout:
|
|
76
|
+
|
|
77
|
+
```powershell
|
|
78
|
+
uv tool install .
|
|
79
|
+
yoghurt --help
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Quick Start
|
|
83
|
+
|
|
84
|
+
Fetch quotes for a few symbols:
|
|
85
|
+
|
|
86
|
+
```powershell
|
|
87
|
+
uv run yoghurt quote AAPL,MSFT,NVDA
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Request specific quote fields:
|
|
91
|
+
|
|
92
|
+
```powershell
|
|
93
|
+
uv run yoghurt quote AAPL,MSFT --fields symbol,longName,companyLogoUrl,regularMarketPrice,overnightMarketPrice
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
See [QUOTE_FIELDS.md](src/yoghurt/docs/QUOTE_FIELDS.md) for the full quote field reference and
|
|
97
|
+
best-effort meanings.
|
|
98
|
+
|
|
99
|
+
Fetch selected quote summary modules:
|
|
100
|
+
|
|
101
|
+
```powershell
|
|
102
|
+
uv run yoghurt quote-summary ^GSPC --modules price,summaryDetail,pageViews,financialsTemplate
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
See [QUOTE_SUMMARY_MODULES.md](src/yoghurt/docs/QUOTE_SUMMARY_MODULES.md) for the researched
|
|
106
|
+
quote-summary module list and descriptions.
|
|
107
|
+
|
|
108
|
+
Fetch quote-type metadata using Yahoo's path-symbol endpoint:
|
|
109
|
+
|
|
110
|
+
```powershell
|
|
111
|
+
uv run yoghurt quote-type ^GSPC
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Fetch chart data for a recent window:
|
|
115
|
+
|
|
116
|
+
```powershell
|
|
117
|
+
uv run yoghurt chart AAPL
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Fetch quote-page sparkline data:
|
|
121
|
+
|
|
122
|
+
```powershell
|
|
123
|
+
uv run yoghurt spark AAPL,MSFT
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Quote-page probes have observed `1d` and `24h` spark ranges; pass values such
|
|
127
|
+
as `--range 24h` through when Yahoo supports them.
|
|
128
|
+
|
|
129
|
+
Fetch recommended symbols for a quote page:
|
|
130
|
+
|
|
131
|
+
```powershell
|
|
132
|
+
uv run yoghurt recommendations-by-symbol AAPL
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Fetch Yahoo calendar events:
|
|
136
|
+
|
|
137
|
+
```powershell
|
|
138
|
+
uv run yoghurt calendar-events AAPL
|
|
139
|
+
uv run yoghurt calendar-events AAPL --modules ipoEvents
|
|
140
|
+
uv run yoghurt calendar-events AAPL --modules secReports
|
|
141
|
+
uv run yoghurt calendar-events AAPL --modules economicEvents --include-all-economic-events
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Confirmed `--modules` values for `calendar-events`:
|
|
145
|
+
|
|
146
|
+
| Module | Returns |
|
|
147
|
+
| --- | --- |
|
|
148
|
+
| `earnings` | Upcoming and recent earnings dates and EPS estimates (default). |
|
|
149
|
+
| `economicEvents` | Macro economic calendar events (CPI, Fed decisions, employment reports, etc.). |
|
|
150
|
+
| `ipoEvents` | Upcoming and recent IPO events. |
|
|
151
|
+
| `secReports` | Recent SEC filing events (10-K, 10-Q, 8-K, etc.). |
|
|
152
|
+
|
|
153
|
+
Fetch sector data:
|
|
154
|
+
|
|
155
|
+
```powershell
|
|
156
|
+
uv run yoghurt sector technology
|
|
157
|
+
uv run yoghurt sector financial-services --with-returns
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
Confirmed sector slugs: `technology`, `financial-services`, `consumer-cyclical`,
|
|
161
|
+
`communication-services`, `healthcare`, `industrials`, `consumer-defensive`,
|
|
162
|
+
`energy`, `basic-materials`, `real-estate`, `utilities`.
|
|
163
|
+
|
|
164
|
+
Run a predefined Yahoo screener:
|
|
165
|
+
|
|
166
|
+
```powershell
|
|
167
|
+
uv run yoghurt screener-predefined MOST_ACTIVES
|
|
168
|
+
uv run yoghurt screener-predefined DAY_GAINERS_CRYPTOCURRENCIES
|
|
169
|
+
uv run yoghurt screener-predefined TOP_OPTIONS_OPEN_INTEREST
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Confirmed predefined screener IDs:
|
|
173
|
+
|
|
174
|
+
**Equities — movers and volume**
|
|
175
|
+
`MOST_ACTIVES`, `MOST_ACTIVE_PENNY_STOCKS`, `UNUSUAL_VOLUME_STOCKS`,
|
|
176
|
+
`DAY_GAINERS`, `DAY_LOSERS`, `MOST_SHORTED_STOCKS`
|
|
177
|
+
|
|
178
|
+
**Equities — size and price**
|
|
179
|
+
`SMALL_CAP_STOCKS`, `LARGE_CAP_STOCKS`, `MOST_EXPENSIVE_STOCKS`,
|
|
180
|
+
`HIGHEST_BETA_STOCKS`, `PINK_SHEET_STOCKS`, `SMALL_CAP_GAINERS`
|
|
181
|
+
|
|
182
|
+
**Equities — technical signals**
|
|
183
|
+
`RECENT_52_WEEK_HIGHS`, `RECENT_52_WEEK_LOWS`,
|
|
184
|
+
`BULLISH_STOCKS_RIGHT_NOW`, `BEARISH_STOCKS_RIGHT_NOW`
|
|
185
|
+
|
|
186
|
+
**Equities — analyst and value**
|
|
187
|
+
`ANALYST_STRONG_BUY_STOCKS`, `MORNINGSTAR_FIVE_STAR_STOCKS`,
|
|
188
|
+
`UNDERVALUED_GROWTH_STOCKS`, `UNDERVALUED_LARGE_CAPS`,
|
|
189
|
+
`UNDERVALUED_WIDE_MOAT_STOCKS`, `GROWTH_TECHNOLOGY_STOCKS`,
|
|
190
|
+
`AGGRESSIVE_SMALL_CAPS`, `HIGHEST_DIVIDEND_STOCKS`
|
|
191
|
+
|
|
192
|
+
**Equities — institutional**
|
|
193
|
+
`MOST_INSTITUTIONALLY_BOUGHT_LARGE_CAP_STOCKS`,
|
|
194
|
+
`MOST_INSTITUTIONALLY_HELD_LARGE_CAP_STOCKS`,
|
|
195
|
+
`TOP_STOCKS_OWNED_BY_CATHIE_WOOD`
|
|
196
|
+
|
|
197
|
+
**Funds and ETFs**
|
|
198
|
+
`TOP_MUTUAL_FUNDS`, `SOLID_LARGE_GROWTH_FUNDS`, `SOLID_MIDCAP_GROWTH_FUNDS`,
|
|
199
|
+
`CONSERVATIVE_FOREIGN_FUNDS`, `HIGH_YIELD_BOND`, `LARGE_BLEND_ETFS`,
|
|
200
|
+
`TECHNOLOGY_ETFS`, `PORTFOLIO_ANCHORS`
|
|
201
|
+
|
|
202
|
+
**Crypto**
|
|
203
|
+
`MOST_ACTIVES_CRYPTOCURRENCIES`, `DAY_GAINERS_CRYPTOCURRENCIES`,
|
|
204
|
+
`DAY_LOSERS_CRYPTOCURRENCIES`
|
|
205
|
+
|
|
206
|
+
**Private companies**
|
|
207
|
+
`52_WEEK_GAINERS_PRIVATE_COMPANY`, `RECENTLY_FUNDED_PRIVATE_COMPANY`
|
|
208
|
+
|
|
209
|
+
**Options**
|
|
210
|
+
`DAY_GAINERS_OPTIONS`, `DAY_LOSERS_OPTIONS`,
|
|
211
|
+
`TOP_OPTIONS_OPEN_INTEREST`, `TOP_OPTIONS_IMPLIED_VOLATALITY` *(Yahoo typo)*
|
|
212
|
+
|
|
213
|
+
Fetch an option chain using Yahoo's default expiration:
|
|
214
|
+
|
|
215
|
+
```powershell
|
|
216
|
+
uv run yoghurt options AAPL
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
Fetch current market session status and trading hours:
|
|
220
|
+
|
|
221
|
+
```powershell
|
|
222
|
+
uv run yoghurt market-time
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
Fetch analyst intelligence for a symbol (put/call ratio, news summary, price
|
|
226
|
+
targets, and ratings):
|
|
227
|
+
|
|
228
|
+
```powershell
|
|
229
|
+
uv run yoghurt analyst AAPL
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
Run a custom screener or cross-entity query with the SQL-flavored DSL:
|
|
233
|
+
|
|
234
|
+
```powershell
|
|
235
|
+
uv run yoghurt screener --query "
|
|
236
|
+
SELECT ticker, intradaymarketcap, sector, peratio.lasttwelvemonths
|
|
237
|
+
FROM EQUITY
|
|
238
|
+
WHERE region = 'us'
|
|
239
|
+
AND sector = 'Technology'
|
|
240
|
+
AND intradaymarketcap >= 10e9
|
|
241
|
+
ORDER BY intradaymarketcap DESC
|
|
242
|
+
LIMIT 25"
|
|
243
|
+
|
|
244
|
+
uv run yoghurt visualization --query "
|
|
245
|
+
SELECT ticker, transactiondate, shares
|
|
246
|
+
FROM INSIDER_TRANSACTION
|
|
247
|
+
WHERE ticker = 'AAPL'
|
|
248
|
+
ORDER BY transactiondate DESC
|
|
249
|
+
LIMIT 50"
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
List the fields, types, and operators available for a given asset class or
|
|
253
|
+
entity (e.g. for use in a `screener` or `visualization` query):
|
|
254
|
+
|
|
255
|
+
```powershell
|
|
256
|
+
uv run yoghurt screener-instrument-fields equity
|
|
257
|
+
uv run yoghurt screener-instrument-fields insider_transaction
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
See [QUERY_DSL.md](src/yoghurt/docs/QUERY_DSL.md) for the full DSL reference: grammar,
|
|
261
|
+
operators, entity routing, body shape, premium-locked entities, and more
|
|
262
|
+
examples.
|
|
263
|
+
|
|
264
|
+
Pass through a Yahoo query path directly:
|
|
265
|
+
|
|
266
|
+
```powershell
|
|
267
|
+
uv run yoghurt raw /v7/finance/quote --param symbols=AAPL,MSFT --param formatted=true
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
## Commands
|
|
271
|
+
|
|
272
|
+
Use root help to see the command list:
|
|
273
|
+
|
|
274
|
+
```powershell
|
|
275
|
+
uv run yoghurt --help
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
Current commands, grouped roughly by how often they're reached for:
|
|
279
|
+
|
|
280
|
+
**Daily-driver fetches**
|
|
281
|
+
|
|
282
|
+
| Command | Yahoo data |
|
|
283
|
+
| --- | --- |
|
|
284
|
+
| `quote` | Fetch quotes for one or more symbols. |
|
|
285
|
+
| `chart` | Fetch historical OHLC chart data for a symbol. |
|
|
286
|
+
| `options` | Fetch the option chain for a symbol. |
|
|
287
|
+
| `quote-summary` | Fetch quoteSummary modules for a symbol. |
|
|
288
|
+
| `quote-type` | Fetch instrument classification metadata for a symbol. |
|
|
289
|
+
| `spark` | Fetch sparkline price series for one or more symbols. |
|
|
290
|
+
|
|
291
|
+
**Discovery (find symbols, build custom queries)**
|
|
292
|
+
|
|
293
|
+
| Command | Yahoo data |
|
|
294
|
+
| --- | --- |
|
|
295
|
+
| `screener-predefined` | Run one or more of Yahoo's predefined screeners. |
|
|
296
|
+
| `visualization` | Query any Yahoo data-platform entity via a SQL-flavored DSL. |
|
|
297
|
+
| `screener` | Query any Yahoo asset class via a SQL-flavored DSL. |
|
|
298
|
+
| `screener-discover` | Discover investment ideas from Yahoo screener modules. |
|
|
299
|
+
|
|
300
|
+
**Symbol-bound analysis**
|
|
301
|
+
|
|
302
|
+
| Command | Yahoo data |
|
|
303
|
+
| --- | --- |
|
|
304
|
+
| `timeseries` | Fetch fundamentals timeseries for a symbol. |
|
|
305
|
+
| `calendar-events` | Fetch earnings, IPO, economic, and SEC filing events for a symbol. |
|
|
306
|
+
| `analyst` | Fetch analyst intelligence for a symbol. |
|
|
307
|
+
| `ratings-top` | Fetch top analyst rating buckets for a symbol. |
|
|
308
|
+
| `recommendations-by-symbol` | Fetch related-symbol recommendations for a symbol. |
|
|
309
|
+
| `price-insights` | Fetch AI-generated price insights for one or more symbols. |
|
|
310
|
+
| `insights` | Fetch research reports and insights for one or more symbols. |
|
|
311
|
+
|
|
312
|
+
**Market-wide state**
|
|
313
|
+
|
|
314
|
+
| Command | Yahoo data |
|
|
315
|
+
| --- | --- |
|
|
316
|
+
| `trending` | List trending tickers for a region. |
|
|
317
|
+
| `sector` | Fetch sector overview, performance, top holdings, and industries. |
|
|
318
|
+
| `market-summary` | Fetch global market summary: indices, futures, forex, crypto. |
|
|
319
|
+
| `market-info` | Fetch commodity and currency market data. |
|
|
320
|
+
| `market-time` | Show current market hours and session status. |
|
|
321
|
+
|
|
322
|
+
**Schema introspection**
|
|
323
|
+
|
|
324
|
+
| Command | Yahoo data |
|
|
325
|
+
| --- | --- |
|
|
326
|
+
| `screener-instrument-fields` | List every field available for a Yahoo data-platform entity. |
|
|
327
|
+
| `timeseries-fields` | List available fundamentals timeseries field names for a type. |
|
|
328
|
+
|
|
329
|
+
**Escape hatch**
|
|
330
|
+
|
|
331
|
+
| Command | Yahoo data |
|
|
332
|
+
| --- | --- |
|
|
333
|
+
| `raw` | Send raw parameters to any Yahoo query path. |
|
|
334
|
+
|
|
335
|
+
Each endpoint has its own adaptive help:
|
|
336
|
+
|
|
337
|
+
```powershell
|
|
338
|
+
uv run yoghurt quote --help
|
|
339
|
+
uv run yoghurt quote-summary --help
|
|
340
|
+
uv run yoghurt calendar-events --help
|
|
341
|
+
uv run yoghurt timeseries --help
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
Endpoint help is the primary documentation surface. It shows Yahoo's target
|
|
345
|
+
endpoint, accepted parameters, defaults, examples, and common open-ended values
|
|
346
|
+
where available.
|
|
347
|
+
|
|
348
|
+
### Chart
|
|
349
|
+
|
|
350
|
+
The `chart` command calls Yahoo's `/v8/finance/chart/{symbol}` endpoint without
|
|
351
|
+
requesting a crumb:
|
|
352
|
+
|
|
353
|
+
```powershell
|
|
354
|
+
uv run yoghurt chart AAPL
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
When period arguments are omitted, Yoghurt uses a recent quote-page-shaped
|
|
358
|
+
window: `period1` defaults to three days before execution time, `period2`
|
|
359
|
+
defaults to execution time, `--interval` defaults to `1m`, and `--events`
|
|
360
|
+
defaults to `div,split,earn`. User-provided events are comma-separated; Yoghurt
|
|
361
|
+
packs them for Yahoo internally. Extended-hours data is opt-in with
|
|
362
|
+
`--include-pre-post`.
|
|
363
|
+
|
|
364
|
+
### Timeseries
|
|
365
|
+
|
|
366
|
+
The `timeseries` command can also run with only a ticker:
|
|
367
|
+
|
|
368
|
+
```powershell
|
|
369
|
+
uv run yoghurt timeseries AAPL
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
Its default type list matches the Yahoo quote/analysis page request for
|
|
373
|
+
earnings-release, analyst-rating, and economic-event timeseries data. When
|
|
374
|
+
period arguments are omitted, Yoghurt uses a recent quote-page-style window:
|
|
375
|
+
`period1` defaults to three days before execution time and `period2` defaults
|
|
376
|
+
to execution time.
|
|
377
|
+
|
|
378
|
+
See [TIMESERIES_TYPES.md](src/yoghurt/docs/TIMESERIES_TYPES.md) for the observed `--type`
|
|
379
|
+
reference with descriptions.
|
|
380
|
+
|
|
381
|
+
## Dates and Booleans
|
|
382
|
+
|
|
383
|
+
Date and datetime parameters accept:
|
|
384
|
+
|
|
385
|
+
- Unix timestamps, such as `1510876800`.
|
|
386
|
+
- Date-only values, such as `2017-11-17`.
|
|
387
|
+
- ISO datetime values.
|
|
388
|
+
|
|
389
|
+
Date-only values are converted at UTC midnight before they are sent to Yahoo.
|
|
390
|
+
For endpoints with `period1` and `period2`, documented defaults let ticker-only
|
|
391
|
+
requests run, `period2` defaults to the current Unix timestamp when omitted, and
|
|
392
|
+
Yoghurt rejects windows where `period2` is not greater than `period1`. Supplying
|
|
393
|
+
`period2` without `period1` is also rejected.
|
|
394
|
+
|
|
395
|
+
Boolean parameters accept common true and false forms such as `true`, `false`,
|
|
396
|
+
`1`, `0`, `yes`, and `no`.
|
|
397
|
+
|
|
398
|
+
## Session Cache
|
|
399
|
+
|
|
400
|
+
Most Yahoo endpoints require a cookie and crumb. Yoghurt establishes that session
|
|
401
|
+
state automatically and caches it for reuse across CLI calls.
|
|
402
|
+
|
|
403
|
+
Useful global options:
|
|
404
|
+
|
|
405
|
+
```powershell
|
|
406
|
+
uv run yoghurt --refresh-session quote AAPL
|
|
407
|
+
uv run yoghurt --no-session-cache quote AAPL
|
|
408
|
+
uv run yoghurt --session-cache C:\tmp\yoghurt-session.json quote AAPL
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
Yoghurt never prints cookies, crumbs, or full session-cache contents.
|
|
412
|
+
|
|
413
|
+
## Output Contract
|
|
414
|
+
|
|
415
|
+
Yoghurt writes the Yahoo response body to stdout exactly as returned. This makes
|
|
416
|
+
it easy to pipe into tools that expect JSON:
|
|
417
|
+
|
|
418
|
+
```powershell
|
|
419
|
+
uv run yoghurt quote AAPL | jq .
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
Diagnostics and errors are written to stderr.
|
|
423
|
+
|
|
424
|
+
## Development
|
|
425
|
+
|
|
426
|
+
Install development dependencies:
|
|
427
|
+
|
|
428
|
+
```powershell
|
|
429
|
+
uv sync --all-groups
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
Run the test suite:
|
|
433
|
+
|
|
434
|
+
```powershell
|
|
435
|
+
uv run pytest
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
Run checks locally:
|
|
439
|
+
|
|
440
|
+
```powershell
|
|
441
|
+
uv run black --check .
|
|
442
|
+
uv run ruff format --check --diff .
|
|
443
|
+
uv run ruff check .
|
|
444
|
+
uv run pyright
|
|
445
|
+
uv run pytest -n auto
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
Run the full project check, including Python checks and spelling:
|
|
449
|
+
|
|
450
|
+
```powershell
|
|
451
|
+
uv run tox
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
When adding or changing command metadata, update validation, adaptive help, and
|
|
455
|
+
tests together. Then verify the relevant command against Yahoo with its help,
|
|
456
|
+
minimal required parameters, and representative optional parameters.
|
|
457
|
+
|
|
458
|
+
## License
|
|
459
|
+
|
|
460
|
+
Yoghurt is released under the MIT License. See [LICENSE](LICENSE).
|