Separate the responsibilities
Data ingestion should identify and preserve observations. Feature code should describe what is available at a decision time. Models produce forecasts. Portfolio logic converts forecasts into target exposure. Execution models convert orders into fills and account changes. Reports explain the resulting evidence.
Keeping these interfaces separate makes it possible to replace a model without changing accounting, or compare execution assumptions without rebuilding the dataset.
Record the experiment
experiment/
configuration.json
data-fingerprint.json
features.csv
forecasts.csv
trades.csv
equity.csv
report.md
Save the source commit, data checksum, time period, instrument universe, features, target, model settings, costs and software versions. Label simulated fixtures explicitly so installation checks cannot be mistaken for empirical market findings.
Test the failure modes
Useful research tests challenge the model's assumptions. Alter future rows and ensure earlier features stay unchanged. Reconstruct a flat-price round trip by hand. Introduce a duplicate timestamp and ensure it is rejected. Confirm that training labels stop before evaluation begins.
Read the existing systems in context
TMRW contains the earlier system architecture and prototype modules; WTech contains strategy and backtesting examples. These are source collections with different maturity levels. The new workbench gives readers a small consistent path through the same responsibilities.
Share an inspectable contribution
A useful code contribution includes an interface, units, timing assumptions, a minimal example, tests and limits. A research contribution includes a question, data provenance, a baseline and a reproducible result. Use the contribution guide to add either type to the Library.