Files
wickra/testdata/golden/g_LiquidationFeatures.csv
T
kingchenc 4f708d410d test: golden-pin the four de-duplicated indicators across all bindings (#305)
* test: golden-pin the four de-duplicated indicators across all C-ABI bindings

Extend gen_golden to emit reference fixtures for AdOscillator (ADOSC),
IntradayIntensity, AwesomeOscillatorHistogram and AverageDrawdown, and replay
them through the Go / C# / Java / R golden harnesses so their corrected
definitions stay bit-identical to the Rust core in every binding. Go suite
verified locally (gcc 13 + cgo): all 9 golden tests pass; C#/Java/R use the
same fixtures and harness pattern (CI-verified). First step of extending the
golden coverage beyond the seven archetype representatives.

* test: golden-pin the scalar-output tranche (308 indicators) against Rust

Extend gen_golden with a generated emit_scalar that writes reference fixtures
for every single-f64-output indicator (scalar / candle / pairwise input) using
valid constructor params, and add a manifest-driven generic Python golden
replay that reconstructs each by its native name and checks it bit-for-bit
against the Rust output. 308 indicators now value-tied to the Rust core in
Python (pytest: 308/308). Takes golden coverage from the 7 archetype
representatives to 308+ of the catalogue.

22 scalar indicators with non-default constructor constraints are skipped by
gen_golden for now (logged), as are non-f64-output ones; multi-output, exotic
inputs and the per-indicator arg arities of the C-ABI/Node replays follow.
Generated + verified locally with the full toolchain.

* test: golden-pin the multi-output tranche (70 indicators) in Python

Add a generated emit_multi to gen_golden (per-indicator Output-field access,
one CSV column per field) and a manifest-driven generic Python replay that
checks every field of each multi-output indicator against the Rust reference.
70 multi-output indicators now value-tied to Rust in Python; combined with the
scalar tranche, 378 indicators are golden-pinned. 8 multi with non-default
param constraints and 5 with non-f64 Output fields (Option/Vec/i64) are
deferred. pytest green.

* test(golden): add 30 constraint-tuned indicators to scalar/multi golden suite

Emit golden fixtures for 22 scalar-output and 8 multi-output indicators
whose constructors need non-default parameters (Alma, Jma, Psar, T3, Mama,
DoubleBollinger, ZigZag, ...). All 408 fixtures replay bit-for-bit through
the Python binding.

* test(golden): cover 36 missed scalar/multi indicators

Add 26 single-output (LinearRegression family, HT cycle, Candle
volatility estimators, DrawdownDuration) and 10 multi-output
(BollingerBands, MACD/MACDEXT/MACDFIX, Camarilla, VWAP bands, ...)
indicators to the golden suite. 444 fixtures replay bit-for-bit
through the Python binding.

* test(golden): cover 50 exotic-input indicators

Add deterministic synthetic feeders for the DerivativesTick (17),
CrossSection (15), Trade (8), TradeQuote (3) and OrderBook (7)
families, derived from the shared OHLCV input series in both
gen_golden and a new Python replay harness (test_golden_exotic).
All 494 fixtures replay bit-for-bit through the Python binding.

* test(golden): complete 514-indicator golden coverage

Add the final tranches: 3 mixed multi-output indicators (Ichimoku,
WilliamsFractals, LeadLagCrossCorrelation), 6 histogram profiles
(time/volume seasonality + TPO/volume price profiles), 10 alt-chart
bar builders and the footprint. Every one of the 514 distinct
indicators now has a Rust-generated g_<Canonical>.csv fixture and a
generic Python replay (scalar/multi/exotic/profile/bars), all passing
bit-for-bit.

* test(golden): add generic Node replay for all 514 indicators

A manifest-driven node:test harness reconstructs every indicator by its
native class, feeds the same synthetic stream derived from the shared
golden input, and checks output bit-for-bit against the Rust reference
fixtures (scalar/multi/exotic/profile/bars). node_manifest.json is
generated from index.d.ts plus the Python-side manifests. 514/514 pass.

* test(golden): add generated Go replay for all 514 indicators

golden_all_test.go (generated by gen_golden_test.py) reconstructs every
Go indicator, feeds the shared synthetic stream and checks output
bit-for-bit against the Rust reference fixtures. A reflection-based
comparator flattens multi-output structs, profiles and bar slices so one
path covers all archetypes. This is the first C-ABI binding verified
across the full catalogue. 514/514 pass.

* test(golden): add generated C# replay for all 514 indicators

GoldenAllTests.g.cs (generated by gen_golden_test.py) reconstructs every
C# indicator, feeds the shared synthetic stream and checks output
bit-for-bit against the Rust reference fixtures via a reflection-based
flatten covering scalar/multi/profile/bar archetypes. 514/514 pass.

Also add the '#nullable enable' directive the compiler requires to the
generated Indicators.g.cs, clearing the four CS8669 warnings on the
nullable double[] profile return types.

* fix(java): marshal C ABI bool params correctly; add 514 golden replay

The Java FFM binding marshalled the cross-section state flags (newHigh,
newLow, aboveMa, onBuySignal) as JAVA_DOUBLE arrays, but the C ABI takes
them as const bool* (one byte each), so the native side read the low byte
of each 8-byte double and saw every flag as false. Add WickraNative.
boolSegment and use it across the 15 cross-section indicators. Also pass
the MacdExt MaType arguments as byte to match the uint8_t downcall
descriptor (was int, throwing WrongMethodTypeException).

Add GoldenAllTest.java (generated by gen_golden_test.py): a reflection
runner replaying all 514 indicators against the Rust reference fixtures.
The bugs above were found by this test; 514/514 now pass.

* fix(r): marshal C ABI bool flags correctly; add 514 golden replay

The R wrapper passed the cross-section state flags as (bool *)REAL(x),
reinterpreting the 8-byte doubles as 1-byte bools so the native side read
every flag as false. Add wk_bool_vec to convert each flag vector into a
real C bool buffer and use it for all 15 cross-section update wrappers.

Add test-golden-all.R + generated golden_specs.R: a reflective runner
replaying all 514 indicators against the Rust reference fixtures. The bug
above was found by this test; verified 514/514 pass locally.

* test(golden): add WASM replay for all 514 indicators

A manifest-driven node:test harness loads the nodejs-target wasm-pack
build, reconstructs every indicator by its JS class, feeds the shared
synthetic stream and checks output bit-for-bit against the Rust
reference fixtures. wasm_manifest.json is generated from the wasm .d.ts
plus the shared manifests; a recursive flattener covers scalar, multi
(Reflect objects), profile and bar shapes. 514/514 pass locally
(wasm-pack build --target nodejs, then node --test).

* test(golden): add C and C++ replay for all 514 indicators

golden_test.c (generated by gen_golden_test.py) drives every indicator
through the C ABI (wickra.h) and checks output bit-for-bit against the
Rust reference fixtures. golden_test.cpp #includes the same source so the
identical runner is compiled and run under both gcc (C) and g++ (C++) via
the CMake targets golden_test / golden_test_cpp — proving the extern "C"
header is consumable from each language. Both 514/514 (verified via ctest).

* test(golden): gofmt the generated Go golden replay

* test(golden): make the Node fixture reader CRLF-safe and pin fixtures to LF
2026-06-15 04:48:51 +02:00

7.4 KiB

1longshortnettotalimbalance
212-13-0.3333333333333333
31.32210884361884952.1996914055092276-0.87758256189037813.521800249128077-0.24918578562417015
41.492724864994232.0330271708623684-0.54030230586813843.5257520358565984-0.1532445561608729
51.43160468332443711.5023418849921342-0.070737201667697042.9339465683165713-0.024109914758360565
61.58364091162509621.1674940750779540.416146836547142132.75113498670305030.15126369246092533
71.9765352293917431.1753916138448090.8011436155469343.1519268432365520.25417582811797773
82.4257803828072471.43578788620679630.98999249660045053.8615682690140430.2563705799388135
92.42768299360297141.49122630631217130.93645668729083.91890929991514270.238958499833379
101.96927693979978361.31563331893616460.65364362086361893.2849102587359480.19898370712725183
111.21920274967295941.00840695024217550.210795799430783862.2276096999151350.09462869525070507
121.3284932993593941.6121554848226225-0.28366218546322842.9406487841820166-0.09646244971146158
131.49408411693849532.2027538912297615-0.70866977429126623.696838008168257-0.191696193537678
141.4272994540441462.387469740694513-0.96017028665036723.814769194738659-0.251698133657637
151.15954918117468252.1361368069027122-0.97658762572802973.2956859880773948-0.29632302023341184
161.18323956462596411.9371418189692662-0.7539022543433023.1203813835952303-0.24160580444005647
171.43984787998583391.786483197820857-0.34663531783502323.226331077806691-0.1074394752043461
181.63508889838428221.48958886457566560.145500033808616543.1246777629599480.04656481238909804
191.91108045880334031.30906855611851820.60201190268482213.22014901492185860.18695156649433217
201.92794178549524991.01681152361057060.91113026188467932.94475330910582040.30940801019469627
212.33195703729468561.3347848810983010.99717215619638473.66674191839298660.2719504613058267
222.33437520692388031.49530367784743130.8390715290764493.82967888477131170.21909709777835693
231.89841034356746261.42287341557147330.475536927995989343.3212837591389360.14317865093203458
241.15155917837284961.155984876360904-0.0044256979880543672.3075440547337536-0.0019179256746909683
251.1910357085919971.6743404673450044-0.48330475875300752.8653761759370013-0.1686706139360438
261.44378351679074512.2876374755232405-0.84385395873249543.7314209923139856-0.2261481511924474
271.48781300273407172.485611281912668-0.99779827917859623.9734242846467396-0.2511179797823444
281.302416411203142.20986319265333-0.90744678145019013.51227960385647-0.2583640495061432
291.02521134390340761.6201320072133-0.59492066330989252.6453433511167077-0.22489355230909897
301.34098181003406581.4777190282418928-0.136737218207827032.8187008382759586-0.04851072393034144
311.85130746970665431.49638320291795420.354924266788700043.34769067262460850.10602062779905451
322.1780157321268521.4183278192680290.75968791285882283.5963435513948810.21123897147261406
332.12197978848276141.14352632566387060.97845346281889083.2655061141466320.29963302122758023
342.15643732188409841.19877784156071240.9576594803233863.3552151634448110.28542416318247493
352.14999074141255161.44759368390984380.70239705750270793.59758442532239540.19524129928924822
361.76106256092353421.48589922287193590.27516333805159833.246961783795470.08474486500729668
371.29567876493256051.5151187281440173-0.219439963211456762.810797493076578-0.07807035681224662
381.03360403626274431.6939207445068263-0.6603167082440822.7275247807695706-0.242093752144673
391.34708233412611382.28660722787437-0.93952489374825633.633689562000484-0.2585594827839427
401.49732238693891872.4860270051255924-0.98870461818667373.983349392064511-0.24820936374708588
411.4136639502976892.2094789201116356-0.79581496981394653.6231428704093247-0.21964769214967206
421.13545289415392861.543534955967317-0.408082061813388462.6789878501212456-0.15232695504569738
431.28602734189881571.20646377462027490.079563567278540862.49249111651909060.031921304253094404
441.99900656432936331.45127730410509060.54772926022427273.4502838684344540.15874904242960208
452.36563979360822431.48384806606689780.88179172754132653.8494878596751220.229067283671274
462.28881834861749671.28885752222286950.99996082639462713.5776758708403660.2795001175329348
471.9152918679394021.04198722784587970.87330464009352232.95727909578528170.2953068046022972
481.88591774892356061.35308472859017570.53283302033338493.23900247751373630.16450528334957878
491.56002625837183471.49812096437742070.0619052939944140233.05814722274925540.020242744866534435
501.40888312726320921.8330621346001976-0.424179007336988433.241945261863407-0.13084089121639847
511.12734116642201341.9337506603342547-0.80640949391224133.061091826756268-0.2634385178724825
521.21409133474807622.20529414661155-0.99120281186347373.419385481359626-0.28987746987489366
531.454833335916762.388148447980683-0.93331511206392293.842981783897443-0.2428622264031086
541.48166011223686672.1285794345655233-0.64691932232865673.61023954680239-0.17919013792357263
551.28195461162513881.4840897320123219-0.202135120387183062.7660443436374607-0.07307732461055456
561.34249735723008711.05035854849624850.29213880873383862.39285590572633570.12208792348704414
572.0738742651654861.35898729638581980.71488696877966623.4328615615513060.20824812068932066
582.4613845757674681.49877870945390160.96260586631356663.96016328522136970.24307226671835522
592.378631977554151.40398670183348880.97464527572066123.7826186793876390.2576641629334006
601.8672509655634571.11919343587445040.74805752968900662.98644440143790750.25048433157799066
611.55997757639620721.22165836542515650.338319210971050672.78163594182136360.1216259848690068
621.4582607739578181.6125122238453997-0.154251449887581773.0707729978032177-0.050232123962901463
631.47933597997599972.0883919560823614-0.60905597610636163.567727936058361-0.17071256189429312
641.27497198478016572.1897143425847077-0.91474235780454193.4646863273648734-0.26401880902744373
651.05871563141354842.055183538970681-0.99646790755713253.1138991703842294-0.32000647838387675
661.36478836869642352.1990117292029367-0.83422336050651323.5638000978993603-0.2340825348195698
671.49929543620589811.967027276452967-0.467731840247068933.466322712658865-0.13493603424139705
681.41225280558435881.39897605836131330.0132767472230455042.8112288639456720.004722755729112378
691.6020467300267571.111012006096530.491034723930226852.7130587361232870.1809893451226458
702.07773300203049871.22916272724589250.84857027478460623.3068957292763910.2566062991560634
712.45990487664690251.46155864919816740.99834622744873513.921463525845070.25458511111195226
722.3805685314712551.47687632637973820.90369220509151663.8574448578509930.23427222899952724
731.85569442942713181.26791161586675120.58778281356038063.1236060452938830.18817443846542414
741.1950198034502081.06705611382281520.12796368962739282.2620759172730230.05656914016469241
751.37048630540084561.7336717138169035-0.363185408416057953.104158019217749-0.11699965213355376
761.49967099854066532.2650850504860216-0.76541405194535633.764756049026687-0.20331039833065437
771.39385261349207212.3740952543021763-0.98024264081010413.7679478677942484-0.2601529201580851
781.10279919020129572.057872834248599-0.95507364404730313.1606720244498945-0.3021742327768193
791.23660229852276871.9326716083866842-0.69606930986391553.169273906909453-0.21963053062292553
801.46472602923870451.7313689615986334-0.266642932359928863.196094990837338-0.08342772449640856
811.70234878134226621.47428184685915650.228066934483109663.17663062820142270.07179523248890883