mockflow


Namemockflow JSON
Version 0.1.0 PyPI version JSON
download
home_pageNone
SummaryProfessional-grade financial time series mock data generation
upload_time2025-08-20 12:26:00
maintainerNone
docs_urlNone
authorConflux ML Engine Team
requires_python>=3.8
licenseMIT
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # MockFlow

Professional-grade Python package for generating realistic financial time series data for backtesting, simulation, and development purposes.

## Features

- **Realistic Market Patterns**: Generate bull, bear, and sideways market scenarios
- **Advanced Volatility Modeling**: GARCH-like volatility clustering with regime switching
- **Volume Correlation**: Realistic volume patterns correlated with price movements
- **Seed-based Reproducibility**: Deterministic generation for consistent testing
- **Multiple Timeframes**: Support for 15m to 1w timeframes
- **OHLCV Data**: Complete OHLC + Volume data generation

## Installation

```bash
pip install mockflow
```

For development:
```bash
pip install mockflow[dev]
```

## Quick Start

```python
from mockflow import generate_mock_data

# Generate 30 days of hourly mock data
data = generate_mock_data(
    symbol="BTCUSDT",
    timeframe="1h", 
    days=30,
    scenario="auto"  # auto-select bull/bear/sideways
)

print(data.head())
```

## API Reference

### Main Function: `generate_mock_data()`

```python
def generate_mock_data(
    symbol: str,
    timeframe: str,
    days: Optional[int] = None,
    start_date: Optional[datetime] = None,
    end_date: Optional[datetime] = None,
    limit: Optional[int] = None,
    scenario: str = "auto"
) -> pd.DataFrame
```

**Parameters:**

- **`symbol`** (str): Trading pair symbol (e.g., "BTCUSDT", "ETHUSD")
- **`timeframe`** (str): Candle timeframe. Supported values:
  - `"15m"`, `"30m"`, `"1h"`, `"2h"`, `"4h"`, `"6h"`, `"8h"`, `"12h"`, `"1d"`, `"3d"`, `"1w"`
- **`days`** (int, optional): Number of days to generate. Alternative to date range.
- **`start_date`** (datetime, optional): Start date for generation. Used with `end_date`.
- **`end_date`** (datetime, optional): End date for generation. Used with `start_date`.
- **`limit`** (int, optional): Exact number of candles to generate.
- **`scenario`** (str): Market scenario. Options:
  - `"auto"`: Automatically select scenario based on symbol/timeframe
  - `"bull"`: Sustained upward trend with pullbacks
  - `"bear"`: Sustained downward trend with rallies
  - `"sideways"`: Range-bound movement with cyclical patterns

**Returns:**
- `pd.DataFrame`: OHLCV data with datetime index

**Raises:**
- `ValueError`: Invalid parameters or unsupported timeframe
- `TypeError`: Incorrect parameter types

## Usage Examples

### Basic Generation

```python
import mockflow

# Generate data with specific scenario
data = mockflow.generate_mock_data(
    symbol="ETHUSD",
    timeframe="4h",
    days=90,
    scenario="bull"  # "bull", "bear", "sideways", "auto"
)
```

### Date Range Generation

```python
from datetime import datetime

data = mockflow.generate_mock_data(
    symbol="BTCUSDT",
    timeframe="1d",
    start_date=datetime(2024, 1, 1),
    end_date=datetime(2024, 3, 31)
)
```

### With Custom Limit

```python
data = mockflow.generate_mock_data(
    symbol="SOLUSD",
    timeframe="15m",
    limit=1000  # Generate exactly 1000 candles
)
```

### Seed-based Reproducibility

```python
import numpy as np

# Set seed for reproducible data
np.random.seed(42)
data1 = mockflow.generate_mock_data("BTCUSDT", "1h", days=7)

np.random.seed(42)  
data2 = mockflow.generate_mock_data("BTCUSDT", "1h", days=7)

# data1 and data2 are identical
assert data1.equals(data2)
```

## Output Format

Returns a pandas DataFrame with:
- **Index**: Datetime timestamps
- **Columns**: `open`, `high`, `low`, `close`, `volume`
- **Data Types**: Float64 for OHLC, Int64 for volume

