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.
- 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.
- 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.
- 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.
- Define an
- 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.
- Create and return the appropriate
- 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
.
- 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.
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.