Files
resonance-engine/__pycache__/inject_continuous_stream.cpython-312.pyc
T

144 lines
18 KiB
Plaintext
Raw Normal View History

2026-06-07 06:34:30 +07:00
Ë
•ª$j¯2ãóŠdZddlmZddlZddlZddlZddlZddlmZddl Z
ddl Z ddl
Z
dZdZdZgd¢Zd Zd
Zd Zd Zd
d ddœZdZdZdZdZdZdZgd¢Zej<d«Zede«Z e jCdd¬«e dz Z"d%dZ#Gdd«Z$d&dZ%d'dZ&d(d „Z' d)d!„Z( d*d"„Z)d#„Z*e+d$k(re*«yy)+uùinject_continuous_stream.py — 4-arm continuous-streaming experiment.
Question: when real BTC minute data is fed continuously into the lattice,
does field state predict future |price moves| BETTER than the raw data alone?
Arms:
A — NO-INJECTION CONTROL. Lattice runs free, we sample state every replay-tick.
Tells us the lattice's natural variability over the experiment window.
B — STACKED. All 3 vars injected at (512,512), distinct ZMQ messages per var.
Tests "amplitude only" — does the lattice add anything over data?
C — SEPARATED. signed_flow @(400,512), vwap_drift @(512,512), wallet_entropy @(624,512).
Tests "spatial separation creates distinguishable channels".
D — RAW DATA BASELINE. Computed offline by the analyzer from parquets directly.
No lattice involved. Reference performance — "how good is the data alone?".
Variables (the 3 confirmed-real channels from varisol overnight):
signed_flow_usd, vwap_drift, wallet_entropy
Per source minute m:
1. compute one-sided rolling z-score for each var over past 500 minutes
2. cap z at +/-3, convert to strength = z/3 * STR_CAP (STR_CAP=0.30, calibrated linear range)
3. for arms B/C: send 3 inject_density messages per minute
4. wait WAIT_AFTER_INJECT_MS
5. snapshot most-recent telemetry as field_state(m)
6. advance to next minute after PER_MINUTE_MS total
Replay rate: 100ms per source minute (10x realtime). Lattice halflife ~0.5s, so
each minute's injection contributes to a sustained accumulated state. Verified
by _throughput_probe.py — lattice handles 20/sec without packet loss.
Output: /mnt/d/Resonance_Engine/traj/contstream_<RUN_ID>/
meta.json
arm_A_no_inject.parquet
arm_B_stacked.parquet
arm_C_separated.parquet
progress.log
é)Ú annotationsN)ÚPathz+/mnt/d/PaperTrader/research/hl_data/minutesz202603*ÚBTC)Úsigned_flow_usdÚ
vwap_driftÚwallet_entropyiôg333333Ó?g@)ç€@r )gy@r )g€ƒ@r g@@édé<ztcp://127.0.0.1:5556ztcp://127.0.0.1:5557) Ú asymmetryÚ coherenceÚ stress_xxÚ stress_yyÚ stress_xyÚvorticity_meanÚvel_meanÚvel_maxÚvel_varz
%Y%m%dT%H%M%Sz(/mnt/d/Resonance_Engine/traj/contstream_T)ÚparentsÚexist_okz progress.logcóÐdtjd«d|}t|d¬«tj d«5}|j |dz«ddd«y#1swYyxYw)%Y-%m-%dT%H:%M:%Sz] T)ÚflushÚ
)ÚtimeÚstrftimeÚprintÚPROGRESSÚopenÚwrite)ÚmsgÚlineÚfs ú3/mnt/d/Resonance_Engine/inject_continuous_stream.pyÚlogr'Ss\Ø
Œt}‰}Ð2°"°S°EÐ :€DÜ ˆ$Ü ð˜qØ t‘ Ô÷÷ñús ¾AÁA%có(eZdZddZdZddZdZy)Ú LatestTelcó`tjj«|_|jj tj
«|_|j j|«|j jtjd«|j jtjd«d|_ d|_ d|_
tj«|_tj"|j$d¬«|_|j&j)«y)grT)ÚtargetÚdaemon)ÚzmqÚContextÚinstanceÚctxÚsocketÚSUBÚsockÚconnectÚ
setsockoptÚ SUBSCRIBEÚRCVHWMÚlatestÚ latest_wallÚn_seenÚ threadingÚEventÚ_stopÚThreadÚ_runÚ_tÚstart)ÚselfÚaddrs r&Ú__init__zLatestTel.__init__\Ü—;;×)ˆŒØ—H‘H—O‘O¤C§G¡GÓŒ Ø ‰ ×ј$ÔØ ‰ ×ÑœSŸ]™]¨CÔ ‰ ×ÑœSŸZ™Z¨Ô.Ø#'ˆŒ Ø"%ˆÔ؈Œ Ü—_‘_ÓŒ
Ü×"¨$¯)©)¸AˆŒØ 
r+có¨|jj«s©|jjd«rr |jj t
j «}tj|«|_ tj«|_ |xjdz
c_ |jj«sŒ¨yy#t$rYŒ(wxYw)Nr
é)r>Úis_setr4ÚpollÚ recv_stringr.ÚNOBLOCKÚjsonÚloadsr9rr:r;Ú Exception)rCÚraws r&r@zLatestTel._runisØ—**×y‰y~‰~˜ØŸ)™)×/´· ± Ó<CÜ"&§*¡*¨S£/D”KÜ'+§y¡y£{—KK $•Kð
—*‘*×%øôÙðús·A1CÃ CÃCcó2|j|jfS©N)r9r:©rCs r&ÚsnapshotzLatestTel.snapshottsØ{‰{˜D×,r+có8|jj«yrQ)r>ÚsetrRs r&ÚstopzLatestTel.stopwsØ
Õr+N)rDÚstr)Úreturnztuple[dict | None, float])Ú__name__Ú
__module__Ú __qualname__rEr@rSrV©r+r&r)r)[só ò ór+r)c óRttjtdt««}|st dtdt«t dt
|«d|djd«dd|djd«dd «g}|D]N}ttj|d
««}|D]&}|jtj|««Œ(ŒPtj|d ¬ «}||jtk(jd
«jd ¬«}|j!d
g¬«jd ¬«}t dt
|«dtd|j"j%«d|j"j'««|S)/zno day dirs matching z in zloading z day dirs (réÿÿÿÿz .. ú)z
/*.parquetT)Ú ignore_indexÚminute)Údrop)Úsubsetzloaded z unique minutes of z data, minute range z..)ÚsortedÚglobÚ DATA_ROOTÚ DAYS_GLOBÚ RuntimeErrorr'ÚlenÚsplitÚappendÚpdÚ read_parquetÚconcatÚcoinÚCOINÚ sort_valuesÚ reset_indexÚdrop_duplicatesrbÚminÚmax)Úday_dirsÚdfsÚfilesr%Údfs r&Úload_btc_monthr||s†Ü”d—i‘i¤9 +¨Q¬y¨kÐ :Ó<€HÙ ÜÐ2´9°+¸TÄ)ÀЈ(”3x“=/ ¨X°a©[×->Ñ->¸sÓ-CÀBÑ-GÐ,HÈÈXÐVXÉ\×M_ÑM_Ð`cÓMdÐegÑMhÐLiÐijÐ
€CØ
ò+ˆÜ”t—y‘y A 3 jÐ!1Ó3ˆØò +ˆAØ J‰J”r— qÓ 
3 TÔ *€BØ ˆBG‰G”t‰OÑ × (Ñ (¨Ó 2× >Ñ >ÀDÐ >Ó I€BØ × Ñ  H Ó .× :Ñ :ÀÐ :Ó E€B܈'”#b“'Ð-¬d¨Vð4ØŸ ™ Ÿ
Ш2¯9©9¯=©=«?Ð*;ð
€Ir+có6i}|D]}||jt«}|jd«j|d¬«}|j «}|j «}||z
|j
dtj«z } | j||<Œ“|S)zLFor each var: rolling z-score using only PAST `win` minutes (no look-ahead).rGé2)ÚwindowÚ min_periodsr)
ÚastypeÚfloatÚshiftÚrollingÚmeanÚstdÚreplaceÚnpÚnanÚvalues)
r{Úvars_ÚwinÚoutÚrollÚmuÚsdÚzs
r&Úcompute_one_sided_zscoresr”Žà
€CØ
òˆØ ˆq‰EL‰LœÓ ˆàw‰wqz׸=ˆØ
Y‰Y[ˆØ
X‰XZˆØ
‰Vr—z‘z !¤R§V¡VÓ ØˆˆAŠðð €Jr+cóšdt|«t|«tt|«dœ}|jtj|««y)inject_density)ÚcmdÚsigmaÚstrength)rÚ
INJECT_SIGÚ send_stringrLÚdumps)Úpubr˜r™rÚpayloads r&Ú
inject_oner¡s:ؘ!“H¤5¨£8ܰh³ñA€Gð‡OO”D—JJ˜(r+có.|j«\}}t|«|||rtj«|z
dznddœ}tD]}|j |«|d|<Œ|t
D]}d||<Œ |St
D]}|j |«||<Œ|S)z/Pull latest telemetry, build per-minute record.éèN)rbÚarmÚ snap_wallÚ snap_age_msÚstr_)rSÚintrÚ VARIABLESÚgetÚCHANNELS) ÚtelrbÚ strengthsr¤Úsnapr¥ÚrecrŽÚchs r&Ú snapshot_rowr±¤ð—l‘l“nO€Dˆ)äv“;ØØÙ;DœŸ ™ ›  iÑ/°4Ò7È$ñ  €Cô òØ#Ÿ-™-¨Óˆd1#ˆJŠð €|Üò ˆB؈CŠGð ð
€Jôò #ˆBØ—h‘h˜r“lˆCŠGð €Jr+có¦td|dt|«d«|dk(r td«n/|dk(rtdt«n|dk(rtd t«g}t j«}|}t|«}t
d
z } t d
z }
t|«D]e} t j«} t|jj| «}
i}tD]a}||| }tj|«sd ||<Œ&ttj|t t ««}|t z t"z||<Œc|d vrT|RtD]3}||}|Œ |dk(r
t\}}n t|\}}t%||||«Œ5t j&|
«nt j&|
«t)||
||«}|j+|«t j«| z
}| |z
}|d
kDrt j&|«t j«|z
dkDsŒ„t j«|z
}| dz|z dz}|d
kDr| dz|z nd
}|d
kDr || z
dz
|z nd
}|j,xsi}td|d| dzd|d|dd|dd|dz dd|j/dd«dd|j0r$t j«|j0z
dznddd |j2«t j«}Œhtd|d!t|«d"t j«|z
dz dd#«t5j6|«}|S)$zBRun one arm end to end. Returns a DataFrame of per-minute records.z
=== arm z : starting (z
minutes) ===ÚAu9 arm A: NO INJECTIONS — sampling state at cadence onlyÚBz arm B: all 3 vars at ÚCu! arm C: spatially separated — g@@N)r´rr rGr
z arm ú r^z (z.1fz %) rate=z min/s ETA=z
min asym=r ú.3fz latest_tel_age=r£r_z.0fz
ms tel_seen=z COMPLETE records=z total=ru)r'rjÚ XY_CENTERÚARM_C_XYrÚ
PER_MINUTE_MSÚWAIT_AFTER_INJECT_MSÚranger¨rbÚiatr©rˆÚisfiniterÚclipÚZ_CLIPÚSTR_CAPr¡Úsleepr±rlr9r:r;rmÚ DataFrame)r{ÚzscoresÚrecordsÚ t_arm_startÚ last_statusÚ n_minutesÚstep_sÚ
wait_inject_sÚt_tickrbr­r“Úz_crr˜r™ÚspentÚ remainingÚelapsedÚpctÚ
rate_per_sÚeta_sÚ cur_fieldrs r&Úrun_armrÖ¹sKôˆ*SE˜¤c¨"£g Y¨mÐ
ˆc‚zÜ Ð  ŠÜ Ð%¤i [Ð  ŠÜ ШzÐ €GÜ—)‘)“+€KØ€KÜB“€IÜ
˜
#€FÜ(¨6Ñ1€Mä

ó1܈ÜR—Y‘Y—]‘] 1Ñ&ˆØˆ Üò 8ˆ˜
˜1
ˆ—;;˜q”>Ø# ˜! äœBŸG™G A¬ w´Ó8Ø #¤f¡ ´Ñ7 ˜!’ ð
    Üò
)ؘa‘LØØ˜#’:Ü$DA# A™;DA˜3  1 

J‰J 
J‰J ˜3 ¨ °3ÓØô— ‘ “ ˜fÑØ˜U‘Nˆ Ø qŠ=Ü J‰J  9‰9‹;˜Ñ $ rÔ —ii“k KÑ/ˆGØq‘5˜IÑÑ+ˆCØ.5¸ªk˜!˜a™% *¸qˆJØ8BÀQºY ] &¨*Ò4ÈAˆŸ
Ò( bˆ &˜˜˜Q˜q ™s˜e 1 Y K¨r°#°c°¸)ÀJÈsÐCSðTؘRx n J¨y¯}©}¸Ó/MÈcÐ.RðS"ØHKÏʤ4§9¡9£;¨s¯©Ñ#>ÀÒ"DÐ]_Ð`cÐ!dðeØŸJ™J˜
Ÿ)™)+ŠKðc1&ôfˆ&ШW«¨°hÄÇ Á à ÈKÑ@WÐY[Ñ?[Ð\_Ð>`Ð`cÐ
,‰,
€CØ €Jr+c
óútdtd«tdt«tdtdtdt
dt «t«}t|tt «}tDcic]2}|ttj||«j««Œ4}}td|«id td
td td t d
tt#|««dt|j$j'««t|j$j)««gdtdt dt*dt
dt-t.«dt0j3«Dcic]\}}|t-|«Œc}}dt4dtdtdt6dt9j:d«}tdz j=t?j@|d¬««tCtD«}tFjHjK«}|jMtFjN«}|jQtR«t9jTd«t9j8«} |jV€Vt9j8«| z
dkr<t9jTd «|jVt9j8«| z
dkrŒ<|jV td!«ytd"|jVd#d$«tY|dd%||«}
|
j[td&z «td't#|