Commit Graph
31 Commits
Author SHA1 Message Date
eezd 62d8c7eb65 Add Jin10 QR connection with cancellable login tasks
Store account credentials encrypted and bind QR tasks to administrator sessions. Report calendar access as awaiting validation after login.

Prevent late polls and status responses from overwriting cancelled or newer operations, and clean up QR tasks when settings unmount. Cover authentication, cancellation races, and stale frontend responses.
2026-10-30 22:42:26 +08:00
eezd 5a991e3d29 Clarify uncertainty and direction rules for news analysis
Development CI / check-and-build (push) Successful in 56s
GitHub Git mirror / mirror (push) Successful in 5s
Development CI / deploy-development (push) Successful in 2m28s
2026-10-30 19:31:08 +08:00
eezd 376d07250e Add provider model catalogs to news risk settings
Development CI / check-and-build (push) Successful in 1m30s
GitHub Git mirror / mirror (push) Successful in 6s
Development CI / deploy-development (push) Successful in 2m28s
2026-10-30 19:11:44 +08:00
eezd b54863f40a Clarify news risk evidence validation
Development CI / check-and-build (push) Successful in 55s
GitHub Git mirror / mirror (push) Successful in 5s
Development CI / deploy-development (push) Successful in 2m29s
2026-10-30 19:08:09 +08:00
eezd b801c83c60 Fix news risk window query parsing
Development CI / check-and-build (push) Successful in 55s
GitHub Git mirror / mirror (push) Successful in 6s
Development CI / deploy-development (push) Successful in 3m9s
2026-10-30 18:57:04 +08:00
eezd 4f43ca8b57 Add AI news risk analysis and dashboard
Analyze news revisions with independent model settings, evidence-backed risk ratings, event grouping, and rolling market outlooks. Add a default homepage, archival history, pending-result refresh, and isolated regression coverage.

Keep analysis disabled until explicitly enabled. Require a separately authorized schema migration before deployment and preserve compatibility with the previous six-service instance.
2026-10-30 18:35:49 +08:00
root b4f29d4966 Add Gitea CI and automatic dev deployment
Main CI / check-and-build (push) Successful in 1m18s
Development CI / check-and-build (push) Successful in 34s
GitHub Git mirror / mirror (push) Successful in 7s
Development CI / deploy-development (push) Successful in 25s
2026-10-29 21:30:28 +08:00
eezd 66e811b23b Fix European economic archive parsing
Handle German CPI corrections, year-end wording and monthly employment titles, and accept ONS labour-market titles without a colon.

Select EA21 rows when published and verify unemployment totals against the bulletin overview. Add real archive fixtures covering the backfill failures.
2026-10-27 16:19:18 +08:00
eezd 1b2076a41b Parse historical Eurostat GDP and unemployment wording
Match GDP table labels without case sensitivity and accept the observed seasonally-adjusted wording. Add real 2025 announcement excerpts and verify dates, previous values, and rejection of non-GDP tables.
2026-10-26 22:09:35 +08:00
eezd 2dedaf3127 Limit German archive pagination to filtered results
Exclude the independent latest-release list from archived links and date boundaries. Cover stopping before the requested year, continuing within range, and rejecting pages without a filtered result block.
2026-10-26 22:07:42 +08:00
eezd 9f5b3550fa Backfill Michigan calendar results from official archives
Fetch annual report indexes, skip stored PDFs, and stop the source on rate limits. Match report periods, stages, and publication dates to official schedules while preserving received results and keeping revised monthly series separate.
2026-10-26 17:20:19 +08:00
eezd da289686be Parse official Michigan survey archive reports
Extract original preliminary and final results with publication dates and validated table headers. Add annual report discovery and real report fixtures covering cross-month releases and PDF text layout differences.
2026-10-26 17:19:37 +08:00
eezd 0886e74e21 Preserve received calendar results when latest pages roll over
Keep previously captured BLS and Michigan releases valid when their rolling latest pages advance to a newer period or stage. Continue reporting missing historical releases explicitly and never substitute newer values.

