Metadata-Version: 2.4
Name: fincraft
Version: 0.0.3
Summary: Financial analysis reports for a finance vault
Keywords: finance,reports,technical-analysis
Author: Furechan
Author-email: Furechan <furechan@xsmail.com>
License-Expression: MIT
Classifier: Programming Language :: Python :: 3
Requires-Dist: bardata[tiingo,massive]
Requires-Dist: numpy
Requires-Dist: pandas
Requires-Dist: scipy
Requires-Dist: click
Requires-Dist: pydantic
Requires-Dist: pyyaml
Requires-Dist: scikit-learn ; extra == 'research'
Requires-Dist: matplotlib ; extra == 'research'
Requires-Dist: bardata[yahoo] ; extra == 'yahoo'
Requires-Python: >=3.10
Provides-Extra: research
Provides-Extra: yahoo
Description-Content-Type: text/markdown

# fincraft

Financial analysis reports for a finance vault — a command-line tool that turns a watchlist markdown note into a full markdown performance report.

`fincraft` is layout-agnostic: it takes explicit paths, parses a watchlist note's frontmatter, and writes a markdown report to stdout (or a file). It reads no environment variables itself and never scans or writes a vault — orchestration (finding notes, saving reports) is the caller's job.

## Install

```shell
uvx fincraft --help
# or
pip install fincraft
```

Price data is fetched via [bardata](https://pypi.org/project/bardata/); the Tiingo and Massive sources are bundled. The data source and credentials are resolved from the environment (e.g. `BARDATA_DEFAULT_ENDOFDAY=tiingo`, `TIINGO_API_KEY=…`).

## Usage

```shell
fincraft perf-report Watchlists/momentum-etfs.md            # report to stdout
fincraft perf-report Watchlists/momentum-etfs.md -o out.md  # write to a file
fincraft perf-report --tickers QUAL,MTUM,SPY --benchmark SPY

fincraft watchlists Watchlists/        # list watchlist notes in a directory
fincraft show Watchlists/momentum-etfs.md   # parsed frontmatter
```

## Watchlist notes

Any `.md` note with YAML frontmatter:

```yaml
---
tickers: [MTUM, SPMO, VFMO]
benchmark: SPY        # or a list [SPY, QQQ]; first is primary
basket: true          # add an equal-weight basket as an extra benchmark
---
```

See `sample-vault/` for a complete worked example.
