Development
Layout
MovingAverage/— C# worker (consumes the strategy devkit via NuGet).MovingAveragePython/— Python worker.@common/scripts/— shared build/publish tooling.docs/— this MkDocs site.
The strategy devkit itself (Virtufin.Strategy.DevKit + .Events +
.Indicators) lives in the
virtufin-strategy-devkit
repo.
Build & test
dotnet test Virtufin.Strategies.slnx
python3 -m pytest MovingAveragePython/tests
Publishing
CI-driven, path-filtered per package:
movingaverage-nuget.yaml—Virtufin.Worker.MovingAverage(worker nupkg viaworker-nuget-common.yaml).movingaveragepython-package.yaml—virtufin-worker-movingaveragepython(wheel via twine).python-test.yaml— Python worker tests.docs.yaml/docs-lint.yaml— site deploy + lint.
Publish ordering: MovingAverage depends on the devkit packages, which
are published from virtufin-strategy-devkit. Publish the devkit first,
then bump/publish the worker.
Versioning
Each worker has its own versions.env (LIBRARY_VERSION, used
verbatim as the published version) + CHANGELOG.md. Bump both in the
same commit as the change. The Virtufin.Worker.DevKit and
Virtufin.Strategy.DevKit pins are updated when those packages publish
new versions.
Conventions
Mirror virtufin-workers: worker directories with versions.env +
config/config.json + src + scripts + tests; PackageWorker
MSBuild target for C# worker nupkgs; stdlib-only Python with a
module-level Process. Config is extension-only; indicator semantics
key off eventtime, never wall time.