Verify unchanged values, first-arrival timestamps, revisions, and cleared source errors with isolated worker tests. Run all 74 calendar and history tests against the staged snapshot.
2026-10-26 14:24:23 +08:00
eezd 641351a002 Cancel remaining entries before fetching break-even fees
After the first take-profit fills, cancel outstanding entry orders before calculating remaining-position protection. Missing fee records still fail explicitly and leave existing stops in place without allowing the old entry to remain open.

Cover complete and incomplete fees on Binance and Bybit, including cancellation before the recovery fetch and no duplicate cancellation. Verify the staged snapshot with 61 trading safety and plan tests.
2026-10-26 14:23:51 +08:00
eezd d1a6325ed7 Fix workspace detail races and provider default handling
Keep analysis and Skill detail responses bound to the selected request, reject stale publish confirmations, and clear failed position-history results with retry controls.

Reject removal of the current default provider with HTTP 409 and reflect that contract in the form. Track the OpenAPI page and API module by restricting the docs ignore rule to the repository root.

Validate the staged provider contract with four isolated tests. Reuse the matching candidate's frontend lint, type check, 26 test groups, and production build results.
2026-10-26 14:22:40 +08:00
eezd f67a8ca402 Align backend authentication and API response contracts
Replace cookie authentication with revocable Bearer sessions, optional one-use PNG challenges, bounded login limits, and short-lived market WebSocket tickets. Keep captcha disabled by default.

Standardize ordinary JSON responses while preserving HTTP statuses, raw OpenAPI, redirects, SSE, and WebSocket semantics. Revoke long connections with their owning session.

Expose official calendar data and collector status to the frontend and research tools, support bilingual news topics, and keep summaries and forward-only labels explicit. Verify the staged snapshot with all 305 backend tests.
2026-10-26 12:04:21 +08:00
eezd b9d7497a7d Protect remaining positions using actual entry costs
Calculate remaining-position break-even from actual entry fees and estimated closing fees, preserve confirmed tighter stops, and keep existing protection when fill fees are incomplete.

Build historical trade summaries from execution sizing when an acceptance fill has no setup. Clarify unverified price zones and avoid suggesting fabricated structure to satisfy validation.

Verify the staged snapshot with 57 trading safety and plan tests.
2026-10-26 12:03:28 +08:00
eezd e8ca4daa0e Add official US and European collection and calendar storage
Collect official RSS and Atom summaries, preserve historical captures, and poll macro releases with bounded cadence and Retry-After handling. Separate news collectors from the economic calendar worker.

Track statistical periods, publication stages, first observations, revisions, and current official series. Include explicit migration files and isolated archive, parsing, and import tests; no migration or import is executed by this commit.

