Project Status

Stability policy

  • fuggers-py is still pre-1.0.

  • Public APIs are usable, but they are not frozen yet.

  • Until the first 1.x release, we may still rename modules, move types, remove compatibility shims, and simplify APIs without keeping full backwards compatibility.

  • After 1.x, the plan is to move to a normal deprecation policy instead of making direct breaking changes.

Most ready today

  • fuggers_py.curves: this is the closest package to the intended 1.x shape. The public root is small, YieldCurve.fit(...) is the main fitting path, and advanced calibration or kernel records live in focused submodules.

  • Quote-driven curve fitting is in its near-final shape for the current release. The fitter accepts swap, bond, and repo quotes, uses CurveSpec for curve identity, and returns a CalibrationReport.

  • _core/: dates, prices, yields, spreads, identifiers, calendars, and day-count logic are central and well-covered.

  • The first-layer package layout is in place: shared names come from fuggers_py, and domain names come from fuggers_py.curves, fuggers_py.bonds, fuggers_py.rates, fuggers_py.inflation, fuggers_py.credit, fuggers_py.funding, fuggers_py.portfolio, or fuggers_py.vol_surfaces.

  • Validation and packaging checks are part of the repo: unit tests, integration tests, API contracts, docs checks, packaging checks, and CI workflows are all present.

Usable, but still moving

  • fuggers_py.bonds: the bond analytics are useful and broad, but the public surface is larger than the current target style. Before 1.x, it still needs a hardening pass around ownership, inheritance, type records, and enum-heavy areas.

  • fuggers_py.rates, fuggers_py.funding, fuggers_py.credit, and fuggers_py.inflation: these packages now own their domain objects, but their public roots and internal shapes are not final. They should be reviewed against the curve package before the compatibility promise.

  • fuggers_py.portfolio: the portfolio layer already covers holdings, attribution, ETF, stress, liquidity, and risk workflows. It is still a large workflow surface and is less settled than the curve-fitting API.

  • _runtime/: engine routing, scheduling, quote records, market-data snapshots, source protocols, and market-state records are functional. This layer is still more likely to change than the core analytics packages.

  • _storage/: storage, file, and transport boundaries are useful and tested, but they are infrastructure-facing surfaces rather than frozen user-facing API.

Scaffold in place, but not finished

  • fuggers_py.vol_surfaces: the package now has canonical volatility surface records and in-memory providers. What it does not have yet is a full volatility modeling stack with smile models, cubes, interpolation policy, calibration, and fitting workflows. This is the clearest example of a deliberate scaffold.

  • The repo still has internal implementation layers such as _runtime/ and _storage/, but the old public compatibility roots are no longer part of the shipped API.

  • Some storage and runtime helpers intentionally include no-op or empty implementations for local workflows, testing, or optional integration paths. They are useful, but they should not be mistaken for a complete external integration story.

  • The example notebooks are real workflows, but they are still research-oriented examples. They are not a promise that every workflow surface is finalized.

What still needs work before 1.x

  • Bring the other public modules up to the standard set by curves: one obvious public entry path, simple fitting or pricing calls, clear ownership inside the package, and focused submodules for advanced pieces.

  • Review domain inheritance and keep it only where it makes the code easier to follow. Remove layers that only move names around.

  • Reduce enum-heavy areas where a plain string, small record, or existing shared type is easier to read and test.

  • Freeze the package boundaries and naming in the places that are still moving, especially around bonds, rates, portfolio, runtime, and volatility.

  • Decide which remaining internal boundaries should be formalized before the first compatibility promise.

  • Expand the volatility stack beyond storage objects and add clearer support for smiles, cubes, interpolation, and calibration.

  • Keep broadening validation and examples for options, RV, cross-market workflows, and the runtime layer.

  • Write down the 1.x compatibility and deprecation policy in one short public document once the API surface is ready to freeze.

Public repo readiness

  • The repo is in a state that can be made public.

  • The basics are already in place: license, changelog, contributing guide, CI, docs, examples, packaging metadata, and a broad automated test suite.

  • The right public message is not “everything is finished.” The right public message is “curve fitting is close to the intended final shape, the broader fixed-income surface is already substantial, and the repo is still pre-1.0 while the other domains are brought up to the same standard.”

  • Before you announce a public release, make sure the current local source and docs changes are actually committed, because untracked local files will not appear in the public branch by themselves.