## Market Scenarios

- **Bull Market**: Sustained upward trend with occasional pullbacks
- **Bear Market**: Sustained downward trend with occasional rallies  
- **Sideways Market**: Range-bound movement with cyclical patterns
- **Auto**: Automatically selects scenario based on symbol/timeframe

## Advanced Features

### Volatility Clustering

The package implements GARCH-like volatility clustering where:
- High volatility periods tend to be followed by high volatility
- Low volatility periods tend to be followed by low volatility
- Realistic intrabar movement with proper OHLC relationships

### Volume Patterns

Volume generation includes:
- Correlation with price volatility (higher volume during volatile periods)
- Correlation with price changes (higher volume on large moves)
- Cyclical volume patterns
- Random variation within realistic bounds

## Use Cases

### Backtesting Strategy Development

```python
import mockflow
import pandas as pd

# Generate test data for strategy backtesting
def create_backtest_dataset():
    # Multiple market conditions for robust testing
    bull_data = mockflow.generate_mock_data("BTCUSDT", "4h", days=180, scenario="bull")
    bear_data = mockflow.generate_mock_data("BTCUSDT", "4h", days=180, scenario="bear")
    sideways_data = mockflow.generate_mock_data("BTCUSDT", "4h", days=180, scenario="sideways")
    
    # Combine for comprehensive testing
    full_dataset = pd.concat([bull_data, bear_data, sideways_data], ignore_index=True)
    return full_dataset

# Test your strategy
data = create_backtest_dataset()
print(f"Generated {len(data)} candles for backtesting")
```

### Multi-Asset Portfolio Testing

```python
# Create correlated assets for portfolio testing
symbols = ["BTCUSDT", "ETHUSD", "ADAUSDT", "DOTUSD"]
portfolio_data = {}

for symbol in symbols:
    portfolio_data[symbol] = mockflow.generate_mock_data(
        symbol=symbol,
        timeframe="1d",
        days=365,
        scenario="auto"
    )

print("Portfolio datasets ready for analysis")
```

### Data Validation

```python
# Validate generated data quality
def validate_ohlcv_data(data):
    """Validate OHLCV data structure and relationships"""
    assert all(data['high'] >= data['low']), "High must be >= Low"
    assert all(data['high'] >= data['open']), "High must be >= Open"
    assert all(data['high'] >= data['close']), "High must be >= Close"
    assert all(data['low'] <= data['open']), "Low must be <= Open"
    assert all(data['low'] <= data['close']), "Low must be <= Close"
    assert all(data['volume'] > 0), "Volume must be positive"
    print("Data validation passed")

# Test data quality
test_data = mockflow.generate_mock_data("BTCUSDT", "1h", limit=100)
validate_ohlcv_data(test_data)
```

### Performance Benchmarking

```python
import time

# Benchmark generation performance
def benchmark_generation():
    start_time = time.time()
    
    large_dataset = mockflow.generate_mock_data(
        symbol="BTCUSDT",
        timeframe="1h",
        limit=10000  # 10k candles
    )
    
    end_time = time.time()
    generation_time = end_time - start_time
    
    print(f"Generated {len(large_dataset)} candles in {generation_time:.2f}s")
    print(f"Rate: {len(large_dataset)/generation_time:.0f} candles/second")

benchmark_generation()
```

## Requirements

- Python 3.8+
- numpy >= 1.20.0
- pandas >= 1.3.0

## Development

### Installation

```bash
git clone <repository-url>
cd mockflow
pip install -e .[dev]
```

### Testing

```bash
# Run all tests
pytest

# Run tests with coverage
pytest --cov=mockflow --cov-report=html

# Run specific test categories
pytest -m contract        # API contract tests
pytest -m integration     # Integration tests
```

### Code Quality

```bash
# Linting
ruff check .

# Type checking
mypy .

# Code formatting
black .
```

### Package Building

```bash
# Build distribution packages
python -m build

# Check package metadata
twine check dist/*
```

## License

MIT License - see LICENSE file for details.

## Contributing

