{"id":50364500,"url":"https://github.com/victorh-silveira/aether-quantum-engine","last_synced_at":"2026-06-16T20:00:26.690Z","repository":{"id":360253790,"uuid":"1213166703","full_name":"victorh-silveira/aether-quantum-engine","owner":"victorh-silveira","description":"Motor quantitativo assíncrono para a Deriv: Deep Learning (TCN PyTorch) em Range Break, dimensionamento Kelly com martingale e gates de qualidade pós-treino.","archived":false,"fork":false,"pushed_at":"2026-06-10T03:14:54.000Z","size":915,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-10T05:22:56.925Z","etag":null,"topics":["algorithmic-trading","asyncio","deriv","fintech","llm","ollama","python","rise-fall","trading-bot","websocket"],"latest_commit_sha":null,"homepage":"https://github.com/victorh-silveira/aether-quantum-engine","language":"Python","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/victorh-silveira.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-17T05:32:30.000Z","updated_at":"2026-06-10T03:14:56.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/victorh-silveira/aether-quantum-engine","commit_stats":null,"previous_names":["victorh-silveira/aether-quantum-engine"],"tags_count":55,"template":false,"template_full_name":null,"purl":"pkg:github/victorh-silveira/aether-quantum-engine","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/victorh-silveira%2Faether-quantum-engine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/victorh-silveira%2Faether-quantum-engine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/victorh-silveira%2Faether-quantum-engine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/victorh-silveira%2Faether-quantum-engine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/victorh-silveira","download_url":"https://codeload.github.com/victorh-silveira/aether-quantum-engine/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/victorh-silveira%2Faether-quantum-engine/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34421326,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-16T02:00:06.860Z","response_time":126,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algorithmic-trading","asyncio","deriv","fintech","llm","ollama","python","rise-fall","trading-bot","websocket"],"created_at":"2026-05-30T03:03:10.652Z","updated_at":"2026-06-16T20:00:26.652Z","avatar_url":"https://github.com/victorh-silveira.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Aether Quantum Engine 2.0\n\n[![Python](https://img.shields.io/badge/Python-3.13.12-3776AB?logo=python\u0026logoColor=white)](app/.python-version)\n[![Lint](https://img.shields.io/badge/Lint-ruff%20%7C%20interrogate-3776AB?logo=ruff\u0026logoColor=white)](.github/actions/lint/action.yml)\n[![Tests](https://img.shields.io/badge/Tests-pytest-0F9D58?logo=pytest\u0026logoColor=white)](app/tests/unit)\n[![Coverage](https://img.shields.io/badge/Coverage-100%25-0F9D58?logo=codecov\u0026logoColor=white)](app/tests/unit)\n[![Pre-commit](https://img.shields.io/badge/Pre--commit-active-FAB040?logo=pre-commit\u0026logoColor=white)](.pre-commit-config.yaml)\n[![CI](https://github.com/victorh-silveira/aether-quantum-engine/actions/workflows/ci.yml/badge.svg)](https://github.com/victorh-silveira/aether-quantum-engine/actions/workflows/ci.yml)\n\nMotor quantitativo assíncrono para a Deriv: decisão por **Deep Learning (TCN PyTorch)** nos símbolos **Range Break** (`R_10`, `R_25`, `R_50`, `R_75`, `R_100`), contratos **RISE_FALL** de **1 minuto**, dimensionamento **Kelly** e recuperação **martingale** integral quando há perda pendente.\n\nDocumentação: [arquitetura](docs/arquitetura.md) | [metodologia quant](docs/medallion.md) | [estrutura do repo](docs/structure.md) | [Deriv API](docs/deriv-api.md)\n\nLayout: `app/` (código e testes), `config/settings.json`, `docs/`, `linters/`. Ver [docs/structure.md](docs/structure.md).\n\n---\n\n## O que o motor faz hoje\n\n| Etapa | Componente | Descrição |\n|-------|------------|-----------|\n| Dados | `StreamHandler` | WebSocket Deriv, histórico OHLC, buffer configurável |\n| Decisão | `decision_bridge` + TCN | Treino walk-forward online, calibração, gating e seleção competitiva entre símbolos do par de hedge |\n| Execução | `ExecutionManager` | Ordens RISE_FALL, uma ordem por ciclo, logs `EXEC` / `EXEC_SEL` |\n| Risco | `RiskManager` | Kelly fracionário, stop win diário, martingale em recovery |\n| Estado | `PersistenceManager` | `data/state.json`, checkpoints `data/dl/{symbol}.pth` |\n\nCiclo do orquestrador: `orchestrator.cycle_interval_seconds` (padrão 300 s). Granularidade OHLC: `data_handler.granularity` (padrão 60 s).\n\n---\n\n## Configuração principal\n\nArquivo: [`config/settings.json`](config/settings.json)\n\n| Bloco | Função |\n|-------|--------|\n| `symbols` / `anchor` | Universo (`R_10` … `R_100`; âncora `R_50`) |\n| `data_handler` | `granularity`, `history_bars`, `fetch_count`, `buffer_limit` |\n| `deep_learning` | TCN, `lookback`, `training_history_bars`, gating, `deploy_gate`, `recovery_gating` |\n| `orchestrator.execution` | `mandatory_trade_each_cycle`, `diversify_after_loss_margin`, settlement |\n| `risk_management` | Kelly, martingale, stop win, stakes |\n| `trading` | `demo` / `live` |\n\nVariáveis na raiz (`.env`): `AETHER_DERIV_PAT`, `AETHER_DERIV_APP_ID`, `AETHER_DERIV_ACCOUNT_ID` (opcional). Validação: `python app/scripts/deriv_pat_connect.py`.\n\n---\n\n## Gerenciamento de risco\n\n- **Kelly fracionário** com win rate dinâmico e tetos `max_stake_pct`.\n- **Stop win diário** por percentual da banca inicial (conta grande) ou valor fixo (conta pequena).\n- **Martingale de recovery** quando há perda pendente: stake cobre perda integral + alvo derivado do payout, limitada por banca e `stake_max`.\n- Cooldown por símbolo após sequência de losses (`symbol_loss_cooldown_candles`).\n\n---\n\n## Recovery e execução\n\n- Em recovery, a seleção **prioriza hedge no par** (símbolo oposto ao da última loss).\n- `mandatory_trade_each_cycle: true` — o motor envia ordem a cada ciclo elegível, mesmo com gating DL fraco (stake reduzida via `mandatory_weak_*`).\n- Direção de execução segue o sinal DL (`CALL`/`PUT` previsto pelo modelo).\n\n---\n\n## Observabilidade\n\nLogs em `logs/engine.log` (formato `AetherFormatter`):\n\n- `CFG decisao` — modo DL, lookback, histórico de treino, execução obrigatória\n- `DL` / `DL_TRAIN` — treino, deploy, bloqueios\n- `EXEC`, `EXEC_SEL`, `EXEC_NONE` — decisão e stake por ciclo\n- `MARTINGALE`, `RISK` — sizing e recovery\n- Liquidação e resumo de cluster após settlement\n\nMonitor opcional: `python app/scripts/monitor/live_monitor.py`\n\n---\n\n## Stack e qualidade\n\n- **Python 3.13.12**, `asyncio`, NumPy, Polars, PyTorch (TCN)\n- **Deriv** PAT + REST OTP + WebSocket (`api_config` em settings; ver `docs/deriv-api.md`)\n- **CI / pre-commit**: Ruff, Interrogate, Vulture, limite 300 linhas/arquivo, pytest com **100%** de cobertura em `app/src`\n\nRequisito local: ambiente Conda **`deriv-api`** (Python 3.13.12). Configuração em [`config/python.json`](config/python.json).\n\nWindows: abra **Anaconda PowerShell Prompt**, `conda activate deriv-api`:\n\n```powershell\nconda activate deriv-api\npip install -r app/requirements.txt -r app/requirements-dev.txt\npython app/scripts/deriv_pat_connect.py\npython run.py\n```\n\nWSL:\n\n```bash\ncd /mnt/c/Users/\u003cseu-usuario\u003e/Desktop/aether-quantum-engine\nmake setup-wsl\nsource ~/.bashrc\nmake install\nmake test\nmake lint\n```\n\nPre-commit (na raiz do repo):\n\n```powershell\nconda activate deriv-api\npython -m pre_commit run --all-files\n```\n\nWSL: `make pre-commit-run`\n\n---\n\n## Execução ao vivo\n\n1. Configure `.env` com PAT e App ID (app PAT em developers.deriv.com).\n2. `conda activate deriv-api` e instale dependências.\n3. Valide checkpoints DL em `app/data/dl/`.\n4. `make run` ou `launch-all-demo.bat` / `launch-all-live.bat`\n\nO motor exige `deep_learning.enabled: true`. Não há modo de decisão por LLM no pipeline ao vivo.\n\n---\n\n## Referências\n\n- [docs/arquitetura.md](docs/arquitetura.md) — fluxos técnicos\n- [docs/medallion.md](docs/medallion.md) — filosofia quant e parâmetros de qualidade\n- [docs/deriv-api.md](docs/deriv-api.md) — API Deriv\n- [docs/CHANGELOG.md](docs/CHANGELOG.md) — histórico de releases\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvictorh-silveira%2Faether-quantum-engine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvictorh-silveira%2Faether-quantum-engine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvictorh-silveira%2Faether-quantum-engine/lists"}