malkhut(docs): cross-exchange learning + adversary ecology documented
README updated with: - Cross-exchange learning: ScenarioFactory exchange_id + cross_exchange_transfer - PerformanceMatrix keyed by (regime, strategy_id, venue) - Adversary ecology: ActionKind-level abstraction, venue-independent - Transferability principle: parameters transfer, names are venue-specific
This commit is contained in:
@@ -471,7 +471,7 @@ Re-measurement at correct fees is required for production deployment.
|
||||
| **Strategy DSL v2** | `training/dsl.py` | 69 | 40+ primitives, 40+ sensors, 16 builtins |
|
||||
| **Order Types** | `training/order_types.py` | (new) | Three-dimensional: OrderType × TimeInForce × Instructions (FIX-aligned) |
|
||||
| **Strategy Generator** | `training/generator.py` | 20 | Genetic programming: crossover, mutation, tournament |
|
||||
| **Strategy Selector** | `training/selector.py` | 24 | Regime → strategy mapping, performance matrix |
|
||||
| **Strategy Selector** | `training/selector.py` | 24 | Regime × strategy × venue matrix, cross-exchange comparison |
|
||||
| **Asset Classification** | `training/asset_classification.py` | 190 | Multi-label taxonomy + exchange registry, 13 assets, system-wide store |
|
||||
| **Asset Behavior DSL** | `training/asset_behavior.py` | (in classification) | 10 orthogonal dimensions, 3 templates, 13 behaviors, research-validated |
|
||||
| **Asset Compiler** | `training/asset_compiler.py` | (new) | Auto-fetch from Binance/BingX API, compile profiles, rate-limited |
|
||||
@@ -1238,6 +1238,32 @@ but semantics are identical. A `LIMIT` on BingX = `LIMIT` on Binance = `LIMIT` o
|
||||
(same fill behavior). Only the API string differs. The venue adapter translates
|
||||
normalized → exchange-native at submission time.
|
||||
|
||||
#### Cross-Exchange Learning
|
||||
|
||||
ScenarioFactory is venue-aware: `ScenarioFactory(exchange_id='bingx')` tags every
|
||||
scenario with its venue. Cross-exchange transfer re-tags for a different venue:
|
||||
```python
|
||||
factory = ScenarioFactory(exchange_id='bingx')
|
||||
scenarios_bingx = factory.build_suite(symbols=['BTCUSDT', 'ETHUSDT'])
|
||||
strategy = train(scenarios_bingx) # evolve on BingX
|
||||
|
||||
scenarios_binance = factory.cross_exchange_transfer(scenarios_bingx, 'binance')
|
||||
score = evaluate(strategy, scenarios_binance) # test on Binance
|
||||
```
|
||||
|
||||
PerformanceMatrix keys are `(regime, strategy_id, venue)`:
|
||||
- `get_best(regime, venue='bingx')` — per-venue best
|
||||
- `get_venue_comparison(regime, strategy_id)` — `{venue: score}`
|
||||
- `get_best(regime)` — venue-agnostic (backward compatible)
|
||||
|
||||
#### Adversary Ecology
|
||||
|
||||
Counterparties operate at the ActionKind level (CROSS_SPREAD, PLACE, CANCEL),
|
||||
not at order-type level. The CWM translates ActionKind to venue-native order types:
|
||||
- `CROSS_SPREAD` → fills aggressively → equivalent to MARKET
|
||||
- `PLACE` → passive quote → equivalent to LIMIT
|
||||
Fee calculation uses VenueRules (per-exchange fees). The ecology is venue-independent.
|
||||
|
||||
#### Standards Referenced
|
||||
|
||||
- FIX 4.4: Tag 40 (OrdType), Tag 59 (TimeInForce), Tag 18 (ExecInst)
|
||||
|
||||
Reference in New Issue
Block a user