# `ZenQuant`
[🔗](https://github.com/ZenHive/zen_quant/blob/v0.8.1/lib/zen_quant.ex#L1)

Pure-function trading analytics for Elixir — discoverable APIs, no processes, no I/O.

## Start Here: Self-Describing API

ZenQuant describes itself. Before using `exports()` or `h()`, try:

    ZenQuant.describe()                          # All modules with purpose
    ZenQuant.describe(:funding)                  # Functions in Funding module
    ZenQuant.describe(:funding, :annualize)      # Full detail: params, returns, errors

Short names: `ZenQuant.PowerLaw` → `:power_law`, `ZenQuant.Options.Deribit` → `:deribit`.

## Machine-Readable Access

For runtime agents and non-interactive consumers:

    ZenQuant.Funding.__api__()                   # All hints for one module
    ZenQuant.Funding.__api__(:annualize)          # Hints for one function
    ZenQuant.Manifest.build()                    # Full API manifest as map

Static export: `mix zen_quant.manifest` → `api_manifest.json`

## Overview

Black-Scholes pricing and implied volatility, options chain analytics,
funding rates, basis, risk metrics, volatility estimators, position sizing,
portfolio analytics, trend mechanics, orderflow, and execution primitives.

Every function is pure: it takes plain maps and numbers, returns plain maps
and tuples, and never performs I/O. The library starts no supervision tree.
Exchange payloads (Bourse structs are maps) work as-is, but nothing here
depends on an exchange client.

The only runtime dependency is [Descripex](https://hex.pm/packages/descripex),
which powers the discovery surface above.

# `__descripex_modules__`

```elixir
@spec __descripex_modules__() :: [module()]
```

Return the list of modules registered with this library.

# `describe`

```elixir
@spec describe() :: [map()]
```

Return a Level 1 overview of all modules in this library.

# `describe`

```elixir
@spec describe(module() | atom() | String.t()) :: [map()]
```

Return Level 2 function list for a module (by full atom, or short name as string or atom).

# `describe`

```elixir
@spec describe(module() | atom() | String.t(), atom()) :: map() | nil
```

Return Level 3 function detail (or `nil` if not found).

---

*Consult [api-reference.md](api-reference.md) for complete listing*
