[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-76383":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":9,"rankLanguage":9,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":22,"topics":24,"createdAt":9,"pushedAt":9,"updatedAt":25,"readmeContent":26,"aiSummary":27,"trendingCount":15,"starSnapshotCount":15,"syncStatus":16,"lastSyncTime":28,"discoverSource":29},76383,"stockpile","medloh\u002Fstockpile","medloh","A pile of stock related tools",null,"Python",153,86,5,1,0,2,22,101,6,5.82,"Other",false,"main",[],"2026-06-12 02:03:41","# stockpile\n\nMonorepo of stock portfolio tools: options scanner, position\ntracker, cost basis charts, and shared parsing\u002Ffinance utilities.\n\n> **Disclaimer** — This software is provided free of charge for\n> non-commercial use, as-is, with no warranty of any kind. There is\n> no guarantee of accuracy, completeness, or fitness for any particular\n> purpose. All tools rely on third-party data sources (Yahoo Finance,\n> Schwab developer API, brokerage CSV exports, Google Sheets) whose\n> availability, accuracy,\n> and format can change\n> without notice; output quality is limited by what those sources\n> return. Nothing produced by any tool in this repository constitutes\n> financial advice. Investing and options trading involve substantial\n> risk of loss. Do your own research before making any financial\n> decision. The authors are not responsible for any trading losses or\n> other damages arising from use of this software.\n\n## Projects\n\n- **shared** — pip-installable package (`stocks-shared`): CSV parsers\n  (Schwab, Robinhood, Fidelity, Merrill Edge, and the\n  [stockpile manual format](docs\u002Fstockpile-format.md)), Yahoo Finance\n  and Schwab live API helpers, FIFO analysis, Black-Scholes pricing\n- **tools** — one-off migration scripts: Schwab→Robinhood CSV\n  conversion, Merrill Edge PDF statement extractor\n- **[positions](positions\u002FREADME.md)** — Google Sheets position tracker\n- **[cost-basis-charts](cost-basis-charts\u002FREADME.md)** — Interactive\n  cost basis vs. price charts (YouTube tutorial project)\n- **[options-scanner](options-scanner\u002FREADME.md)** — Rank options by\n  how far their implied volatility sits above or below a fitted\n  surface, surfacing IV-rich candidates to sell or IV-cheap ones to\n  buy. Three entry points: a CLI scanner for a single ticker, a\n  portfolio scanner that reads a brokerage CSV, and a Streamlit web UI.\n  Supports Yahoo Finance (default, no setup) or the Schwab developer\n  API (real-time quotes and Greeks)\n- **[google-sheets-setup](google-sheets-setup\u002FREADME.md)** — Google\n  Sheets API setup docs\n\n## Quick start\n\nThe fastest way to see something useful after cloning is the options\nscanner web UI — no CLI knowledge required:\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fmedloh\u002Fstockpile.git\ncd stockpile\nuv sync\nuv run streamlit run options-scanner\u002Frun_app.py\n```\n\nA browser tab opens at http:\u002F\u002Flocalhost:8501. Type a ticker on the\n**Single Ticker** tab and hit Scan, or drag a brokerage CSV onto the\n**Portfolio** tab.\n\nFor the other tools (charts, positions tracker), see the\n[Running the projects](#running-the-projects) section below.\n\n## Using Claude Code with this repo\n\nThe easiest way to get any of these tools running is with a Claude\nCode subscription. Clone the repo, open Claude Code in the project\ndirectory, and ask it to help you configure and run the tool with\nyour own brokerage export. It can walk you through setup, fix any\nissues, and add new features — no manual coding required. All of the\ntools in this repo were built this way.\n\nGet Claude Code at: https:\u002F\u002Fclaude.ai\u002Fcode\n\nSubscriptions start at $20\u002Fmonth (Pro plan). The Max plan ($100\u002Fmonth)\ngives higher usage limits, which is useful for longer coding sessions.\n\n### Project slash commands\n\nThis repo ships with project-scoped slash commands under\n`.claude\u002Fcommands\u002F`. Inside a Claude Code session, type `\u002F` to see\nthem:\n\n| Command | What it does |\n|---------|--------------|\n| `\u002Fscan TICKER [flags]` | Run the options-scanner CLI for one ticker |\n| `\u002Fscan-portfolio --csv FILE` | Scan every open position in a brokerage CSV |\n| `\u002Fscan-ui` | Launch the options scanner web UI |\n| `\u002Fcharts [--symbol X]` | Generate cost-basis charts |\n| `\u002Fpositions` | Run the Google Sheets position tracker |\n\n## Requirements\n\n- Python 3.12 or later\n- [uv](https:\u002F\u002Fdocs.astral.sh\u002Fuv\u002F) — fast Python package and project\n  manager (replaces pip + venv)\n\n## Installing Python\n\nIf you don't have Python 3.12+, the easiest way is to let `uv` manage\nit for you:\n\n```bash\nuv python install 3.12\n```\n\nOr install manually from [python.org](https:\u002F\u002Fwww.python.org\u002Fdownloads\u002F)\nand ensure `python3 --version` reports 3.12+.\n\n## Installing uv\n\n```bash\n# macOS \u002F Linux\ncurl -LsSf https:\u002F\u002Fastral.sh\u002Fuv\u002Finstall.sh | sh\n\n# Windows (PowerShell)\npowershell -ExecutionPolicy ByPass -c \"irm https:\u002F\u002Fastral.sh\u002Fuv\u002Finstall.ps1 | iex\"\n```\n\nAfter installation, restart your terminal so `uv` is on your PATH.\n\n## How the virtual environment works\n\nThis repo uses **uv workspaces**. The root `pyproject.toml` declares\nall sub-projects (`shared`, `positions`, `cost-basis-charts`,\n`options-scanner`) as workspace members. When you run `uv sync`, uv:\n\n1. Creates a single shared `.venv\u002F` at the repo root\n2. Installs all dependencies for every workspace member into it\n3. Installs `shared` (the `stocks-shared` package) as an editable\n   local package so changes to it are immediately reflected in the\n   other projects\n\nYou never need to activate the virtual environment manually — `uv run`\nhandles that automatically.\n\n## Setup\n\nClone the repo and sync dependencies (run once, and again after any\n`pyproject.toml` change):\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fmedloh\u002Fstockpile.git\ncd stockpile\nuv sync\n```\n\n## Running the projects\n\nAlways use `uv run` from the **repo root**. This ensures the correct\nvirtual environment and the `stocks-shared` package are available\nregardless of which sub-project you're running.\n\n```bash\n# Cost basis charts\nuv run cost-basis-charts\u002Frun_charts.py\n\n# Cost basis charts — single symbol only\nuv run cost-basis-charts\u002Frun_charts.py --symbol SCHW\n\n# Position tracker (Google Sheets)\nuv run positions\u002Frun_tracker.py\n\n# Options scanner — single ticker\nuv run options-scanner\u002Frun_scanner.py AMD --calls\n\n# Options scanner — every open position in a brokerage CSV\nuv run options-scanner\u002Frun_portfolio.py --csv input\u002Fschwab028.csv\n\n# Options scanner — Streamlit web UI (browser-based, no CLI knowledge)\nuv run streamlit run options-scanner\u002Frun_app.py\n```\n\n**Do not** use `python` or `python3` directly — those will use the\nsystem Python which doesn't have the project's dependencies installed.\n\n## Configuration\n\nEach sub-project has a `config.toml.example`. Copy it and fill in\nyour details:\n\n```bash\n# macOS \u002F Linux \u002F Git Bash\ncp cost-basis-charts\u002Fconfig.toml.example cost-basis-charts\u002Fconfig.toml\ncp positions\u002Fconfig.toml.example positions\u002Fconfig.toml\ncp options-scanner\u002Fconfig.toml.example options-scanner\u002Fconfig.toml\n\n# Windows PowerShell or CMD\ncopy cost-basis-charts\\config.toml.example cost-basis-charts\\config.toml\ncopy positions\\config.toml.example positions\\config.toml\ncopy options-scanner\\config.toml.example options-scanner\\config.toml\n```\n\nSee the comments inside each file for what each field means.\n\nThe options-scanner config is optional — Yahoo Finance works with no\nconfiguration. It is only needed to enable the Schwab data source\n(real-time quotes and Greeks). See\n[options-scanner\u002FSCHWAB_DATA_SOURCE.md](options-scanner\u002FSCHWAB_DATA_SOURCE.md)\nfor setup instructions.\n\nPlace your brokerage CSV exports in `input\u002F` — both tools look there\nby default. The `input\u002F` directory is gitignored so your files stay\nlocal.\n\n## Adding new dependencies\n\nTo add a package to a specific sub-project:\n\n```bash\nuv add plotly --project cost-basis-charts\n```\nThen re-run `uv sync` to update the lockfile.\n\n## Troubleshooting\n\n### Windows: `ImportError: DLL load failed while importing base`\n\nIf you see an error like this when running on Windows:\n\n```\nImportError: DLL load failed while importing base:\nAn Application Control policy has blocked this file.\n```\n\nThis is Windows blocking pandas' C extension DLLs due to an\nApplication Control policy. Try running from an **administrator\nPowerShell**:\n\n1. Right-click PowerShell and select **Run as administrator**\n2. Navigate to the repo: `cd path\\to\\stockpile`\n3. Run normally: `uv run cost-basis-charts\u002Frun_charts.py`\n\n## Contributing\n\nContributions are welcome. Since this is a public repo, anyone can\nfork it and open a pull request — no special permissions needed on\nyour end.\n\n### The fork → PR workflow\n\n1. **Fork the repo** on GitHub (top-right \"Fork\" button). This creates\n   your own copy under your GitHub account.\n\n2. **Clone your fork** and create a branch for your changes:\n   ```bash\n   git clone https:\u002F\u002Fgithub.com\u002F\u003Cyour-username>\u002Fstockpile.git\n   cd stockpile\n   git checkout -b my-feature\n   ```\n\n3. **Make your changes**, then push the branch to your fork:\n   ```bash\n   git add \u003Cfiles>\n   git commit -m \"describe your change\"\n   git push origin my-feature\n   ```\n\n4. **Open a Pull Request** on GitHub. Navigate to your fork and click\n   **Contribute → Open pull request**. Set the base repository to\n   `medloh\u002Fstockpile` and base branch to `main`.\n\n5. **Review and merge** — the repo owner reviews the diff, leaves\n   any comments, and merges when ready.\n\n### Tips\n\n- Keep PRs focused on one change — easier to review and less likely\n  to conflict with other work.\n- If your branch falls behind `main`, rebase before opening the PR:\n  ```bash\n  git fetch upstream\n  git rebase upstream\u002Fmain\n  ```\n  (Add the upstream remote once with\n  `git remote add upstream https:\u002F\u002Fgithub.com\u002Fmedloh\u002Fstockpile.git`)\n- PRs that touch `shared\u002F` affect all sub-projects — mention that in\n  your PR description so it gets extra scrutiny.\n\n## License\n\nThis project is free for personal, non-commercial use under the\n[Creative Commons Attribution-NonCommercial 4.0 International\n(CC BY-NC 4.0)](https:\u002F\u002Fcreativecommons.org\u002Flicenses\u002Fby-nc\u002F4.0\u002F)\nlicense. Commercial use is not permitted without a separate agreement.\nIf you're interested in licensing this for commercial purposes, reach\nout to driekhof@gmail.com.\n\n","stockpile 是一个集成了多种股票投资组合管理工具的单体仓库，包括期权扫描器、持仓跟踪器、成本基础图表及共享解析\u002F金融实用程序。核心功能包括基于Yahoo Finance和Schwab API的数据分析、Black-Scholes定价模型应用以及CSV文件解析等。项目采用Python编写，并提供CLI、Web UI（Streamlit）等多种交互方式。适用于个人投资者进行非商业用途的投资组合管理与分析，帮助用户更直观地理解和管理自己的投资。请注意，所有工具依赖第三方数据源，使用时需自行承担风险。","2026-06-11 03:55:00","CREATED_QUERY"]