What gets published
SignalQuarry can publish a versioned PublicPerformanceSnapshotV1 for one
dedicated paper deployment. The allowlist includes supported balances, sampled
equity history, explicit P&L definitions, sanitized positions and fills, and
freshness status. It excludes account IDs, order IDs, API keys, raw broker
responses, private filesystem paths, and arbitrary metadata. Review the exact
snapshot before enabling a public page; a public repository makes the configured
balances and activity visible to everyone.
Paper and live feeds are separate contracts and page labels. Repo A publishes paper data only. Repo B owns its own T08 live dashboard and its publication configuration; a Repo A fork does not receive live-account functionality.
Historical study publication rights
The owner has approved publication of aggregate historical strategy analysis
for four studies in site/publication-rights.json. This scope covers the
published result summaries and derived research charts, but not provider price
bars, input manifests, or complete run bundles. New studies require a recorded
approval and evidence reference before their results appear publicly.
CI and Pages reject unapproved study and result routes, study downloads, and input manifests marked nonredistributable. Keep raw provider data and private research evidence outside the public site.
GitHub Pages
- Fork SignalQuarry. Main-branch changes skip automatic publication until you
set
ENABLE_PUBLIC_PERFORMANCE_REFRESH=true; use the explicitdemomode to bootstrap an empty site without an account feed. - Enable GitHub Pages for the fork and confirm the generated site is built under
the repository path, for example
/your-fork/. - Configure your GET-only exporter, durable snapshot storage, and restricted SSH retrieval command. Keep broker credentials on the exporter host.
- Add the repository Actions secrets documented in
.github/workflows/pages.yml:PUBLIC_FEED_SSH_HOST,PUBLIC_FEED_SSH_USER,PUBLIC_FEED_SSH_KEY, andPUBLIC_FEED_KNOWN_HOSTS. Use a dedicated key restricted to the single validated snapshot command; do not reuse a deployment or trading key. - Run the workflow in
site-onlymode first, thenrefreshafter the host exporter and capture-slot store are configured. Retrieval or schema failure must leave the last published site intact. - Set
ENABLE_PUBLIC_PERFORMANCE_REFRESH=trueonly after the first fresh publication succeeds. It enables automatic main-branch site-only rebuilds; Cloudflare continues to dispatch the scheduled refresh workflow separately.
The static site build itself does not contact Alpaca. Demo builds are explicitly labeled and contain no owner account settings.
Optional Cloudflare scheduler
Cloudflare is optional. The Worker in
cloudflare/signalquarry-paper-refresh/ dispatches only the repository’s
serialized Pages workflow; it does not call Alpaca. Give the Worker a
repository-scoped GitHub token with Actions write permission, then configure its
own Durable Object and explicitly start the scheduler. Do not reuse another
repository’s Worker, token, or namespace. A fork must configure its own target
and credentials.
Metric limits
Broker-reported values retain broker attribution. Net dollar P&L subtracts
net external contributions from the equity change when all inputs exist. Daily
Modified Dietz returns are labeled as such and are not described as exact
time-weighted returns. Missing inputs or invalid denominators remain
unavailable; they are never replaced with zero.
Strategy showcase updates
New strategy descriptions and backtests use the repository’s content records. See Add a strategy or backtest on the showcase for the templates, source-hash checks, local preview, and publication workflow.