Skip to content

Latest commit

 

History

History
141 lines (109 loc) · 4.68 KB

README.md

File metadata and controls

141 lines (109 loc) · 4.68 KB

AI Hedge Fund

This is a proof concept for an AI-powered hedge fund. The goal of this project is to explore the use of AI to make trading decisions. This project is for educational purposes only and is not intended for real trading or investment.

This system employs several agents working together:

  1. Market Data Analyst - Gathers and preprocesses market data
  2. Sentiment Agent - Analyzes market sentiment and generates trading signals
  3. Fundamentals Agent - Analyzes fundamental data and generates trading signals
  4. Technical Analyst - Analyzes technical indicators and generates trading signals
  5. Risk Manager - Calculates risk metrics and sets position limits
  6. Portfolio Manager - Makes final trading decisions and generates orders

image

Note: the system simulates trading decisions, it does not actually trade.

Disclaimer

This project is for educational and research purposes only.

  • Not intended for real trading or investment
  • No warranties or guarantees provided
  • Past performance does not indicate future results
  • Creator assumes no liability for financial losses
  • Consult a financial advisor for investment decisions

By using this software, you agree to use it solely for learning purposes.

Table of Contents

Setup

Clone the repository:

git clone https://github.com/virattt/ai-hedge-fund.git
cd ai-hedge-fund
  1. Install Poetry (if not already installed):
curl -sSL https://install.python-poetry.org | python3 -
  1. Install dependencies:
poetry install
  1. Set up your environment variables:
# Create .env file for your API keys
cp .env.example .env

export OPENAI_API_KEY='your-api-key-here' # Get a key from https://platform.openai.com/
export FINANCIAL_DATASETS_API_KEY='your-api-key-here' # Get a key from https://financialdatasets.ai/

Usage

Running the Hedge Fund

poetry run python src/main.py --ticker AAPL

You can also specify a --show-reasoning flag to print the reasoning of each agent to the console.

poetry run python src/main.py --ticker AAPL --show-reasoning

You can optionally specify the start and end dates to make decisions for a specific time period.

poetry run python src/main.py --ticker AAPL --start-date 2024-01-01 --end-date 2024-03-01 

Running the Backtester

poetry run python src/backtester.py --ticker AAPL

Example Output:

Starting backtest...
Date         Ticker Action Quantity    Price         Cash    Stock  Total Value
----------------------------------------------------------------------
2024-01-01   AAPL   buy       519.0   192.53        76.93    519.0    100000.00
2024-01-02   AAPL   hold          0   185.64        76.93    519.0     96424.09
2024-01-03   AAPL   hold          0   184.25        76.93    519.0     95702.68
2024-01-04   AAPL   hold          0   181.91        76.93    519.0     94488.22
2024-01-05   AAPL   hold          0   181.18        76.93    519.0     94109.35
2024-01-08   AAPL   sell        519   185.56     96382.57      0.0     96382.57
2024-01-09   AAPL   buy       520.0   185.14       109.77    520.0     96382.57

You can optionally specify the start and end dates to backtest over a specific time period.

poetry run python src/backtester.py --ticker AAPL --start-date 2024-01-01 --end-date 2024-03-01

Project Structure

ai-hedge-fund/
├── src/
│   ├── agents/                   # Agent definitions and workflow
│   │   ├── fundamentals.py       # Fundamental analysis agent
│   │   ├── market_data.py        # Market data agent
│   │   ├── portfolio_manager.py  # Portfolio management agent
│   │   ├── risk_manager.py       # Risk management agent
│   │   ├── sentiment.py          # Sentiment analysis agent
│   │   ├── state.py              # Agent state
│   │   ├── technicals.py         # Technical analysis agent
│   ├── tools/                    # Agent tools
│   │   ├── api.py                # API tools
│   ├── backtester.py             # Backtesting tools
│   ├── main.py # Main entry point
├── pyproject.toml
├── ...

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Commit your changes
  4. Push to the branch
  5. Create a Pull Request

License

This project is licensed under the MIT License - see the LICENSE file for details.