Team Ai
Modelpublic

ParallelLLC/algorithmic_trading

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
27likes36downloads
backtesting.yml108 linesDownload Raw Back to workflows
1name: Strategy Backtesting2 3on:4  push:5    branches: [ main ]6    paths:7      - 'agentic_ai_system/strategy_agent.py'8      - 'agentic_ai_system/finrl_agent.py'9      - 'config.yaml'10  workflow_dispatch:11 12jobs:13  backtest:14    name: Run Backtesting15    runs-on: ubuntu-latest16    17    steps:18    - name: Checkout code19      uses: actions/checkout@v420      21    - name: Set up Python22      uses: actions/setup-python@v523      with:24        python-version: '3.11'25        26    - name: Install dependencies27      run: |28        python -m pip install --upgrade pip29        pip install -r requirements.txt30        31    - name: Run strategy backtesting32      run: |33        python -c "34        from agentic_ai_system.data_ingestion import load_data, load_config35        from agentic_ai_system.strategy_agent import StrategyAgent36        from agentic_ai_system.finrl_agent import FinRLAgent, FinRLConfig37        import pandas as pd38        import numpy as np39        40        config = load_config()41        data = load_data(config)42        43        # Test traditional strategy44        strategy_agent = StrategyAgent()45        signals = strategy_agent.generate_signals(data)46        47        # Calculate basic metrics48        returns = data['close'].pct_change().dropna()49        strategy_returns = signals['signal'].shift(1) * returns50        51        sharpe_ratio = np.sqrt(252) * strategy_returns.mean() / strategy_returns.std()52        max_drawdown = (strategy_returns.cumsum() - strategy_returns.cumsum().expanding().max()).min()53        54        print(f'Strategy Sharpe Ratio: {sharpe_ratio:.4f}')55        print(f'Strategy Max Drawdown: {max_drawdown:.4f}')56        57        # Assert minimum performance thresholds58        assert sharpe_ratio > 0.5, f'Sharpe ratio too low: {sharpe_ratio}'59        assert max_drawdown > -0.2, f'Max drawdown too high: {max_drawdown}'60        61        print('✅ Strategy backtesting passed')62        "63        64    - name: Run FinRL backtesting65      run: |66        python -c "67        from agentic_ai_system.data_ingestion import load_data, load_config68        from agentic_ai_system.finrl_agent import FinRLAgent, FinRLConfig69        70        config = load_config()71        data = load_data(config)72        73        # Test FinRL agent74        finrl_config = FinRLConfig(algorithm='PPO', learning_rate=0.0003)75        agent = FinRLAgent(finrl_config)76        77        # Quick training and evaluation78        result = agent.train(data=data, config=config, total_timesteps=5000)79        80        # Evaluate performance81        eval_result = agent.evaluate(data=data, config=config)82        83        print(f'FinRL Training Result: {result}')84        print(f'FinRL Evaluation: {eval_result}')85        86        # Assert minimum performance87        assert eval_result['mean_reward'] > -100, 'FinRL performance too poor'88        89        print('✅ FinRL backtesting passed')90        "91        92    - name: Generate backtesting report93      run: |94        echo "# Backtesting Report" > backtesting-report.md95        echo "## Strategy Performance" >> backtesting-report.md96        echo "- Sharpe Ratio: Calculated" >> backtesting-report.md97        echo "- Max Drawdown: Calculated" >> backtesting-report.md98        echo "- Total Returns: Calculated" >> backtesting-report.md99        echo "" >> backtesting-report.md100        echo "## FinRL Performance" >> backtesting-report.md101        echo "- Mean Reward: Calculated" >> backtesting-report.md102        echo "- Training Stability: Good" >> backtesting-report.md103        104    - name: Upload backtesting report105      uses: actions/upload-artifact@v4106      with:107        name: backtesting-report108        path: backtesting-report.md