Running a Paper Strategy Reliably: Beyond a 24/7 Process
A running process is only one part of a reliable strategy experiment. It can be alive without fresh data, restart with incomplete state or outlive the agreed research window. Define the required observations, state and stop evidence before describing a service as continuously working.
Banger's public beta supports bounded paper research. The local run command is not an unlimited hosted supervisor, and a hosted session is subject to admission and infrastructure capacity. This guide compares runtime shapes without recommending a provider, quoting an unverified monthly price or enabling real orders.
Distinguish local and hosted commands
After Banger account setup, banger run uses an existing file for a supervised local paper process. banger deploy is the separate hosted path. Preserve the returned identity and actual state; an upload or created record is not proof of delivered market data.
# Existing strategy.py and completed Banger account setup required.
banger run strategy.py --paper # local supervised process
banger deploy strategy.py --paper # separate hosted, capacity-limited path
# These are alternatives, not a sequence that starts both copies.No command here was used to start a production session during review. Public live execution is unavailable. Omitting --paper from run still defaults to paper; it does not turn this into a real-money service.
A persistent host needs an explicit policy
A VM or long-running container can support a continuing process when its host and scheduler permit it. You still own the update, recovery, observation and stop procedures that are not supplied by the selected platform. A restart configuration cannot prove that the resumed data or account state is correct.
Do not assume every market trades around the clock. Trading closures, pauses, maintenance and instrument-specific clocks can interrupt the intended window. Preserve those events rather than measuring uptime solely by whether a process exists.
Short functions have a different contract
AWS documents a maximum Lambda invocation timeout of 900 seconds, or fifteen minutes. That is an invocation limit, not an application-wide prohibition on every scheduled workflow. A bounded collection task can fit a short function while a persistent subscription has different requirements.
Durable state needs an explicit store and recovery procedure. Do not promise that a container or external store removes every failure, or recommend a poll-and-order schedule as a ready-made trading system. Define the actual workload before choosing a runtime.
Recovery should preserve uncertainty
- Save the exact source/configuration and the previous resource identity.
- Check retained application history before starting another copy.
- Distinguish a lost observation from authoritative terminal state.
- Reconcile current data subscriptions and any model state before new decisions.
- Keep unknown request outcomes and pending cleanup explicit.
A retry or a client-generated identifier does not automatically guarantee exactly-once execution. The venue, operation and application must honor a defined idempotency contract. Test interruption paths with fixtures and preserve duplicates or unresolved outcomes instead of silently discarding them.
Bound monitoring and cost
Set a short supervised acceptance window first, with expected observations and a stop deadline. Provider cost drivers can include runtime, CPU/memory allocation, storage and data transfer; check the actual service and plan before extending the experiment. No fixed low-cost VPS estimate applies to every workload.
Keep logs useful and scoped. A heartbeat can show one path is alive without establishing fresh quotes or complete execution telemetry. Do not put tokens, trading keys or private account records in shared strategy code or public logs.
Verify the stop as well as the start
For a local process, use its documented stop path and inspect retained history. For a hosted Banger session, complete the product stop confirmation and check resource cleanup: a stopped row can precede completed cancellation. Risk admission, worker stopping and remaining holdings are different states.
The packaged forward-paper fill and fee assumptions also remain limitations after a successful deploy. A reliable research record shows which window, version, data and shutdown were actually observed. It does not turn bounded public paper sessions into a promised 24/7 live service.