Skip to content

Dynamic Documentation System

Overview

This system automatically generates API documentation for the four context variables (market, portfolio, memory, session) by extracting information directly from the Python source code.

How It Works

1. Python Introspection Tool (tools/extract-python-api.py)

  • Uses Python's inspect module to analyze classes
  • Extracts properties, methods, docstrings, type hints
  • Generates structured JSON with comprehensive API information
  • Runs automatically during documentation builds

2. VitePress Data Loader (.vitepress/data/pythonApi.data.js)

  • Loads the generated JSON at build time
  • Transforms data for easier consumption by Vue components
  • Makes API data available to all documentation pages

3. Vue Components

  • ApiReference.vue: Full API documentation with properties, methods, and examples
  • ApiSummary.vue: Compact API overview with quick references

4. Integration

  • Updated strategy-development/syntax-reference.md to use new dynamic components
  • Automatic API extraction in npm build scripts
  • Updated variable names to use new naming (market, portfolio, memory, session)

Usage

In Documentation Pages

markdown
<!-- Full API reference -->
<ApiReference context="market" />

<!-- Quick summary -->
<ApiSummary context="portfolio" />

Build Process

bash
# Normal documentation build (uses pre-generated API data)
npm run docs:build

# Development with live updates
npm run docs:dev

# Regenerate API documentation (when backtesting-engine code changes)
npm run regenerate-api

When to Regenerate API Documentation

The API documentation is pre-generated and committed to the repository for build reliability. You only need to regenerate it when:

  1. Backtesting engine API changes: New properties, methods, or docstrings added/modified
  2. Context class changes: Changes to DataContext, PortfolioContext, or SessionInfo classes
  3. Method signatures change: Parameter types, names, or return types modified

API Regeneration Workflow

bash
# 1. Make changes to backtesting-engine code
cd ../backtesting-engine
# ... make your changes ...

# 2. Regenerate documentation (requires Python + pandas)
cd ../docs
npm run regenerate-api

# 3. Commit the updated documentation
git add .vitepress/data/python-api.json
git commit -m "docs: update API documentation for [describe changes]"

Important: The documentation build process no longer requires Python dependencies in CI. The pre-generated python-api.json file ensures reliable builds.

Generated Documentation Includes

For each context variable:

  • Class Information: Name, module, description
  • Properties: Type, description, readonly status, examples
  • Methods: Signature, parameters, return types, examples
  • Usage Examples: Common patterns and code snippets
  • Generation Metadata: Timestamp, version info

Benefits

  1. Always Accurate: Documentation reflects actual code structure
  2. Zero Maintenance: Updates automatically when Python code changes
  3. Comprehensive: Captures all public members, not just manually documented ones
  4. Consistent: Uniform formatting across all API documentation
  5. Live Updates: Changes in Python code immediately appear in docs

Files Created/Modified

New Files

  • docs/tools/extract-python-api.py - Python introspection tool
  • docs/.vitepress/data/pythonApi.data.js - VitePress data loader
  • docs/.vitepress/components/ApiReference.vue - Full API component
  • docs/.vitepress/components/ApiSummary.vue - Summary API component
  • docs/.vitepress/theme/index.js - Theme configuration
  • docs/.vitepress/theme/custom.css - Custom styles
  • docs/.vitepress/data/python-api.json - Generated API data

Modified Files

  • docs/package.json - Added API extraction to build scripts
  • docs/strategy-development/syntax-reference.md - Updated with dynamic components
  • docs/.vitepress/config.mjs - VitePress configuration

Technical Details

The system works by:

  1. Pre-generated API data: python-api.json is committed to the repository
  2. VitePress data loader: Makes API data available as pythonApiData at build time
  3. Vue components: Render the documentation dynamically from JSON data
  4. Manual regeneration: npm run regenerate-api updates the JSON when needed
  5. CI-friendly: No Python dependencies required for documentation builds

Future Enhancements

  • Add search functionality across API members
  • Generate type definitions for TypeScript users
  • Add interactive code examples
  • Include performance metrics for methods
  • Add changelog tracking for API changes

Test your trading strategies risk-free with professional backtesting.