Skip to content
DOCUMENTATION / Dependencies & limits
OPBT SDK · 07

Dependencies & limits

On this page
07

Dependencies & limits

Locked packages#

The sandbox includes this scientific-computing stack. A project may also declare public PyPI packages in requirements.in and resolve them to opr.lock.json before freezing:

opbtnumpypandaspolarsscipysklearnlightgbmxgbooststatsmodelsmatplotlib

Dependency resolution accepts ordinary package specifiers only, downloads binary wheels from public PyPI, records exact versions and SHA-256 hashes, and builds a read-only environment without importing wheel code. Source distributions, URLs, VCS and runtime pip are rejected. Backtests and Notebook Jobs remain offline.

requirements.in
scikit-learn>=1.8,<2
seaborn==0.13.2

Resource limits#

Validation dry run5 / 10 / 20 / 30 min (8 / 16 / 32 / 64 GiB)
Processes256
Networknone (--network=none)

strategy_memory_gb selects one complete machine profile shared by Backtest, Study, Paper and Live. STANDARD/VIP1 can use 8 GiB; VIP2 can use 8 or 16; VIP3 and ADMIN can cumulatively use 8, 16, 32 or 64. New requests default to 8. Existing legacy Paper/Live deployments without the field keep their 2 GiB / 1 CPU runtime fallback; a new Live derived from such a Paper defaults to 8. Profile selection does not change concurrency. MCP Agents must show the permitted choices and ask before submission.

CPU applies to every Strategy sandbox. For Backtest/Study, the profile also freezes the full-run wall clock, total result-output size and a cumulative Context response budget for each isolated pass (dry run and full run separately). Preflight uses the same profile for estimated memory, CPU seconds and output, and records the complete contract in strategy_machine_profile. Study aggregate CPU/output capacity is the per-sandbox profile multiplied by physical trial-fold attempts, still capped by the absolute platform envelope. Validation starts after prefetch and includes initialization: 5/10/20/30 minutes for 8/16/32/64 GiB, separate from the full-run allowance. Paper/Live callbacks keep their latency-oriented deadline instead of inheriting a multi-hour Backtest deadline. Per-call Context method limits stay unchanged.

Agents can call research.limits before creating a project or submitting work. It returns all machine profiles, your allowed choices, shared account submission limits and the selected machine's personal admission policy. profiles[].backtest_dry_run_wall_clock_seconds lists validation budgets; semantics.dry_run_wall_clock_seconds reports the selected Backtest/Study budget, or null for standalone Factor Evaluation. Artifact organization overrides, Study totals and remaining daily usage are resolved by preflight/admission. Standalone Factor Evaluation currently uses the 8 GiB profile.

strategy_memory_gbCPUFull-run wall clockResult outputCumulative Context rowsCumulative serialized responsesContext calls
8 GiB24 h2 GiB500,000,00032 GiB4,000,000
16 GiB48 h4 GiB2,000,000,000128 GiB16,000,000
32 GiB816 h8 GiB8,000,000,000512 GiB64,000,000
64 GiB1624 h16 GiB20,000,000,0001024 GiB128,000,000

These are cumulative work and transfer ceilings, not memory reservations or throughput guarantees. Repeated histories count again toward logical rows; response bytes reflect encoded successful Context responses and delta transport, not ClickHouse scan bytes. Successful backtest.result.stats.strategy_context_usage reports the existing counters. Per callback: at most 4,096 calls, 1M rows and 128 MiB of responses; each protocol frame is limited to 64 MiB.

Administrator research controls#

Administrators configure AI allowances and research-compute admission independently. These settings are limits, not reserved capacity; the selected model, role policy and platform safety limits may further reduce what is available.

AI MODEL QUOTAS

FieldValue / unitMeaning
scope / subject_keyPLATFORM / default
ROLE / MEMBER
ORGANIZATION / <id>
USER / <id>
Quota target: PLATFORM/default is global; ROLE is a per-user fallback for that role, while ORGANIZATION is a shared organization bucket and USER targets one numeric user ID. A USER policy replaces its ROLE fallback; effective limits then take the lowest applicable ceiling.
model_keyone built-in modelPolicies are model-specific. The key must identify an enabled model deployment.
daily_token_limittokens / UTC day; blank = unlimitedBuilt-in-model input + output allowance for this target, model, and UTC day. Leave blank for no daily ceiling; zero blocks the allowance. BYOK usage is excluded, and provider or platform hard limits still apply.
max_input_tokenstokens / requestPositive integer maximum input tokens per request for this target. Effective input is capped again by the selected model and provider connection.
max_output_tokenstokens / requestPositive integer maximum generated tokens per request for this target. Effective output is the lowest applicable quota, deployment, model, and provider limit.
max_concurrentactive requestsPositive integer maximum active AI requests for this target and model. It is combined with platform and provider concurrency limits.
requests_per_minuteRPMPositive integer maximum accepted requests in a UTC-aligned fixed minute bucket for this target and model, further bounded by platform and provider limits.

Default sponsored allowance: 10,000,000 tokens per user, model and UTC day. Kimi K3 also has a 50,000,000-token platform total; DeepSeek and GLM have no platform daily-token ceiling. Administrators may override a user or role policy.

WORKLOAD ADMISSION

JSON override for automatic, maximum and daily work units plus peak-memory, cache, output, trial and fold caps. Values are non-negative integers capped by system ceilings. Daily usage is counted per user, organization, UTC day and workload kind; approval can cross the automatic threshold, never the hard or daily limit.

A workload policy is scoped independently to BACKTEST, STUDY or FACTOR_EVALUATION. Use SYSTEM / default, ROLE / <role>, ORGANIZATION / <id>, or USER / <id>. Resolution proceeds from system to role, organization and user; a more specific record replaces the same JSON key from an earlier scope.

Policy fieldMEMBER baseSystem ceilingAdmission effect
automatic_work_units50,000,0002,000,000,000At or below this value, a workload may enter the queue without manual approval when every other limit also passes.
maximum_work_units250,000,00010,000,000,000Above automatic but at or below maximum requires an administrator approval bound to the exact request. Above maximum is denied.
daily_work_units500,000,00020,000,000,000UTC-day budget per user, organization and workload kind. Reserved plus settled actual units count against the remaining allowance.
maximum_peak_memory_mb6,144 MiB65,536 MiBAbsolute estimated peak-memory ceiling; the selected strategy_memory_gb profile remains the effective per-sandbox limit.
maximum_cpu_seconds14,400 s1,382,400 sMaximum estimated aggregate CPU time. The selected machine profile applies CPU cores × full-run wall clock as the effective ceiling.
maximum_cache_bytes50,000,000,000 B1,000,000,000,000 BMaximum estimated immutable dataset cache required by the workload.
maximum_output_bytes536,870,912 B17,179,869,184 BMaximum estimated result and evidence output. The selected 8/16/32/64 GiB machine applies 2/4/8/16 GiB as the effective ceiling.
maximum_trials51210,000Maximum parameter or scenario trials in one Study.
maximum_folds64512Maximum walk-forward folds in one Study.

Role defaults can be refined for an organization or user. Leaving a field out keeps the value inherited from the broader scope; review the effective limits in administrator settings before saving.

Admission policy · JSON
{
  "automatic_work_units": 50000000,
  "maximum_work_units": 250000000,
  "daily_work_units": 500000000
}

A work unit estimates research workload; it is not a duration, token count or currency amount. The estimate reflects the requested dates, instruments and data. Studies also include trials and folds, while Factor Evaluation accounts for its forward horizons. Review the estimate before queueing the workload.

ONEPORT RESEARCH · DOCUMENTATION