1. Fork the repository
2. Create a feature branch: `git checkout -b feature/new-feature`
3. Make changes and add tests
4. Ensure tests pass: `pytest`
5. Check code quality: `ruff check . && mypy .`
6. Submit pull request

## Support

For issues and questions, please use the GitHub issue tracker.
            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "mockflow",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": null,
    "author": "Conflux ML Engine Team",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/cf/3f/fce9d3c149ab3aac6bbe9e2c64f1414a7172ca34dfaef16a8931fd6231b0/mockflow-0.1.0.tar.gz",
    "platform": null,
    "description": "# MockFlow\n\nProfessional-grade Python package for generating realistic financial time series data for backtesting, simulation, and development purposes.\n\n## Features\n\n- **Realistic Market Patterns**: Generate bull, bear, and sideways market scenarios\n- **Advanced Volatility Modeling**: GARCH-like volatility clustering with regime switching\n- **Volume Correlation**: Realistic volume patterns correlated with price movements\n- **Seed-based Reproducibility**: Deterministic generation for consistent testing\n- **Multiple Timeframes**: Support for 15m to 1w timeframes\n- **OHLCV Data**: Complete OHLC + Volume data generation\n\n## Installation\n\n```bash\npip install mockflow\n```\n\nFor development:\n```bash\npip install mockflow[dev]\n```\n\n## Quick Start\n\n```python\nfrom mockflow import generate_mock_data\n\n# Generate 30 days of hourly mock data\ndata = generate_mock_data(\n    symbol=\"BTCUSDT\",\n    timeframe=\"1h\", \n    days=30,\n    scenario=\"auto\"  # auto-select bull/bear/sideways\n)\n\nprint(data.head())\n```\n\n## API Reference\n\n### Main Function: `generate_mock_data()`\n\n```python\ndef generate_mock_data(\n    symbol: str,\n    timeframe: str,\n    days: Optional[int] = None,\n    start_date: Optional[datetime] = None,\n    end_date: Optional[datetime] = None,\n    limit: Optional[int] = None,\n    scenario: str = \"auto\"\n) -> pd.DataFrame\n```\n\n**Parameters:**\n\n- **`symbol`** (str): Trading pair symbol (e.g., \"BTCUSDT\", \"ETHUSD\")\n- **`timeframe`** (str): Candle timeframe. Supported values:\n  - `\"15m\"`, `\"30m\"`, `\"1h\"`, `\"2h\"`, `\"4h\"`, `\"6h\"`, `\"8h\"`, `\"12h\"`, `\"1d\"`, `\"3d\"`, `\"1w\"`\n- **`days`** (int, optional): Number of days to generate. Alternative to date range.\n- **`start_date`** (datetime, optional): Start date for generation. Used with `end_date`.\n- **`end_date`** (datetime, optional): End date for generation. Used with `start_date`.\n- **`limit`** (int, optional): Exact number of candles to generate.\n- **`scenario`** (str): Market scenario. Options:\n  - `\"auto\"`: Automatically select scenario based on symbol/timeframe\n  - `\"bull\"`: Sustained upward trend with pullbacks\n  - `\"bear\"`: Sustained downward trend with rallies\n  - `\"sideways\"`: Range-bound movement with cyclical patterns\n\n**Returns:**\n- `pd.DataFrame`: OHLCV data with datetime index\n\n**Raises:**\n- `ValueError`: Invalid parameters or unsupported timeframe\n- `TypeError`: Incorrect parameter types\n\n## Usage Examples\n\n### Basic Generation\n\n```python\nimport mockflow\n\n# Generate data with specific scenario\ndata = mockflow.generate_mock_data(\n    symbol=\"ETHUSD\",\n    timeframe=\"4h\",\n    days=90,\n    scenario=\"bull\"  # \"bull\", \"bear\", \"sideways\", \"auto\"\n)\n```\n\n### Date Range Generation\n\n```python\nfrom datetime import datetime\n\ndata = mockflow.generate_mock_data(\n    symbol=\"BTCUSDT\",\n    timeframe=\"1d\",\n    start_date=datetime(2024, 1, 1),\n    end_date=datetime(2024, 3, 31)\n)\n```\n\n### With Custom Limit\n\n```python\ndata = mockflow.generate_mock_data(\n    symbol=\"SOLUSD\",\n    timeframe=\"15m\",\n    limit=1000  # Generate exactly 1000 candles\n)\n```\n\n### Seed-based Reproducibility\n\n```python\nimport numpy as np\n\n# Set seed for reproducible data\nnp.random.seed(42)\ndata1 = mockflow.generate_mock_data(\"BTCUSDT\", \"1h\", days=7)\n\nnp.random.seed(42)  \ndata2 = mockflow.generate_mock_data(\"BTCUSDT\", \"1h\", days=7)\n\n# data1 and data2 are identical\nassert data1.equals(data2)\n```\n\n## Output Format\n\nReturns a pandas DataFrame with:\n- **Index**: Datetime timestamps\n- **Columns**: `open`, `high`, `low`, `close`, `volume`\n- **Data Types**: Float64 for OHLC, Int64 for volume\n\n## Market Scenarios\n\n- **Bull Market**: Sustained upward trend with occasional pullbacks\n- **Bear Market**: Sustained downward trend with occasional rallies  \n- **Sideways Market**: Range-bound movement with cyclical patterns\n- **Auto**: Automatically selects scenario based on symbol/timeframe\n\n## Advanced Features\n\n### Volatility Clustering\n\nThe package implements GARCH-like volatility clustering where:\n- High volatility periods tend to be followed by high volatility\n- Low volatility periods tend to be followed by low volatility\n- Realistic intrabar movement with proper OHLC relationships\n\n### Volume Patterns\n\nVolume generation includes:\n- Correlation with price volatility (higher volume during volatile periods)\n- Correlation with price changes (higher volume on large moves)\n- Cyclical volume patterns\n- Random variation within realistic bounds\n\n## Use Cases\n\n### Backtesting Strategy Development\n\n```python\nimport mockflow\nimport pandas as pd\n\n# Generate test data for strategy backtesting\ndef create_backtest_dataset():\n    # Multiple market conditions for robust testing\n    bull_data = mockflow.generate_mock_data(\"BTCUSDT\", \"4h\", days=180, scenario=\"bull\")\n    bear_data = mockflow.generate_mock_data(\"BTCUSDT\", \"4h\", days=180, scenario=\"bear\")\n    sideways_data = mockflow.generate_mock_data(\"BTCUSDT\", \"4h\", days=180, scenario=\"sideways\")\n    \n    # Combine for comprehensive testing\n    full_dataset = pd.concat([bull_data, bear_data, sideways_data], ignore_index=True)\n    return full_dataset\n\n# Test your strategy\ndata = create_backtest_dataset()\nprint(f\"Generated {len(data)} candles for backtesting\")\n```\n\n### Multi-Asset Portfolio Testing\n\n```python\n# Create correlated assets for portfolio testing\nsymbols = [\"BTCUSDT\", \"ETHUSD\", \"ADAUSDT\", \"DOTUSD\"]\nportfolio_data = {}\n\nfor symbol in symbols:\n    portfolio_data[symbol] = mockflow.generate_mock_data(\n        symbol=symbol,\n        timeframe=\"1d\",\n        days=365,\n        scenario=\"auto\"\n    )\n\nprint(\"Portfolio datasets ready for analysis\")\n```\n\n### Data Validation\n\n```python\n# Validate generated data quality\ndef validate_ohlcv_data(data):\n    \"\"\"Validate OHLCV data structure and relationships\"\"\"\n    assert all(data['high'] >= data['low']), \"High must be >= Low\"\n    assert all(data['high'] >= data['open']), \"High must be >= Open\"\n    assert all(data['high'] >= data['close']), \"High must be >= Close\"\n    assert all(data['low'] <= data['open']), \"Low must be <= Open\"\n    assert all(data['low'] <= data['close']), \"Low must be <= Close\"\n    assert all(data['volume'] > 0), \"Volume must be positive\"\n    print(\"Data validation passed\")\n\n# Test data quality\ntest_data = mockflow.generate_mock_data(\"BTCUSDT\", \"1h\", limit=100)\nvalidate_ohlcv_data(test_data)\n```\n\n### Performance Benchmarking\n\n```python\nimport time\n\n# Benchmark generation performance\ndef benchmark_generation():\n    start_time = time.time()\n    \n    large_dataset = mockflow.generate_mock_data(\n        symbol=\"BTCUSDT\",\n        timeframe=\"1h\",\n        limit=10000  # 10k candles\n    )\n    \n    end_time = time.time()\n    generation_time = end_time - start_time\n    \n    print(f\"Generated {len(large_dataset)} candles in {generation_time:.2f}s\")\n    print(f\"Rate: {len(large_dataset)/generation_time:.0f} candles/second\")\n\nbenchmark_generation()\n```\n\n## Requirements\n\n- Python 3.8+\n- numpy >= 1.20.0\n- pandas >= 1.3.0\n\n## Development\n\n### Installation\n\n```bash\ngit clone <repository-url>\ncd mockflow\npip install -e .[dev]\n```\n\n### Testing\n\n```bash\n# Run all tests\npytest\n\n# Run tests with coverage\npytest --cov=mockflow --cov-report=html\n\n# Run specific test categories\npytest -m contract        # API contract tests\npytest -m integration     # Integration tests\n```\n\n### Code Quality\n\n```bash\n# Linting\nruff check .\n\n# Type checking\nmypy .\n\n# Code formatting\nblack .\n```\n\n### Package Building\n\n```bash\n# Build distribution packages\npython -m build\n\n# Check package metadata\ntwine check dist/*\n```\n\n## License\n\nMIT License - see LICENSE file for details.\n\n## Contributing\n\n1. Fork the repository\n2. Create a feature branch: `git checkout -b feature/new-feature`\n3. Make changes and add tests\n4. Ensure tests pass: `pytest`\n5. Check code quality: `ruff check . && mypy .`\n6. Submit pull request\n\n## Support\n\nFor issues and questions, please use the GitHub issue tracker.",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "Professional-grade financial time series mock data generation",
    "version": "0.1.0",
    "project_urls": {
        "Homepage": "https://github.com/stefan-mcf/conflux-ml-engine",
        "Issues": "https://github.com/stefan-mcf/conflux-ml-engine/issues",
        "Repository": "https://github.com/stefan-mcf/conflux-ml-engine"
    },
    "split_keywords": [],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "fbcddf41ef85f4f6e111e2c394163b6fce579cefdead82aed355c58aada6c832",
                "md5": "cd1ad57d4a9d3186201c3ab8dbf85de1",
                "sha256": "31a34f95387bfbac3d86314811e37cfb66566a3041def21aa9e589d839720f2e"
            },
            "downloads": -1,
            "filename": "mockflow-0.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "cd1ad57d4a9d3186201c3ab8dbf85de1",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 10744,
            "upload_time": "2025-08-20T12:25:59",
            "upload_time_iso_8601": "2025-08-20T12:25:59.530909Z",
            "url": "https://files.pythonhosted.org/packages/fb/cd/df41ef85f4f6e111e2c394163b6fce579cefdead82aed355c58aada6c832/mockflow-0.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "cf3ffce9d3c149ab3aac6bbe9e2c64f1414a7172ca34dfaef16a8931fd6231b0",
                "md5": "2b9094daff5193c28ed874579a6999f0",
                "sha256": "21903dbe2b90e477a25838b6eeb954757e422c75adf1a0f9607809e259010517"
            },
            "downloads": -1,
            "filename": "mockflow-0.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "2b9094daff5193c28ed874579a6999f0",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 10249,
            "upload_time": "2025-08-20T12:26:00",
            "upload_time_iso_8601": "2025-08-20T12:26:00.735660Z",
            "url": "https://files.pythonhosted.org/packages/cf/3f/fce9d3c149ab3aac6bbe9e2c64f1414a7172ca34dfaef16a8931fd6231b0/mockflow-0.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-20 12:26:00",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "stefan-mcf",
    "github_project": "conflux-ml-engine",
    "github_not_found": true,
    "lcname": "mockflow"
}
        
Elapsed time: 0.92334s