Fix typo in core math module filename and update all references. Changes: - Renamed market_trade/core/CoreTraidMath.py → CoreTradeMath.py - Updated 28 import references across 14 files: - All Ind_*.py indicator modules - indicators.py, indicators_v2.py - signals.py, signals_v2.py - CoreDraw.py - Updated documentation references in CLAUDE.md This eliminates the "Traid" typo and aligns with proper English spelling. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
5.9 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Project Overview
This is a Python-based algorithmic trading system for financial markets that implements technical indicator analysis, signal generation, decision making, and risk management. It integrates with Tinkoff Invest API for market data and trading.
Development Setup
Environment Setup
- Python 3.9-3.12 (managed via Poetry)
- Install dependencies:
poetry install - Activate virtual environment:
poetry shell - Environment variables are in
.env(contains Tinkoff API tokens)
Docker Development
- Build image:
docker build -f dockerfiles/Dockerfile -t market-trade . - Main Dockerfile uses Poetry 1.7.1 and Python 3.11
- Requires SSH mount for private tinkoff-grpc dependency
Running Tests
- Test files located in
market_trade/tests/ - Run test:
python market_trade/tests/test_decision.py - Run specific test:
python market_trade/tests/test_dataloader.py
Data Tools
Scripts in tools/ directory for data collection:
save_currencies_data.py- Collect currency market datasave_shares_data.py- Collect stock market dataget_shares_stats.py- Generate trading statistics- Usage:
python tools/<script_name>.py [options]
Architecture
Core Trading Pipeline (docs/trading-flow.md)
The system follows this data flow:
- SELECT INSTRUMENT - Choose trading instrument
- GET_CANDLES(10000) - Fetch historical candlestick data
- RETRO TRAINING - Backtest signals on historical data
- STREAM PROCESSING:
- Receive real-time market messages
- Accumulate data in sliding window
- Update window with each new message
- Generate trading signals
Module Structure
market_trade/core/ - Core Trading Logic
Signal Processing Chain:
-
Indicators (
indicators.py,indicators_v2.py) - Technical indicator calculation- Base class:
coreIndicator - Bollinger Bands:
ind_BB - All indicator classes (Ind_*.py): ADX, Alligator, DonchianChannel, Envelopes, Gator, Ishimoku, LRI, STD, Stochastic, bollingerBands
- Base class:
-
Signals (
signals.py,signals_v2.py) - Signal generation from indicators- Base class:
coreSignalTrandewith three modes:online- Real-time signal generationretro- Expanding window backtestingretroFast- Sliding window backtesting
- Signal implementations:
signal_BB(Bollinger Bands signal) - Aggregator:
signalAgrigatormanages multiple signal instances
- Base class:
-
Decision Manager (
decisionManager.py,decisionManager_v2.py) - Trading decisions- Class:
decsionManager - Combines signals from
signalAgrigator - Uses
trandeVoterfor probability matrix generation - Methods:
getSignalTest()- Test signal generationgenerateMatrixProbability()- Create probability matrices from backtestgetOnlineAns()- Real-time decision making
- Class:
-
Trade Voter (
trandeVoter.py) - Probability-based decision weighting- Generates probability matrices from historical signal performance
- Weights multiple signals to produce final decision
-
Risk Manager (
riskManager.py) - Position sizing and risk controls- Class:
riskManager - Combines signal decisions with risk parameters
- Class:
-
Deal Manager (
dealManager.py) - Trade execution and management- Class:
DealManager - Manages active positions and orders
- Class:
Helper Modules:
CoreTradeMath.py- Mathematical operations for indicators (moving averages, STD)CoreDraw.py- Visualization utilities for indicators and signals
market_trade/data/ - Data Loading
dataloader.py- ContainsDukaMTInterfaceclass- Converts Dukascopy format candlestick data to internal format
- Separates bid/ask candlesticks from multi-indexed CSV
- Handles both file paths and DataFrames
market_trade/tests/ - Testing
- Test files demonstrate usage patterns:
test_decision.py- Shows complete decision manager workflow with retro trainingtest_dataloader.py- Data loading tests
External Dependencies
- tinkoff-grpc - Private GitHub repo for Tinkoff Invest API integration
- Located at:
git@github.com:strategy155/tinkoff_grpc.git - Used in tools for market data collection
- Located at:
- Data Analysis: pandas, numpy, scipy, matplotlib, plotly, mplfinance
- Web Scraping: requests-html, beautifulsoup4, selenium
- Development: JupyterLab (notebooks in
notebooks/)
Key Constants (market_trade/constants.py)
ROOT_PATH- Project root directoryCANDLESTICK_DATASETS_PATH- Path to candlestick data:data/candlesticks/TEST_CANDLESTICKS_PATH- Test dataset:data/EURUSD_price_candlestick.csvTINKOFF_TOKEN_STRING- Production API token (from .env)SANDBOX_TOKEN_STRING- Sandbox API token (from .env)TINKOFF_API_ADDRESS- API endpoint: 'invest-public-api.tinkoff.ru:443'
Data Formats
Candlestick Data
Expected DataFrame columns:
date- Timestampopen,high,low,close- OHLC price data- For bid/ask data: Multi-indexed with ('bid'/'ask', 'open'/'high'/'low'/'close')
Signal Configuration Dictionary
{
'signal_name': {
'className': signal_class, # e.g., sig_BB
'indParams': {...}, # Indicator parameters
'signalParams': { # Signal parameters
'source': 'close', # Source price column
'target': 'close' # Target price column for analysis
},
'batchSize': 30 # Window size
}
}
Development Notes
- Code contains Russian comments and variable names (e.g., "агрегатор", "индикаторы")
- Version 2 modules (
*_v2.py) represent newer implementations - The system uses sliding window approach for real-time signal generation
- Backtesting generates probability matrices that weight signal reliability
- Data symlink:
data/->/var/data0/markettrade_data