ML Engine Updates: - Updated BTCUSD with Polygon API data (2024-2025): 215,699 new records - Re-trained all ML models: Attention (R²: 0.223), Base, Metamodel (87.3% confidence) - Backtest results: +176.71R profit with aggressive_filter strategy Documentation Consolidation: - Created docs/99-analisis/_MAP.md index with 13 new analysis documents - Consolidated inventories: removed duplicates from orchestration/inventarios/ - Updated ML_INVENTORY.yml with BTCUSD metrics and training results - Added execution reports: FASE11-BTCUSD, correction issues, alignment validation Architecture & Integration: - Updated all module documentation with NEXUS v3.4 frontmatter - Fixed _MAP.md indexes across all folders - Updated orchestration plans and traces Files: 229 changed, 5064 insertions(+), 1872 deletions(-) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
469 lines
8.1 KiB
Markdown
469 lines
8.1 KiB
Markdown
# DIRECTIVA: Stack Tecnológico Trading Platform
|
|
|
|
**ID**: DOQ-002
|
|
**Tipo**: Tecnología
|
|
**Alcance**: Trading Platform (trading-platform)
|
|
**Versión**: 2.0
|
|
**Fecha**: 2025-12-07
|
|
**Actualizado desde**: trading (NestJS -> Express.js)
|
|
|
|
## Backend Principal - Express.js
|
|
|
|
### Versiones Requeridas
|
|
```json
|
|
{
|
|
"node": ">=20.0.0",
|
|
"typescript": "^5.3.0",
|
|
"express": "^4.18.0"
|
|
}
|
|
```
|
|
|
|
### Dependencias Core
|
|
```json
|
|
{
|
|
// Framework
|
|
"express": "^4.18.2",
|
|
"cors": "^2.8.5",
|
|
"helmet": "^7.1.0",
|
|
"compression": "^1.7.4",
|
|
|
|
// Routing
|
|
"express-async-errors": "^3.1.1",
|
|
|
|
// Autenticación
|
|
"passport": "^0.7.0",
|
|
"passport-jwt": "^4.0.1",
|
|
"passport-local": "^1.0.0",
|
|
"passport-google-oauth20": "^2.0.0",
|
|
"passport-facebook": "^3.0.0",
|
|
"passport-github2": "^0.1.12",
|
|
"jsonwebtoken": "^9.0.2",
|
|
"bcrypt": "^5.1.1",
|
|
"speakeasy": "^2.0.0",
|
|
"qrcode": "^1.5.3",
|
|
|
|
// Validación
|
|
"zod": "^3.22.0",
|
|
|
|
// Base de Datos
|
|
"pg": "^8.11.0",
|
|
"redis": "^4.6.0",
|
|
|
|
// HTTP Client (para ML Services)
|
|
"axios": "^1.6.0",
|
|
|
|
// WebSockets
|
|
"socket.io": "^4.7.0",
|
|
|
|
// Pagos
|
|
"stripe": "^14.0.0",
|
|
|
|
// SMS/WhatsApp
|
|
"twilio": "^4.20.0",
|
|
|
|
// Logging
|
|
"winston": "^3.11.0",
|
|
"morgan": "^1.10.0",
|
|
|
|
// Configuración
|
|
"dotenv": "^16.3.0"
|
|
}
|
|
```
|
|
|
|
### Dependencias Dev
|
|
```json
|
|
{
|
|
"@types/node": "^20.0.0",
|
|
"@types/express": "^4.17.21",
|
|
"@types/passport-jwt": "^4.0.0",
|
|
"@types/bcrypt": "^5.0.0",
|
|
"@types/cors": "^2.8.17",
|
|
"typescript": "^5.3.0",
|
|
"tsx": "^4.7.0",
|
|
"eslint": "^8.57.0",
|
|
"prettier": "^3.2.0",
|
|
"@typescript-eslint/eslint-plugin": "^7.0.0",
|
|
"@typescript-eslint/parser": "^7.0.0",
|
|
"vitest": "^1.2.0",
|
|
"supertest": "^6.3.0"
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Frontend - React
|
|
|
|
### Versiones Requeridas
|
|
```json
|
|
{
|
|
"node": ">=20.0.0",
|
|
"react": "^18.0.0",
|
|
"typescript": "^5.3.0"
|
|
}
|
|
```
|
|
|
|
### Dependencias Core
|
|
```json
|
|
{
|
|
// Framework
|
|
"react": "^18.2.0",
|
|
"react-dom": "^18.2.0",
|
|
|
|
// Routing
|
|
"react-router-dom": "^6.22.0",
|
|
|
|
// State Management
|
|
"zustand": "^4.5.0",
|
|
|
|
// Data Fetching
|
|
"@tanstack/react-query": "^5.20.0",
|
|
|
|
// Styling
|
|
"tailwindcss": "^3.4.0",
|
|
"@tailwindcss/forms": "^0.5.0",
|
|
"clsx": "^2.1.0",
|
|
"class-variance-authority": "^0.7.0",
|
|
|
|
// UI Components (Shadcn/Radix)
|
|
"@radix-ui/react-dialog": "^1.0.0",
|
|
"@radix-ui/react-dropdown-menu": "^2.0.0",
|
|
"@radix-ui/react-select": "^2.0.0",
|
|
"@radix-ui/react-tabs": "^1.0.0",
|
|
"@radix-ui/react-tooltip": "^1.0.0",
|
|
"@radix-ui/react-avatar": "^1.0.0",
|
|
"@radix-ui/react-checkbox": "^1.0.0",
|
|
"@radix-ui/react-switch": "^1.0.0",
|
|
"@radix-ui/react-progress": "^1.0.0",
|
|
"@radix-ui/react-accordion": "^1.0.0",
|
|
"@radix-ui/react-popover": "^1.0.0",
|
|
"@radix-ui/react-scroll-area": "^1.0.0",
|
|
|
|
// Forms
|
|
"react-hook-form": "^7.50.0",
|
|
"zod": "^3.22.0",
|
|
"@hookform/resolvers": "^3.3.0",
|
|
|
|
// Charts
|
|
"recharts": "^2.12.0",
|
|
"lightweight-charts": "^4.1.0",
|
|
|
|
// Icons
|
|
"lucide-react": "^0.350.0",
|
|
|
|
// Animations
|
|
"framer-motion": "^11.0.0",
|
|
|
|
// HTTP Client
|
|
"axios": "^1.6.0",
|
|
|
|
// Notifications
|
|
"sonner": "^1.4.0",
|
|
|
|
// Dates
|
|
"date-fns": "^3.3.0",
|
|
|
|
// Payments
|
|
"@stripe/stripe-js": "^3.0.0",
|
|
"@stripe/react-stripe-js": "^2.5.0"
|
|
}
|
|
```
|
|
|
|
### Dependencias Dev
|
|
```json
|
|
{
|
|
"vite": "^5.4.0",
|
|
"@vitejs/plugin-react": "^4.2.0",
|
|
"typescript": "^5.3.0",
|
|
"@types/react": "^18.2.0",
|
|
"@types/react-dom": "^18.2.0",
|
|
"eslint": "^8.57.0",
|
|
"eslint-plugin-react": "^7.33.0",
|
|
"prettier": "^3.2.0",
|
|
"vitest": "^2.0.0",
|
|
"@testing-library/react": "^14.2.0",
|
|
"playwright": "^1.42.0"
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## ML Engine - FastAPI (Python)
|
|
|
|
### Versiones Requeridas
|
|
```yaml
|
|
python: ">=3.11,<3.13"
|
|
cuda: ">=12.0" # Opcional para GPU
|
|
```
|
|
|
|
### Ambiente Conda
|
|
```yaml
|
|
name: trading-ml
|
|
channels:
|
|
- pytorch
|
|
- nvidia
|
|
- conda-forge
|
|
- defaults
|
|
dependencies:
|
|
- python=3.11
|
|
- pytorch=2.5.0
|
|
- pytorch-cuda=12.1
|
|
- cudatoolkit=12.1
|
|
- pip
|
|
```
|
|
|
|
### Dependencias Python (requirements.txt)
|
|
```txt
|
|
# API Framework
|
|
fastapi>=0.115.0
|
|
uvicorn[standard]>=0.32.0
|
|
websockets>=13.0
|
|
httpx>=0.28.0
|
|
|
|
# ML Core
|
|
torch>=2.5.0
|
|
xgboost>=2.1.0
|
|
scikit-learn>=1.5.0
|
|
|
|
# Data Processing
|
|
pandas>=2.2.0
|
|
numpy>=1.26.0
|
|
ta-lib>=0.4.32
|
|
pandas-ta>=0.3.14b
|
|
pyarrow>=17.0.0
|
|
|
|
# Database
|
|
pymysql>=1.1.0
|
|
sqlalchemy>=2.0.0
|
|
|
|
# Validation
|
|
pydantic>=2.10.0
|
|
|
|
# Configuration
|
|
pyyaml>=6.0.0
|
|
python-dotenv>=1.0.0
|
|
|
|
# Logging
|
|
loguru>=0.7.0
|
|
|
|
# Monitoring
|
|
wandb>=0.19.0
|
|
tensorboard>=2.18.0
|
|
|
|
# Serialization
|
|
joblib>=1.4.0
|
|
|
|
# Development
|
|
pytest>=8.3.0
|
|
black>=24.0.0
|
|
isort>=5.13.0
|
|
mypy>=1.8.0
|
|
```
|
|
|
|
### Dependencias Opcionales (GPU)
|
|
```txt
|
|
# GPU Acceleration
|
|
nvidia-cuda-runtime-cu12>=12.0.0
|
|
nvidia-cudnn-cu12>=9.0.0
|
|
```
|
|
|
|
---
|
|
|
|
## Bases de Datos
|
|
|
|
### PostgreSQL 15+
|
|
```yaml
|
|
version: "15"
|
|
extensions:
|
|
- uuid-ossp
|
|
- pgcrypto
|
|
- btree_gin
|
|
- pg_trgm
|
|
features:
|
|
- Row Level Security (RLS)
|
|
- JSON/JSONB support
|
|
- Full-text search
|
|
- Partitioning (si necesario)
|
|
schemas:
|
|
- public # Users, profiles, auth
|
|
- education # Courses, lessons, quizzes
|
|
- trading # Watchlists, orders, positions
|
|
- investment # Products, accounts, transactions
|
|
- financial # Subscriptions, wallets, billing
|
|
- ml # Models, predictions, signals
|
|
- audit # Audit logs, events
|
|
```
|
|
|
|
### MySQL 8+
|
|
```yaml
|
|
version: "8.0"
|
|
charset: utf8mb4
|
|
collation: utf8mb4_unicode_ci
|
|
purpose: Historical trading data (OHLCV)
|
|
features:
|
|
- JSON support
|
|
- Window functions
|
|
- CTEs
|
|
```
|
|
|
|
### Redis 7+
|
|
```yaml
|
|
version: "7.x"
|
|
purpose:
|
|
- Session storage
|
|
- Rate limiting
|
|
- Caching
|
|
- Real-time pub/sub
|
|
```
|
|
|
|
---
|
|
|
|
## DevOps
|
|
|
|
### Docker
|
|
```yaml
|
|
docker: ">=24.0.0"
|
|
docker-compose: ">=2.24.0"
|
|
```
|
|
|
|
### Node.js Runtime
|
|
```yaml
|
|
node: "20.x LTS"
|
|
npm: ">=10.0.0"
|
|
```
|
|
|
|
### Python Runtime
|
|
```yaml
|
|
miniconda: "latest"
|
|
python: "3.11.x"
|
|
```
|
|
|
|
---
|
|
|
|
## Estructura de Configuración
|
|
|
|
### Backend (Express.js)
|
|
```
|
|
apps/backend/
|
|
├── .env # Variables de entorno
|
|
├── .env.example # Template
|
|
├── tsconfig.json # TypeScript config
|
|
├── package.json # Dependencies
|
|
└── src/
|
|
└── config/
|
|
└── index.ts # Configuración centralizada
|
|
```
|
|
|
|
### Frontend (React)
|
|
```
|
|
apps/frontend/
|
|
├── .env # Variables de entorno
|
|
├── .env.example # Template
|
|
├── vite.config.ts # Vite config
|
|
├── tsconfig.json # TypeScript config
|
|
├── tailwind.config.ts # Tailwind config
|
|
├── postcss.config.js # PostCSS config
|
|
└── package.json # Dependencies
|
|
```
|
|
|
|
### ML Engine (FastAPI)
|
|
```
|
|
apps/ml-engine/
|
|
├── .env # Variables de entorno
|
|
├── .env.example # Template
|
|
├── environment.yml # Conda environment
|
|
├── requirements.txt # Pip dependencies
|
|
├── pyproject.toml # Project config
|
|
└── config/
|
|
├── trading.yaml # Trading params
|
|
├── models.yaml # Model config
|
|
└── database.yaml # Database config
|
|
```
|
|
|
|
---
|
|
|
|
## Comandos de Desarrollo
|
|
|
|
### Backend (Express.js)
|
|
```bash
|
|
# Desarrollo
|
|
npm run dev
|
|
|
|
# Build
|
|
npm run build
|
|
|
|
# Start producción
|
|
npm start
|
|
|
|
# Test
|
|
npm run test
|
|
npm run test:watch
|
|
|
|
# Lint
|
|
npm run lint
|
|
npm run lint:fix
|
|
|
|
# Format
|
|
npm run format
|
|
```
|
|
|
|
### Frontend
|
|
```bash
|
|
# Desarrollo
|
|
npm run dev
|
|
|
|
# Build
|
|
npm run build
|
|
|
|
# Preview
|
|
npm run preview
|
|
|
|
# Test
|
|
npm run test
|
|
npm run test:e2e
|
|
|
|
# Lint
|
|
npm run lint
|
|
```
|
|
|
|
### ML Engine
|
|
```bash
|
|
# Activar ambiente
|
|
conda activate trading-ml
|
|
|
|
# Desarrollo
|
|
uvicorn src.api.main:app --reload --port 8000
|
|
|
|
# Test
|
|
pytest tests/
|
|
|
|
# Lint
|
|
black src/
|
|
isort src/
|
|
mypy src/
|
|
```
|
|
|
|
---
|
|
|
|
## Reglas de Versionado
|
|
|
|
1. **Semantic Versioning**: MAJOR.MINOR.PATCH
|
|
2. **Lockfiles**: package-lock.json, conda-lock.yml
|
|
3. **Actualización de dependencias**: Mensual para patches, trimestral para minor
|
|
4. **Breaking changes**: Solo en releases major planificados
|
|
|
|
---
|
|
|
|
## Comparación con trading (versión anterior)
|
|
|
|
| Aspecto | trading | trading-platform |
|
|
|---------|-------------|------------------|
|
|
| Backend Framework | NestJS 11.x | Express.js 4.18.x |
|
|
| ORM | TypeORM | Raw SQL + pg |
|
|
| Validation | class-validator | Zod |
|
|
| Logger | NestJS Logger | Winston |
|
|
| React Version | 19.x | 18.x |
|
|
| State Management | Zustand 5.x | Zustand 4.x |
|
|
|
|
---
|
|
*Migrado desde trading y actualizado para Express.js*
|