Keep dependency declarations and lockfile together for PDF archives and the upcoming captcha integration. Verify the staged snapshot with 90 focused tests.
2026-10-26 12:03:00 +08:00
eezd 5fa1e37fd4 Preserve public summaries for unavailable historical paid articles
Validate Wallstreetcn business responses and retain list provenance for historical paid articles whose detail API returns code 50000. Keep other failures explicit and cover the boundary with eight isolated tests.
2026-10-26 12:01:29 +08:00
eezd 77b33e5e77 Refresh news metadata independently of content revisions 2026-10-20 18:51:39 +08:00
eezd ab6c875b1f Serialize chat resets with message generation 2026-10-20 18:50:05 +08:00
eezd 193af01913 Validate reevaluation conditions against their declared timeframe 2026-10-20 18:47:23 +08:00
eezd 285b3952d7 Support selectable demo exchanges and configurable analysis limits
Persist manual requests until exchange confirmation, preserve stop protection, and reconcile fills before settling plans. Tighten model stream, crawler, skill, research accounting, and frontend race handling, with regression coverage. Keep queued analyses pending until a fresh account snapshot is available.
2026-10-20 18:45:00 +08:00
eezd 23a9a5175e Record news signals forward for a no-trade edge test
The trader labels crypto news published after 2026-10-16 15:00 with
the configured model (category and BTC direction) and, four hours
later, backfills BTC/ETH 1m opens at publish, +5m, +1h and +4h from
the klines table. A drawer on the trading page shows the cumulative
returns of trading the labelled direction, after fees. Nothing is
traded; this only collects an out-of-sample record.
2026-10-16 14:47:06 +08:00
eezd 0397e30870 Run demo trading and allocate capital per symbol
Move running, running_changed_at and capital_usdt from the account to
each trading symbol; the migration copies the account capital to every
symbol and leaves them all stopped. Each symbol is sized against its
own capital with a 3x notional cap, and the capitals together must not
exceed account equity. Scheduling, dry-run decisions and the executor
follow the per-symbol flag. The global start/stop button is replaced by
start/stop and capital controls on each symbol's plan card.
2026-10-16 13:44:02 +08:00
eezd 010d89e0f5 Rebuild position history from Binance fills
Sync account fills into a new trading_fills table every 60s and
reconstruct closed positions from them, so positions opened outside
the program are included and external closes get an exit price.
Positions link to plans by order id. The history drawer gains symbol,
close-date, outcome and source filters, a summary bar and pagination.
2026-10-16 11:57:45 +08:00
eezd 665c12fc31 Keep demo stops at least 1 x ATR14(5m) from the limit price
When the limit price sat near the far edge of the zone, the stop beyond
the far edge was well inside normal 5m noise (plan #34: 0.11%). The stop
is now the farther of far edge +/- 0.5 x ATR and entry +/- 1 x ATR.
2026-10-15 17:33:06 +08:00
eezd 250b16b389 Place limit entries as soon as a demo plan is adopted (plan 3.2)
- The model gives a zone and a limit price inside it (below the mark for
  longs, above for shorts); the executor places the GTC limit order with
  the reduce-only stop right away instead of waiting for a 5m
  confirmation and entering at market, so entries pay maker fees
- Stop beyond the far edge of the zone by 0.5 x ATR14(5m), computed with
  the quantity at submission and rejected above 1%
- Unfilled limits are cancelled at expiry; a rejected entry cancels the
  plan instead of being retried every round
2026-10-15 17:13:55 +08:00
eezd 7efa2eb68b Switch demo trading to 5m short-term swing setups (plan 3.1)
- The model now submits a pending setup (direction, zone, confirm price,
  validity); the executor enters at market once a 5m close confirms a
  dip into support or a rejection from resistance, and cancels the setup
  when the zone breaks, the trigger is missed or the stop is too far
- Stop beyond the confirmation extreme by 0.5 x ATR14(5m), skipped above
  1%; fixed take-profit ladders from the fill price (long 60/30/10 at
  +0.5/0.75/1%, short 80/20 at -0.5/0.75%); 4h time stop
- While holding, the model may only keep or exit
- Drop the long-term angle from the program, API, tables and page
2026-10-15 13:09:19 +08:00
eezd 1fcf41952c Add demo trading executor and analysis scheduling (plan 3 C4)
- Executor reconciles each symbol to its desired orders: journaled ap{id}
  client ids, reduce-only quantity stop placed before entries, make-before-
  break stop moves, breakeven after TP1, orphan cancel, -2021 market close
- Plan lifecycle: proposed plans are adopted only if the position is
  unchanged; holding-mode plans may only tighten the stop
- Program rules: time stop, short-term invalidation close, long-term 4h
  review, reevaluate conditions, takeover of unmanaged positions
- Trigger and routine analysis scheduling with a 10 min gap, daily cap and
  bounded retries
- Plan endpoint and plan status, fills and countdowns on the trading page
2026-10-15 11:07:00 +08:00
eezd 78ca4422af Add demo trading analyst with plan validation and sizing
The analyst prompts the model with trading rules, published skills,
account sizing inputs and prefetched market data, exposes read-only
tools plus submit_trade_plan, and validates and sizes the submitted plan
in pure functions covered by pytest. Manual analyses run as dry runs
while trading is stopped; the trading page shows the latest plan and an
analysis detail drawer.
2026-10-15 10:40:29 +08:00