aponyx


Nameaponyx JSON
Version 0.1.4 PyPI version JSON
download
home_pageNone
SummarySystematic research framework for tactical credit strategies
upload_time2025-11-07 21:39:02
maintainerNone
docs_urlNone
authorStabile Frisur
requires_python<3.13,>=3.12
licenseMIT License Copyright (c) 2025 Stabile Frisur Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
keywords finance investing
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Aponyx

[![PyPI version](https://img.shields.io/pypi/v/aponyx.svg)](https://pypi.org/project/aponyx/)
[![Python 3.12](https://img.shields.io/badge/python-3.12-blue.svg)](https://www.python.org/downloads/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

**A modular Python framework for developing and backtesting systematic credit strategies.**

Aponyx provides a type-safe, reproducible research environment for tactical fixed-income strategies. Built for investment professionals who need clean separation between strategy logic, data infrastructure, and backtesting workflows.

## Key Features

- **Type-safe data loading** with schema validation (Parquet, CSV, Bloomberg Terminal)
- **Modular signal framework** with composable transformations and registry management
- **Deterministic backtesting** with transaction cost modeling and comprehensive metrics
- **Interactive visualization** with Plotly charts (equity curves, signals, drawdown)
- **Production-ready persistence** with metadata tracking and versioning
- **Strategy governance** with centralized registry and configuration management

## Installation

### From PyPI (Recommended)

```bash
pip install aponyx
```

**Optional dependencies:**

```bash
# Visualization (Plotly, Streamlit)
pip install aponyx[viz]

# Bloomberg Terminal support (requires manual blpapi install)
pip install aponyx[bloomberg]

# Development tools
pip install aponyx[dev]
```

### From Source

Requires **Python 3.12** and [`uv`](https://docs.astral.sh/uv/):

```bash
git clone https://github.com/stabilefrisur/aponyx.git
cd aponyx
uv sync                    # Install dependencies
uv sync --extra viz        # Include visualization
uv run python -m aponyx.examples.backtest_demo
```

### Bloomberg Terminal Setup (Optional)

> **Note:** Bloomberg data loading requires an active Terminal session and manual `blpapi` installation.

1. Download `blpapi` from Bloomberg's API Library
2. Install: `pip install path/to/blpapi-*.whl`
3. Install Bloomberg extra: `pip install aponyx[bloomberg]`

File-based data loading (`FileSource`) works without Bloomberg dependencies.

## Quick Start

```python
from aponyx.data import fetch_cdx, fetch_etf, FileSource
from aponyx.models import compute_cdx_etf_basis, SignalConfig
from aponyx.backtest import run_backtest, BacktestConfig, compute_performance_metrics

# Load validated market data
cdx_df = fetch_cdx(FileSource("data/raw/cdx_data.parquet"), security="cdx_ig_5y")
etf_df = fetch_etf(FileSource("data/raw/etf_data.parquet"), security="hyg")

# Generate signal with configuration
signal_config = SignalConfig(lookback=20, min_periods=10)
signal = compute_cdx_etf_basis(cdx_df, etf_df, signal_config)

# Evaluate signal-product suitability (optional pre-backtest gate)
from aponyx.evaluation import evaluate_signal_suitability
result = evaluate_signal_suitability(signal, cdx_df["spread"])
if result.decision != "PASS":
    print(f"Signal evaluation: {result.decision} (score: {result.composite_score:.2f})")
    # Optionally skip backtest for low-quality signals

# Run backtest with transaction costs
backtest_config = BacktestConfig(
    entry_threshold=1.5,
    exit_threshold=0.75,
    transaction_cost_bps=1.0
)
results = run_backtest(signal, cdx_df["spread"], backtest_config)

# Compute performance metrics
metrics = compute_performance_metrics(results.pnl, results.positions)

# Analyze results
print(f"Sharpe Ratio: {metrics.sharpe_ratio:.2f}")
print(f"Max Drawdown: ${metrics.max_drawdown:,.0f}")
print(f"Hit Rate: {metrics.hit_rate:.2%}")
```

**Bloomberg Terminal alternative:**

```python
from aponyx.data import BloombergSource

source = BloombergSource()
cdx_df = fetch_cdx(source, security="cdx_ig_5y")
```

## Architecture

Aponyx follows a **layered architecture** with clean separation of concerns:

| Layer | Purpose | Key Modules |
|-------|---------|-------------|
| **Data** | Load, validate, transform market data | `fetch_cdx`, `fetch_vix`, `fetch_etf`, `FileSource`, `BloombergSource` |
| **Models** | Generate signals for independent evaluation | `compute_cdx_etf_basis`, `compute_cdx_vix_gap`, `SignalRegistry` |
| **Evaluation** | Pre-backtest signal screening and quality gates | `evaluate_signal_suitability`, `SuitabilityRegistry` |
| **Backtest** | Simulate execution and compute metrics | `run_backtest`, `BacktestConfig`, `StrategyRegistry` |
| **Visualization** | Interactive charts and dashboards | `plot_equity_curve`, `plot_signal`, `plot_drawdown` |
| **Persistence** | Save/load data with metadata registry | `save_parquet`, `load_parquet`, `DataRegistry` |

### Research Workflow

```
Raw Data (Parquet/CSV/Bloomberg)
    ↓
Data Layer (load, validate, transform)
    ↓
Models Layer (signal computation)
    ↓
Evaluation Layer (signal-product suitability)
    ├─ PASS → Backtest Layer (simulation, metrics)
    │            ↓
    │         Visualization Layer (charts)
    │            ↓
    │         Persistence Layer (results)
    │
    └─ FAIL → Archive (no backtest)
```

## Examples

Examples are included with the installed package and demonstrate specific workflows with synthetic data.

**After installing via PyPI:**

```bash
# Locate installed examples
python -c "from aponyx.examples import get_examples_dir; print(get_examples_dir())"

# Run examples as modules
python -m aponyx.examples.data_demo          # Data loading and validation
python -m aponyx.examples.models_demo        # Signal generation and catalog
python -m aponyx.examples.suitability_demo   # Pre-backtest signal screening
python -m aponyx.examples.backtest_demo      # Complete backtest workflow
python -m aponyx.examples.visualization_demo # Interactive charts (requires viz extra)
python -m aponyx.examples.persistence_demo   # Data I/O and registry
python -m aponyx.examples.bloomberg_demo     # Bloomberg Terminal integration
```

**During development:**

```bash
# Clone repo and run directly
git clone https://github.com/stabilefrisur/aponyx.git
cd aponyx
uv sync
uv run python -m aponyx.examples.backtest_demo
```

## Documentation

Documentation is **included with the package** and available after installation:

```python
# Access docs programmatically
from aponyx.docs import get_docs_dir
docs_path = get_docs_dir()
print(docs_path)  # Path to installed documentation
```

**Available documentation:**

| Document | Description |
|----------|-------------|
| `python_guidelines.md` | Code standards and best practices |
| `cdx_overlay_strategy.md` | Investment thesis and pilot implementation |
| `signal_registry_usage.md` | Signal management workflow |
| `signal_suitability_evaluation.md` | Pre-backtest evaluation framework |
| `visualization_design.md` | Chart architecture and patterns |
| `logging_design.md` | Logging conventions and metadata |
| `caching_design.md` | Cache layer architecture |
| `adding_data_providers.md` | Provider extension guide |
| `governance_design.md` | Registry, catalog, and config patterns |

**During development**, docs are also available on GitHub:
- [Documentation Index](https://github.com/stabilefrisur/aponyx/tree/master/src/aponyx/docs)

## What's Included

### Implemented
- ✅ Type-safe data loading with schema validation (Parquet, CSV, Bloomberg)
- ✅ Modular signal framework with registry and catalog management
- ✅ Deterministic backtesting with transaction costs and comprehensive metrics
- ✅ Interactive Plotly visualizations (equity curves, signals, drawdown)
- ✅ Strategy governance with centralized registry and versioning
- ✅ Metadata tracking and reproducibility controls
- ✅ Comprehensive test suite with >90% coverage

### Pilot Signals
Three signals for CDX overlay strategies:
1. **CDX-ETF Basis** - Flow-driven mispricing from cash-derivative basis
2. **CDX-VIX Gap** - Cross-asset risk sentiment divergence
3. **Spread Momentum** - Short-term continuation in credit spreads

### Roadmap
- 🔜 Streamlit dashboard (architecture defined, implementation pending)
- 🔜 Advanced attribution charts (performance decomposition)
- 🔜 Multi-asset portfolio backtesting
- 🔜 Position sizing and risk budgeting

## Development

### Running Tests

```bash
pytest                              # All tests
pytest --cov=aponyx                # With coverage
pytest tests/models/                # Specific module
```

### Code Quality

```bash
black src/ tests/                   # Format code
ruff check src/ tests/              # Lint
mypy src/                          # Type check
```

All tools are configured in `pyproject.toml` with project-specific settings.

## Design Philosophy

### Core Principles

1. **Modularity** - Clean separation between data, models, backtest, and infrastructure
2. **Reproducibility** - Deterministic outputs with seed control and metadata logging
3. **Type Safety** - Strict type hints and runtime validation throughout
4. **Simplicity** - Prefer functions over classes, explicit over implicit
5. **Transparency** - Clear separation between strategy logic and execution

### Signal Convention

All signals follow a **consistent sign convention** for interpretability:
- **Positive values** → Long credit risk (buy CDX = sell protection)
- **Negative values** → Short credit risk (sell CDX = buy protection)

This ensures clarity when evaluating signals independently or combining them in future research.

## Requirements

- **Python 3.12** (no backward compatibility with 3.11 or earlier)
- Modern type syntax (`str | None`, not `Optional[str]`)
- Optional: Bloomberg Terminal with `blpapi` for live data

## Contributing

Contributions welcome! This is a research framework under active development.

- **Code standards**: See [Python Guidelines](src/aponyx/docs/python_guidelines.md) (or `from aponyx.docs import get_docs_dir` after install)
- **Testing**: All new features require unit tests
- **Documentation**: NumPy-style docstrings required

## License

MIT License - see [LICENSE](LICENSE) for details.

## Links

- **PyPI**: https://pypi.org/project/aponyx/
- **Repository**: https://github.com/stabilefrisur/aponyx
- **Issues**: https://github.com/stabilefrisur/aponyx/issues
- **Changelog**: https://github.com/stabilefrisur/aponyx/blob/master/CHANGELOG.md

---

**Maintained by stabilefrisur**  
**Version**: 0.1.3  
**Last Updated**: November 2, 2025

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "aponyx",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<3.13,>=3.12",
    "maintainer_email": null,
    "keywords": "finance, investing",
    "author": "Stabile Frisur",
    "author_email": "Stabile Frisur <26568863+stabilefrisur@users.noreply.github.com>",
    "download_url": "https://files.pythonhosted.org/packages/33/e5/15dcb4da3a999822e337da82ec999d1623d0709ee379330f8d7c89d138f7/aponyx-0.1.4.tar.gz",
    "platform": null,
    "description": "# Aponyx\r\n\r\n[![PyPI version](https://img.shields.io/pypi/v/aponyx.svg)](https://pypi.org/project/aponyx/)\r\n[![Python 3.12](https://img.shields.io/badge/python-3.12-blue.svg)](https://www.python.org/downloads/)\r\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\r\n\r\n**A modular Python framework for developing and backtesting systematic credit strategies.**\r\n\r\nAponyx provides a type-safe, reproducible research environment for tactical fixed-income strategies. Built for investment professionals who need clean separation between strategy logic, data infrastructure, and backtesting workflows.\r\n\r\n## Key Features\r\n\r\n- **Type-safe data loading** with schema validation (Parquet, CSV, Bloomberg Terminal)\r\n- **Modular signal framework** with composable transformations and registry management\r\n- **Deterministic backtesting** with transaction cost modeling and comprehensive metrics\r\n- **Interactive visualization** with Plotly charts (equity curves, signals, drawdown)\r\n- **Production-ready persistence** with metadata tracking and versioning\r\n- **Strategy governance** with centralized registry and configuration management\r\n\r\n## Installation\r\n\r\n### From PyPI (Recommended)\r\n\r\n```bash\r\npip install aponyx\r\n```\r\n\r\n**Optional dependencies:**\r\n\r\n```bash\r\n# Visualization (Plotly, Streamlit)\r\npip install aponyx[viz]\r\n\r\n# Bloomberg Terminal support (requires manual blpapi install)\r\npip install aponyx[bloomberg]\r\n\r\n# Development tools\r\npip install aponyx[dev]\r\n```\r\n\r\n### From Source\r\n\r\nRequires **Python 3.12** and [`uv`](https://docs.astral.sh/uv/):\r\n\r\n```bash\r\ngit clone https://github.com/stabilefrisur/aponyx.git\r\ncd aponyx\r\nuv sync                    # Install dependencies\r\nuv sync --extra viz        # Include visualization\r\nuv run python -m aponyx.examples.backtest_demo\r\n```\r\n\r\n### Bloomberg Terminal Setup (Optional)\r\n\r\n> **Note:** Bloomberg data loading requires an active Terminal session and manual `blpapi` installation.\r\n\r\n1. Download `blpapi` from Bloomberg's API Library\r\n2. Install: `pip install path/to/blpapi-*.whl`\r\n3. Install Bloomberg extra: `pip install aponyx[bloomberg]`\r\n\r\nFile-based data loading (`FileSource`) works without Bloomberg dependencies.\r\n\r\n## Quick Start\r\n\r\n```python\r\nfrom aponyx.data import fetch_cdx, fetch_etf, FileSource\r\nfrom aponyx.models import compute_cdx_etf_basis, SignalConfig\r\nfrom aponyx.backtest import run_backtest, BacktestConfig, compute_performance_metrics\r\n\r\n# Load validated market data\r\ncdx_df = fetch_cdx(FileSource(\"data/raw/cdx_data.parquet\"), security=\"cdx_ig_5y\")\r\netf_df = fetch_etf(FileSource(\"data/raw/etf_data.parquet\"), security=\"hyg\")\r\n\r\n# Generate signal with configuration\r\nsignal_config = SignalConfig(lookback=20, min_periods=10)\r\nsignal = compute_cdx_etf_basis(cdx_df, etf_df, signal_config)\r\n\r\n# Evaluate signal-product suitability (optional pre-backtest gate)\r\nfrom aponyx.evaluation import evaluate_signal_suitability\r\nresult = evaluate_signal_suitability(signal, cdx_df[\"spread\"])\r\nif result.decision != \"PASS\":\r\n    print(f\"Signal evaluation: {result.decision} (score: {result.composite_score:.2f})\")\r\n    # Optionally skip backtest for low-quality signals\r\n\r\n# Run backtest with transaction costs\r\nbacktest_config = BacktestConfig(\r\n    entry_threshold=1.5,\r\n    exit_threshold=0.75,\r\n    transaction_cost_bps=1.0\r\n)\r\nresults = run_backtest(signal, cdx_df[\"spread\"], backtest_config)\r\n\r\n# Compute performance metrics\r\nmetrics = compute_performance_metrics(results.pnl, results.positions)\r\n\r\n# Analyze results\r\nprint(f\"Sharpe Ratio: {metrics.sharpe_ratio:.2f}\")\r\nprint(f\"Max Drawdown: ${metrics.max_drawdown:,.0f}\")\r\nprint(f\"Hit Rate: {metrics.hit_rate:.2%}\")\r\n```\r\n\r\n**Bloomberg Terminal alternative:**\r\n\r\n```python\r\nfrom aponyx.data import BloombergSource\r\n\r\nsource = BloombergSource()\r\ncdx_df = fetch_cdx(source, security=\"cdx_ig_5y\")\r\n```\r\n\r\n## Architecture\r\n\r\nAponyx follows a **layered architecture** with clean separation of concerns:\r\n\r\n| Layer | Purpose | Key Modules |\r\n|-------|---------|-------------|\r\n| **Data** | Load, validate, transform market data | `fetch_cdx`, `fetch_vix`, `fetch_etf`, `FileSource`, `BloombergSource` |\r\n| **Models** | Generate signals for independent evaluation | `compute_cdx_etf_basis`, `compute_cdx_vix_gap`, `SignalRegistry` |\r\n| **Evaluation** | Pre-backtest signal screening and quality gates | `evaluate_signal_suitability`, `SuitabilityRegistry` |\r\n| **Backtest** | Simulate execution and compute metrics | `run_backtest`, `BacktestConfig`, `StrategyRegistry` |\r\n| **Visualization** | Interactive charts and dashboards | `plot_equity_curve`, `plot_signal`, `plot_drawdown` |\r\n| **Persistence** | Save/load data with metadata registry | `save_parquet`, `load_parquet`, `DataRegistry` |\r\n\r\n### Research Workflow\r\n\r\n```\r\nRaw Data (Parquet/CSV/Bloomberg)\r\n    \u2193\r\nData Layer (load, validate, transform)\r\n    \u2193\r\nModels Layer (signal computation)\r\n    \u2193\r\nEvaluation Layer (signal-product suitability)\r\n    \u251c\u2500 PASS \u2192 Backtest Layer (simulation, metrics)\r\n    \u2502            \u2193\r\n    \u2502         Visualization Layer (charts)\r\n    \u2502            \u2193\r\n    \u2502         Persistence Layer (results)\r\n    \u2502\r\n    \u2514\u2500 FAIL \u2192 Archive (no backtest)\r\n```\r\n\r\n## Examples\r\n\r\nExamples are included with the installed package and demonstrate specific workflows with synthetic data.\r\n\r\n**After installing via PyPI:**\r\n\r\n```bash\r\n# Locate installed examples\r\npython -c \"from aponyx.examples import get_examples_dir; print(get_examples_dir())\"\r\n\r\n# Run examples as modules\r\npython -m aponyx.examples.data_demo          # Data loading and validation\r\npython -m aponyx.examples.models_demo        # Signal generation and catalog\r\npython -m aponyx.examples.suitability_demo   # Pre-backtest signal screening\r\npython -m aponyx.examples.backtest_demo      # Complete backtest workflow\r\npython -m aponyx.examples.visualization_demo # Interactive charts (requires viz extra)\r\npython -m aponyx.examples.persistence_demo   # Data I/O and registry\r\npython -m aponyx.examples.bloomberg_demo     # Bloomberg Terminal integration\r\n```\r\n\r\n**During development:**\r\n\r\n```bash\r\n# Clone repo and run directly\r\ngit clone https://github.com/stabilefrisur/aponyx.git\r\ncd aponyx\r\nuv sync\r\nuv run python -m aponyx.examples.backtest_demo\r\n```\r\n\r\n## Documentation\r\n\r\nDocumentation is **included with the package** and available after installation:\r\n\r\n```python\r\n# Access docs programmatically\r\nfrom aponyx.docs import get_docs_dir\r\ndocs_path = get_docs_dir()\r\nprint(docs_path)  # Path to installed documentation\r\n```\r\n\r\n**Available documentation:**\r\n\r\n| Document | Description |\r\n|----------|-------------|\r\n| `python_guidelines.md` | Code standards and best practices |\r\n| `cdx_overlay_strategy.md` | Investment thesis and pilot implementation |\r\n| `signal_registry_usage.md` | Signal management workflow |\r\n| `signal_suitability_evaluation.md` | Pre-backtest evaluation framework |\r\n| `visualization_design.md` | Chart architecture and patterns |\r\n| `logging_design.md` | Logging conventions and metadata |\r\n| `caching_design.md` | Cache layer architecture |\r\n| `adding_data_providers.md` | Provider extension guide |\r\n| `governance_design.md` | Registry, catalog, and config patterns |\r\n\r\n**During development**, docs are also available on GitHub:\r\n- [Documentation Index](https://github.com/stabilefrisur/aponyx/tree/master/src/aponyx/docs)\r\n\r\n## What's Included\r\n\r\n### Implemented\r\n- \u2705 Type-safe data loading with schema validation (Parquet, CSV, Bloomberg)\r\n- \u2705 Modular signal framework with registry and catalog management\r\n- \u2705 Deterministic backtesting with transaction costs and comprehensive metrics\r\n- \u2705 Interactive Plotly visualizations (equity curves, signals, drawdown)\r\n- \u2705 Strategy governance with centralized registry and versioning\r\n- \u2705 Metadata tracking and reproducibility controls\r\n- \u2705 Comprehensive test suite with >90% coverage\r\n\r\n### Pilot Signals\r\nThree signals for CDX overlay strategies:\r\n1. **CDX-ETF Basis** - Flow-driven mispricing from cash-derivative basis\r\n2. **CDX-VIX Gap** - Cross-asset risk sentiment divergence\r\n3. **Spread Momentum** - Short-term continuation in credit spreads\r\n\r\n### Roadmap\r\n- \ud83d\udd1c Streamlit dashboard (architecture defined, implementation pending)\r\n- \ud83d\udd1c Advanced attribution charts (performance decomposition)\r\n- \ud83d\udd1c Multi-asset portfolio backtesting\r\n- \ud83d\udd1c Position sizing and risk budgeting\r\n\r\n## Development\r\n\r\n### Running Tests\r\n\r\n```bash\r\npytest                              # All tests\r\npytest --cov=aponyx                # With coverage\r\npytest tests/models/                # Specific module\r\n```\r\n\r\n### Code Quality\r\n\r\n```bash\r\nblack src/ tests/                   # Format code\r\nruff check src/ tests/              # Lint\r\nmypy src/                          # Type check\r\n```\r\n\r\nAll tools are configured in `pyproject.toml` with project-specific settings.\r\n\r\n## Design Philosophy\r\n\r\n### Core Principles\r\n\r\n1. **Modularity** - Clean separation between data, models, backtest, and infrastructure\r\n2. **Reproducibility** - Deterministic outputs with seed control and metadata logging\r\n3. **Type Safety** - Strict type hints and runtime validation throughout\r\n4. **Simplicity** - Prefer functions over classes, explicit over implicit\r\n5. **Transparency** - Clear separation between strategy logic and execution\r\n\r\n### Signal Convention\r\n\r\nAll signals follow a **consistent sign convention** for interpretability:\r\n- **Positive values** \u2192 Long credit risk (buy CDX = sell protection)\r\n- **Negative values** \u2192 Short credit risk (sell CDX = buy protection)\r\n\r\nThis ensures clarity when evaluating signals independently or combining them in future research.\r\n\r\n## Requirements\r\n\r\n- **Python 3.12** (no backward compatibility with 3.11 or earlier)\r\n- Modern type syntax (`str | None`, not `Optional[str]`)\r\n- Optional: Bloomberg Terminal with `blpapi` for live data\r\n\r\n## Contributing\r\n\r\nContributions welcome! This is a research framework under active development.\r\n\r\n- **Code standards**: See [Python Guidelines](src/aponyx/docs/python_guidelines.md) (or `from aponyx.docs import get_docs_dir` after install)\r\n- **Testing**: All new features require unit tests\r\n- **Documentation**: NumPy-style docstrings required\r\n\r\n## License\r\n\r\nMIT License - see [LICENSE](LICENSE) for details.\r\n\r\n## Links\r\n\r\n- **PyPI**: https://pypi.org/project/aponyx/\r\n- **Repository**: https://github.com/stabilefrisur/aponyx\r\n- **Issues**: https://github.com/stabilefrisur/aponyx/issues\r\n- **Changelog**: https://github.com/stabilefrisur/aponyx/blob/master/CHANGELOG.md\r\n\r\n---\r\n\r\n**Maintained by stabilefrisur**  \r\n**Version**: 0.1.3  \r\n**Last Updated**: November 2, 2025\r\n",
    "bugtrack_url": null,
    "license": "MIT License  Copyright (c) 2025 Stabile Frisur  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:  The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.",
    "summary": "Systematic research framework for tactical credit strategies",
    "version": "0.1.4",
    "project_urls": {
        "Changelog": "https://github.com/stabilefrisur/aponyx/blob/master/CHANGELOG.md",
        "Documentation": "https://github.com/stabilefrisur/aponyx/blob/master/README.md",
        "Homepage": "https://github.com/stabilefrisur/aponyx",
        "Issues": "https://github.com/stabilefrisur/aponyx/issues",
        "Repository": "https://github.com/stabilefrisur/aponyx"
    },
    "split_keywords": [
        "finance",
        " investing"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "26d12d22fe39147703e91e2a3efc8de8a69a8f7943ed84e1da135f974a27210a",
                "md5": "8dc615aa90e218207700cd52744dafc6",
                "sha256": "1fd367ee2b8635a4d899a34ea119cc2b6729f8542a08f60c1f6747c10a27c295"
            },
            "downloads": -1,
            "filename": "aponyx-0.1.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "8dc615aa90e218207700cd52744dafc6",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<3.13,>=3.12",
            "size": 198897,
            "upload_time": "2025-11-07T21:39:00",
            "upload_time_iso_8601": "2025-11-07T21:39:00.587250Z",
            "url": "https://files.pythonhosted.org/packages/26/d1/2d22fe39147703e91e2a3efc8de8a69a8f7943ed84e1da135f974a27210a/aponyx-0.1.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "33e515dcb4da3a999822e337da82ec999d1623d0709ee379330f8d7c89d138f7",
                "md5": "5f1b9465215e9be540cf204dcf952db2",
                "sha256": "0ad38250773261559dbd2fa9b554d6284ee8b6400f79c2861e285893a53dc4b2"
            },
            "downloads": -1,
            "filename": "aponyx-0.1.4.tar.gz",
            "has_sig": false,
            "md5_digest": "5f1b9465215e9be540cf204dcf952db2",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<3.13,>=3.12",
            "size": 159084,
            "upload_time": "2025-11-07T21:39:02",
            "upload_time_iso_8601": "2025-11-07T21:39:02.076469Z",
            "url": "https://files.pythonhosted.org/packages/33/e5/15dcb4da3a999822e337da82ec999d1623d0709ee379330f8d7c89d138f7/aponyx-0.1.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-11-07 21:39:02",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "stabilefrisur",
    "github_project": "aponyx",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "aponyx"
}
        
Elapsed time: 1.19682s