initial: import DOLPHIN baseline 2026-04-21 from dolphinng5_predict working tree
Includes core prod + GREEN/BLUE subsystems: - prod/ (BLUE harness, configs, scripts, docs) - nautilus_dolphin/ (GREEN Nautilus-native impl + dvae/ preserved) - adaptive_exit/ (AEM engine + models/bucket_assignments.pkl) - Observability/ (EsoF advisor, TUI, dashboards) - external_factors/ (EsoF producer) - mc_forewarning_qlabs_fork/ (MC regime/envelope) Excludes runtime caches, logs, backups, and reproducible artifacts per .gitignore.
This commit is contained in:
106
prod/money_stress_test.py
Executable file
106
prod/money_stress_test.py
Executable file
@@ -0,0 +1,106 @@
|
||||
import sys
|
||||
import logging
|
||||
import numpy as np
|
||||
from pathlib import Path
|
||||
from decimal import Decimal
|
||||
from datetime import datetime, timezone
|
||||
|
||||
# 1. Environment Setup
|
||||
_PROD_DIR = Path(__file__).resolve().parent
|
||||
_ROOT_DIR = _PROD_DIR.parent
|
||||
_DOLPHIN_DIR = _ROOT_DIR / "nautilus_dolphin"
|
||||
sys.path.insert(0, str(_DOLPHIN_DIR))
|
||||
|
||||
try:
|
||||
from nautilus_trader.model.objects import Money, Currency, Price, Quantity
|
||||
from nautilus_dolphin.nautilus.dolphin_actor import DolphinActor
|
||||
from nautilus_dolphin.nautilus.esf_alpha_orchestrator import NDAlphaEngine
|
||||
LOAD_OK = True
|
||||
except ImportError as e:
|
||||
print(f"IMPORT ERROR: {e}")
|
||||
LOAD_OK = False
|
||||
|
||||
def run_integrity_check():
|
||||
if not LOAD_OK: return
|
||||
|
||||
print("=" * 70)
|
||||
print("MONEY INTEGRITY & STRESS TEST HARNESS")
|
||||
print("=" * 70)
|
||||
|
||||
usdt = Currency.from_str("USDT")
|
||||
initial_val = 25000.0
|
||||
|
||||
# -- TEST 1: Type Compliance (Fuzzing) --
|
||||
print("[1] Fuzzing Money Constructor Types...")
|
||||
fuzz_types = [
|
||||
("Float", 25000.0),
|
||||
("String", "25000.0"),
|
||||
("Decimal", Decimal("25000.0")),
|
||||
("Int", 25000),
|
||||
("numpy.float64", np.float64(25000.0)),
|
||||
]
|
||||
|
||||
for label, val in fuzz_types:
|
||||
try:
|
||||
m = Money(val, usdt)
|
||||
# Verify float conversion parity
|
||||
if abs(float(m) - 25000.0) > 1e-9:
|
||||
print(f" [FAIL] {label}: Precision Loss -> {float(m)}")
|
||||
else:
|
||||
print(f" [PASS] {label}")
|
||||
except Exception as e:
|
||||
print(f" [FAIL] {label}: {e}")
|
||||
|
||||
# -- TEST 2: Actor-Engine Coupling (Serialization & Drift) --
|
||||
print("\n[2] Stressing Actor-Engine Capital Transfer...")
|
||||
|
||||
current_cap = Decimal("25000.0")
|
||||
for day in range(1, 101): # Simulated 100 days
|
||||
# Simulate PnL update (mix of Decimal and float)
|
||||
# Random PnL between -500 and +1000
|
||||
pnl_float = (np.random.random() * 1500) - 500
|
||||
pnl_dec = Decimal(str(round(pnl_float, 8)))
|
||||
|
||||
# Current logic in harness:
|
||||
# result['capital'] = getattr(actor.engine, 'capital', initial_capital)
|
||||
# capital = Decimal(str(result['capital']))
|
||||
|
||||
# Test: Can we always re-initialize Money from this drift?
|
||||
try:
|
||||
m_test = Money(str(current_cap), usdt)
|
||||
current_cap += pnl_dec
|
||||
except Exception as e:
|
||||
print(f" [CRIT] Day {day} Money construction failed: {e}")
|
||||
break
|
||||
|
||||
print(f" [PASS] Completed 100-day simulation. Final Cap: {current_cap}")
|
||||
|
||||
# -- TEST 3: NaN/Inf Resilience --
|
||||
print("\n[3] Checking Failure Modes (NaN/Inf)...")
|
||||
bad_vals = [float('nan'), float('inf'), -float('inf')]
|
||||
for bv in bad_vals:
|
||||
try:
|
||||
Money(bv, usdt)
|
||||
print(f" [WARN] Money accepted {bv} (Expected Failure)")
|
||||
except Exception:
|
||||
print(f" [PASS] Money correctly rejected {bv}")
|
||||
|
||||
# -- TEST 4: Engine Numba Integration --
|
||||
print("\n[4] Testing NDAlphaEngine float compliance...")
|
||||
try:
|
||||
# Ensure engine correctly handles a float input from a Decimal source
|
||||
dec_source = Decimal("25000.12345678")
|
||||
engine = NDAlphaEngine(initial_capital=float(dec_source))
|
||||
if engine.capital != 25000.12345678:
|
||||
print(f" [FAIL] engine.capital float precision loss: {engine.capital}")
|
||||
else:
|
||||
print(f" [PASS] NDAlphaEngine matches float64 precision")
|
||||
except Exception as e:
|
||||
print(f" [FAIL] Engine init error: {e}")
|
||||
|
||||
print("\n" + "=" * 70)
|
||||
print("INTEGRITY CHECKS COMPLETE")
|
||||
print("=" * 70)
|
||||
|
||||
if __name__ == "__main__":
|
||||
run_integrity_check()
|
||||
Reference in New Issue
Block a user