fix(backtests): the pipeline LLM preflight is 5x optimistic and lets uncompletable runs through
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 48/100
Línea de trabajo
Start by reading _enforce_pipeline_llm_window and the credit_llm_reservations timestamps mentioned in the issue to understand how the current estimate compares with measured per-model wall time. Then inspect portfolio_manager.py for retries and _backtest_subprocess_timeout for the hosted-runtime budget approach. Done means the preflight accounts for measured latency and provider attempts, and does not approve runs that cannot fit the budget.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Prod run agent_20260922_202119_fc7bd724 (DJIA 30, 2026-09-07→09-18, deepseek/deepseek-v4-pro, pipeline + platform_credits) was killed at the 3600s limit having completed 47 of the 70 decision bars it needed. No results; the user was billed 81,130 micro-credits for 38 model calls.
_enforce_pipeline_llm_window approved it with what looked like a 2.9x margin:
| estimated calls | 70 (10 trading days x 7 bars x 1 pipeline step) |
| allowed | 200 — (3600 - 600) // PIPELINE_SECONDS_PER_LLM_CALL |
| implied wall clock @ 15s/call | 1050s |
| measured wall clock | 76.7 s/call (decision-bar cycle: median 63.0s, mean 75.6s, n=46) |
| calls that fit in 3600s at the measured rate | 47 |
The estimate is 5.1x optimistic, so the headroom is fictional — a run needing ~5370s passed a 3600s budget check.
Two separate errors in the model:
- The 15s constant was never fitted. It is documented as a calibrated estimate where under-estimating is the safe direction, which is correct for a refusal — but nothing has ever measured it, and it is plainly wrong for a reasoning model.
- It counts calls, not attempts. Every call on this run made 2 provider attempts (see the OpenRouter issue filed alongside this), and
portfolio_manager.pyretries an empty reply up to 4x on top of that.
credit_llm_reservations timestamps give per-model wall clock directly, so this is measurable from data already in prod rather than by guessing a bigger constant.
- Re-fit the default from prod data, or make it per-model.
- Account for attempts, not just calls.
- Reconsider sizing the pipeline budget from the window, as
_backtest_subprocess_timeoutalready does for the hosted runtime. #474 item 1 chose fixed-budget + preflight; the preflight is the half that turned out mis-calibrated.
Related: #474 (closed).
Filed from one diagnosis of the same prod run: #522 (why it timed out) · #523 (the dead primary provider) · #524 (why nothing is visible afterwards) · #525 (the refund log flood).
- Lenguaje dominante
- Python
- Estrellas
- 767
- Forks
- 156
- Merge medio
- 22 h 57 min
- PR fusionados (30 d)
- 84
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin plantilla de pull request
- Sin guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de Open-Finance-Lab/AgenticTrading
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 80/100
Open-Finance-Lab/AgenticTrading#663 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Open-Finance-Lab/AgenticTrading#661 ·
Los mantenedores suelen responder en 1 día
-
fix(llm): a non-ASCII execution handoff raises UnicodeEncodeError instead of ExecutionHandoffErrorPosiblemente ocupada @subidhkhanal la tomó hace 1 día. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
Open-Finance-Lab/AgenticTrading#659 ·
Los mantenedores suelen responder en 1 día
-
fix(backtests): an LLM action with trailing whitespace ("buy ") is silently droppedPosiblemente ocupada @subidhkhanal la tomó hace 1 día. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 83/100
Open-Finance-Lab/AgenticTrading#658 ·
Los mantenedores suelen responder en 1 día
-
fix(llm): Gemini adapter drops thinking tokens from the output countPosiblemente ocupada @subidhkhanal la tomó hace 1 día. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Open-Finance-Lab/AgenticTrading#657 ·
Los mantenedores suelen responder en 1 día
Todos los issues de Open-Finance-Lab/AgenticTrading
Issues similares
-
Project submission:Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100
slavakurilyak/awesome-ai-agents#845 ·
Los mantenedores suelen responder en 1 día
-
tests: pin that the atomic writers in utils/paths.py stage the temporary file in the target's directoryPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertodifficulty:2 enhancement good first issue
Dificultad 1/5 1-3 horas Aptitud para principiantes 92/100
MakazhanAlpamys/Soup#2178 ·
Los mantenedores suelen responder en 1 día
-
[BUG] dcg.waggr permutation p-values are folded twice, so near-zero scores get the smallest p-valuesAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
scverse/rapids-singlecell#854 ·
Los mantenedores suelen responder en 1 día
-
Slang input: int8_t4_packed and uint8_t4_packed are copied into CrossGLPosiblemente ocupada @ninglinLiu la tomó hoy. Abiertoarea:frontend backend:slang bug direction:input
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Los mantenedores suelen responder en 1 día
-
random_elements(unique=True) on an OrderedDict: ZeroDivisionError once only zero weights remain, AssertionError with use_weighting=FalsePosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
Los mantenedores suelen responder en 13 días