/ArbNet

ArbNet : Dynamic Data Structure designed for Quants, Researchers, and Data Scientists

Primary LanguageMakefile

ArbNet Summary

Overview

ArbNet is a C++ Framework designed to concurrently manage and analyze financial instrument data, with a focus on quantitative trading. The project leverages several design patterns to ensure scalability, flexibility, and maintainability. It supports different types of financial instruments such as equities, forex, and bonds, and provides a framework for implementing various trading strategies.

Key Components

1. InstrumentData

  • Purpose: Serves as the base class for managing time-series data related to financial instruments.
  • Features:
    • Add and store data points (timestamp, price, volume).
    • Calculate statistical measures such as moving averages, standard deviation, and exponential moving averages.
    • Normalize and log-transform price data for analysis.
    • Slice data within specific time ranges.

2. MarketData

  • Purpose: Manages multiple InstrumentData objects and implements the Observer pattern to notify interested parties of data changes.
  • Features:
    • Add and retrieve data for various financial instruments.
    • Notify observers when data for a specific instrument is updated.
    • Maintain a collection of observers to enable real-time monitoring and updates.

3. MarketObserver

  • Purpose: Interface for classes that need to be notified of changes in MarketData.
  • Features:
    • Define an update method that is triggered when relevant data changes.

4. InstrumentDataFactory

  • Purpose: Factory class responsible for creating instances of specific types of financial instruments (EquityData, ForexData, BondData).
  • Features:
    • Create and return the appropriate InstrumentData subclass based on the instrument type.

Design Patterns Implemented

  • Factory Pattern: Used to instantiate different types of InstrumentData objects.
  • Observer Pattern: Enables MarketData to notify observers of changes in financial data.
  • Singleton Pattern: Ensures that only one instance of MarketData exists in the application.
  • Strategy Pattern: Allows for the implementation of different trading strategies that can operate on InstrumentData.

Use Cases

  • Quantitative Trading: ArbNet can be used to develop and test trading strategies that rely on historical and real-time market data.
  • Financial Analysis: The framework can calculate key financial metrics, such as moving averages, RSI (Relative Strength Index), and yield to maturity, which are essential for market analysis.
  • Data Management: ArbNet provides a scalable and flexible system for managing large volumes of market data across different types of financial instruments.

Future Extensions

ArbNet is designed to be extensible, allowing for the addition of new instrument types, trading strategies, and data analysis techniques. The modular architecture ensures that new components can be integrated with minimal changes to the existing codebase.