MATLAB to Python Trading Algorithm Conversions
This directory contains Python implementations of various algorithmic trading strategies and utility functions originally written in MATLAB.
Overview
The converted files include:
Utility Functions
backshift.py- Shift data backward in timefwdshift.py- Shift data forward in timemovingAvg.py- Calculate moving averagesmovingStd.py- Calculate moving standard deviationssmartmean.py- Mean calculation ignoring NaN/Inf valuessmartstd.py- Standard deviation ignoring NaN/Inf valuessmartsum.py- Sum calculation ignoring NaN/Inf valuessmartMovingStd.py- Moving standard deviation ignoring NaN/Inf valuescalculateReturns.py- Calculate returns from price seriescalculateMaxDD.py- Calculate maximum drawdown and duration
Data Loading
data_loader.py- Load converted CSV/JSON data filesconvert_mat_files.py- Convert .mat files to CSV/JSON format
Trading Strategies
TU_mom.py- Treasury futures momentum strategyTU_mom_hypothesisTest.py- Hypothesis testing for TU momentum strategykentdaniel.py- Long-short equity momentum strategygapFutures_FSTX.py- Gap trading strategy for futurespead.py- Post-earnings announcement drift strategy
Installation
- Install required dependencies:
pip install -r requirements.txt
- Add the parent directory to your Python path or install as a package:
import sys
sys.path.append('/path/to/algo_trading_book')
Usage
Using Utility Functions
import numpy as np
from converted_code import backshift, smartmean, calculateReturns
# Example: Calculate returns
prices = np.array([100, 102, 101, 103, 105])
returns = calculateReturns(prices, 1)
print(returns)
# Example: Backshift data
shifted_prices = backshift(1, prices)
print(shifted_prices)
# Example: Smart mean (ignoring NaN)
data_with_nan = np.array([1, 2, np.nan, 4, 5])
mean_val = smartmean(data_with_nan)
print(mean_val)
Loading Real Market Data
from converted_code.data_loader import load_futures_data, load_stock_data, load_earnings_data
# Load Treasury futures data
tu_data = load_futures_data('TU', '20120813')
print(f"Loaded {len(tu_data['tday'])} days of TU data")
# Load stock data
stock_data = load_stock_data('20120424')
print(f"Stock data shape: {stock_data['cl'].shape}")
# Load earnings announcements
earnings = load_earnings_data()
print(f"Earnings data shape: {earnings['earnann'].shape}")
Running Trading Strategies
# Run TU momentum strategy
from converted_code.TU_mom import main as tu_mom_main
tu_mom_main()
# Run Kent Daniel momentum strategy
from converted_code.kentdaniel import main as kent_daniel_main
kent_daniel_main()
# Run PEAD strategy
from converted_code.pead import main as pead_main
pead_main()
Important Notes
Data Requirements
The implementations now support both real market data (from converted .mat files) and synthetic data for demonstration.
Real Data (Converted from .mat files)
- Located in
converted_code/data/directory - Includes futures, stocks, ETFs, and earnings data
- Automatically loaded by trading strategies
- CSV format for time series, JSON for metadata
Data Format
- Prices: 2D numpy arrays (time x assets)
- Returns: Same format as prices
- Dates: 1D array of date integers (YYYYMMDD format)
- OHLC Data: Separate arrays for Open, High, Low, Close
Available Datasets
- Futures: TU (Treasury), CL (Crude Oil), VX (VIX), HG (Copper), etc.
- Stocks: OHLC data for 500+ stocks
- ETFs: Exchange-traded fund data
- Earnings: Earnings announcement calendar
- Interest Rates: AUD and CAD interest rate data
Converting Additional .mat Files
# Run the conversion script to convert new .mat files
python convert_mat_files.py
Performance Considerations
- Vectorization: The code uses numpy vectorization for efficiency
- Memory Usage: Large datasets may require chunked processing
- NaN Handling: Smart functions handle NaN/Inf values gracefully
Differences from MATLAB
- Indexing: Python uses 0-based indexing vs MATLAB's 1-based
- Array Operations: Uses numpy instead of MATLAB's matrix operations
- Function Names: Some functions renamed for Python conventions
- Error Handling: Added proper error handling and type checking
Testing
Each strategy file can be run independently:
python converted_code/TU_mom.py
python converted_code/kentdaniel.py
python converted_code/pead.py
Contributing
When adding new conversions:
- Follow the existing code structure
- Add proper docstrings
- Include error handling
- Use synthetic data for examples
- Update this README
License
This code is converted from the original MATLAB implementations for educational and research purposes.