319 Commits
Author SHA1 Message Date
Ashutosh Singh fa97134b8f Merge branch 'HKUDS:main' into feat/zerodha-kite-connect 2026-09-01 20:40:18 +05:30
Haozhe Wu 333a3fc5f9 docs(readme): add 2026-09-01 news across six languages 2026-09-01 22:38:07 +08:00
Ashutosh Singh 74d6a2dbd3 Merge branch 'HKUDS:main' into feat/zerodha-kite-connect 2026-09-01 01:29:56 +05:30
Ashutosh Singh 3d7b9d2c6f fix(docs): register Zerodha in broker count pin, badge, and all six READMEs 2026-09-01 01:24:25 +05:30
Haozhe Wu 1ee7df16af docs(readme): add 2026-08-31 news across six languages
Yahoo dividend adjustment, requested-vs-executed rebalance counts, the
calendar rebalance mask and the survivorship disclosure, plus the batch
of fixes. Notes that sina and longbridge still serve unadjusted prices
and points at #1301 rather than claiming the chain now speaks one
caliber. 2026-08-28 rolls into the folded section.
2026-08-31 23:25:33 +08:00
Haozhe Wu 899d3c7536 docs(readme): add UK equities news across six languages 2026-08-31 01:55:24 +08:00
Haozhe Wu e90b6c6cd9 docs(readme): add 2026-08-29 news entry across all six READMEs 2026-08-29 12:59:35 +08:00
Haozhe Wu e69626ad7e docs(readme): add 2026-08-28 news entry across all six READMEs 2026-08-28 23:48:27 +08:00
Haozhe Wu d62244c287 fix(quantlib): correct the Heston skew sign; reconcile the badge after five merges
heston_price used e^{-iuk} in the Lewis integrand where the formula needs
e^{+iuk}. The consequence is not a small numerical error: it inverts the
volatility skew. A leverage-effect rho of -0.6 priced 120-strike calls at
4.668 where Monte Carlo says 4.246, and 90-strike calls at 13.719 where MC
says 14.204 — rich where it should be cheap, in both directions. The
corrected sign lands inside 2 standard errors of MC in all four cases.

Nothing in the incoming suite could see it. With sigma_v -> 0 the centered
characteristic function is real, so the Black-Scholes limit is bit-identical
under either sign; the Moodley benchmark and the put-call parity check are
both at the money, where k is 0 and the factor is 1. Two tests now pin the
skew direction, and a comment marks the sign as load-bearing.

Badge reconciliation: five PRs each bumped the function count from the same
286 base (289/290/294/290/287) and none touched the module count, which is
how four new modules landed while the badge still said nineteen. Measured:
306 functions across 23 modules, set across all six READMEs, with the four
new modules added to the module table. The badge check only ever asserted
the function half, so the module half is now guarded too.
2026-08-28 22:22:49 +08:00
Haozhe Wu c21185b6b3 Merge commit 'refs/tmp/pr1195' into quantlib-batch 2026-08-28 22:15:18 +08:00
Haozhe Wu 80ffdda44c docs(readme): add 2026-08-27 news entry across all six READMEs 2026-08-27 14:54:30 +08:00
Haozhe Wu 002373ef32 docs(readme): add 2026-08-26 news entry across all six READMEs 2026-08-26 21:26:41 +08:00
Haozhe Wu 5cd08ee1bd docs(readme): add 2026-08-25 news entry across all six READMEs
Two live-gate fail-opens (#1209 signed Alpaca shorts, #1212 error
envelopes on rejected OKX/Futu reads), purged-CV segment fix (#1204),
credit non-finite guards (#1215), swarm retry backoff (#1210) and the
swarm retry CLI (#1194). Third visible entry (08-22) folds into
earlier news.
2026-08-25 16:52:26 +08:00
santhreal b415de91b6 feat(quantlib): add Heston (1993) stochastic volatility option pricing
Implement semi-analytical European option pricing under the Heston stochastic
volatility model via numerical quadrature of the continuous characteristic
function (Lewis 2001 / Albrecher et al. 2007 formulation).

Signed-off-by: santhreal <64453045+santhreal@users.noreply.github.com>
2026-08-24 03:31:41 -07:00
Haozhe Wu 02ea205a8c docs(readme): 2026-08-24 news entry + mirror #1187/#1188 docs across the six READMEs
- 08-24 news entry (IBKR official MCP portfolio source, scheduled_research
  confirmation tool, valuation/market-data/feishu/VaR-doc fixes) in all six
  READMEs; 08-21 folds into earlier-news to keep three visible
- mirror #1188's feishu login persistence sentence into the five translations
- mirror #1187's new REST rows and a condensed scheduled_research paragraph
  into the five translations
- README.md IM confirmation sentence now names both accepted token spellings
2026-08-24 15:59:37 +08:00
AirHua-byte 33e47677a5 docs: update agent tool count
Signed-off-by: AirHua-byte <78540954+AirHua-byte@users.noreply.github.com>
2026-08-23 21:29:10 +08:00
Haozhe Wu 8f42a9a76f Merge branch 'integration' into integration-1180 2026-08-23 01:27:11 +08:00
Haozhe Wu bcc93af997 docs(readme): mirror #1179's upload wording in the five translated READMEs 2026-08-23 01:27:03 +08:00
Haozhe Wu ae57c06949 docs(readme): add the #1180 restart-recovery line to the 2026-08-23 news entry (six READMEs) 2026-08-23 01:25:56 +08:00
Haozhe Wu 7ca186c243 docs(readme): 2026-08-23 news — IBKR MCP seed URL, shared HTTP client lifecycle, multi-file uploads
Six READMEs; 08-20 (v0.1.14) folds into the earlier-news block so three
entries stay visible.
2026-08-23 01:25:14 +08:00
Haozhe Wu 32d3ee431f docs(readme): point the IBKR MCP seed at /mcp-public in the five translated READMEs too
#1178 repointed README.md, SKILL.md and the seed; the zh/ja/ko/ar/es
READMEs still showed the unpublished /mcp URL. IBKR's own AI-integration
page documents https://api.ibkr.com/v1/api/mcp-public as the endpoint to
enter in an MCP client.
2026-08-23 01:20:05 +08:00
Haozhe Wu e86eb283b4 docs(readme): lead today's news with the Portfolio page, the six fixes follow
The 2026-08-22 bullet was written this morning for the six-PR batch and
the Portfolio landing was appended to it as one sentence. The page is the
day's headline; rewrite the bullet in all six READMEs so it leads, with
the six fixes under Fixed.
2026-08-22 14:21:10 +08:00
Haozhe Wu bbfb776bd1 docs(readme): compact Portfolio section in all six READMEs, measured tool count, news line
Replaces the 127-line English / 48-line Chinese walkthrough from #1072
with a ~25-line section present in every README (en/zh/ja/ko/es/ar):
what the Portfolio page aggregates, which profiles are eligible, that a
failed source is excluded rather than carried forward, where snapshots
and settings live, the local read-only connector plugins and the
[keyring] extra, the CLI, and that nothing on this path can place an
order. Restores the IBKR MCP example URL to /v1/api/mcp. The repository
tree's 'auto-discovered agent tools' line said 97 while the keyless
registry measured 105 before this PR and 106 after it; it now reads 106
in all six files and test_readme_counts pins it to the measured count
with the credential gates closed, so it cannot drift silently again.
Adds the Portfolio sentence and @goatyyc to today's news bullet.
2026-08-22 14:03:10 +08:00
Haozhe Wu e844047dbf docs(readme): news entry for the 2026-08-22 batch across all six READMEs
Six PRs: Alpha Zoo returns keep NaN across gaps, per-connection MCP goal
sessions, memory GC/compression index cleanup, swarm cancellation reaching
the in-flight worker, MCP research-report date window, and options-chain
expiration validation. The 08-19 entry moves into Earlier news so three
stay visible.
2026-08-22 12:32:54 +08:00
Haozhe Wu 1907e47d31 docs(readme): news entry for the 2026-08-21 batch across all six READMEs
Fourteen PRs: the bash tree-kill and stall watchdog, compaction keeping the
run's verification records, Tencent pagination, swarm replay, Market Watch
verdicts, and quantlib reaching 286 functions. The 08-18 entry moves into
Earlier news so three stay visible.
2026-08-21 17:18:02 +08:00
Haozhe Wu b5a835bceb docs(readme): quantlib count 265 -> 286 across all six READMEs
Each of the nine PRs in this batch bumped the same badge from the same base,
so the individually correct numbers were all wrong once stacked. 286 is what
_quantlib_export_count() reports on the merged tree; the module count is
unchanged because every PR extends an existing module.
2026-08-21 15:53:36 +08:00
santhreal 80487e0178 docs: update quantlib exported function count badge to 267
Signed-off-by: santhreal <64453045+santhreal@users.noreply.github.com>
2026-08-20 13:57:13 -07:00
Haozhe Wu 7329cb096a release: 0.1.14 — a backtest you can read, and Intel Macs that can install
Rolls up 272 commits / 74 merged pull requests since 0.1.13.

Run Detail grows four analysis tabs (factor research, positions structure,
tearsheet, research dashboard) and the Web UI gains an Options Lab, all
reading artifacts a run already writes. `smartmoneyconcepts` moves to an
opt-in `[smc]` extra so an Intel-Mac install stops becoming a CMake source
build for llvmlite. Strategy Discovery lands both phases; scheduled research
delivers itself through a leased outbox and persists each monitor's verdict.

MCP grows to 74 tools. Six READMEs carry the release news and the 30
contributors of this cycle.

Two published version strings had no guard and were still on 0.1.13 after
every other declaration moved: `agent/SKILL.md`, the manifest ClawHub serves
and no build step touches because it is not in the wheel, and the Docker
image's `org.opencontainers.image.version` label. The whole suite stayed
green. `test_release_version_consistency.py` now enumerates all eleven
declaration sites against pyproject rather than spot-checking remembered
ones, and globs the locale directory so a new language is covered the day it
lands. The desktop shell keeps its own 0.3.0 track on purpose — it has no
updater, and 0.3.1 is issue #1016's validation target, not a shipped build.
2026-08-20 07:49:22 +08:00
shadowinlife ae68820a71 feat(agent): add evidence population, decay monitoring and stale refusal to strategy discovery
Implements #969 Phase 2 over the Phase 1 facade (#978). The evidence cache
is no longer empty-by-construction and no longer silent about age:

- refresh_strategy_evidence: agent tool (primary, scheduler-reachable) +
  MCP wrapper + 'vibe-trading strategy-evidence refresh --manifest' CLI.
  Manifest-driven only — runs carry no attribution, so explicit
  {strategy_id, run_dir, position_size} specs are the honest path; entries
  outside the runtime runs root / allowed run roots are skipped with a
  stable path-outside-allowed-roots reason. Writes only the disposable
  facade-owned cache.
- backtest-diagnose hookup: the skill's Hard-Gate Checklist becomes the
  evidence ingestion gate — state.json success, metrics.csv present,
  trade_count > 0, equity present and NaN-free, each with a stable
  hard-gate:* skip token. NaN-equity runs are refused entirely instead of
  yielding partial-curve evidence (fixes the Phase-1 silent-skip latent).
- atomic rebuild: compute all rows first, then one transaction swaps the
  store — a failed rebuild can no longer leave the cache empty.
- decay status surfaced in query_strategies / get_strategy_evidence:
  freshness computed at read time from the evidence-window age
  (fresh/aging/stale, 90/180-day thresholds tied to the quarterly
  re-backtest cadence; last_verified reported but never gating). Stale rows
  fail closed out of default recommendations (include_stale opt-out);
  sdm:* rows mirror the SDM lifecycle (decayed/disabled never recommended,
  sdm-lifecycle: prefix); unparseable windows fail closed to stale.
  Decay is never persisted — a stored decay field would go stale by
  definition.
- docs + count sync: strategy-discovery SKILL.md gains the Decay &
  Freshness Contract and Populating & Refreshing Evidence sections;
  backtest-diagnose SKILL.md documents the gate hookup; phantom-guard test
  now asserts every tool named in the SKILL.md recipe is registered;
  MCP tools 73 -> 74 across five READMEs + agent/SKILL.md (65 -> 66
  decorators).
2026-08-19 15:04:15 +08:00
shadowinlife bbfd82c87d feat(agent): add evidence-gated strategy discovery facade 2026-08-19 14:57:06 +08:00
Haozhe Wu 87b28dc2af docs: add the 2026-08-19 news entry to all six READMEs 2026-08-19 14:15:56 +08:00
Haozhe Wu 405f7dacc4 Merge branch 'main' into push-1033 2026-08-18 18:29:42 +08:00
Haozhe Wu c6e8aeb6df docs: rewrite the 2026-08-18 news to cover the whole day 2026-08-18 17:51:22 +08:00
Haozhe Wu 80fcb753fb docs: add 2026-08-18 project news 2026-08-18 15:13:58 +08:00
Haozhe Wu 4ad3b6b077 docs: add 2026-08-17 project news
Three fixes landed today, led by the one that touches a user's own state:
the project's test suite was appending fabricated order_rejected records to
the real live audit ledger -- on every platform, not only Windows -- because
conftest.py had no config-root sandbox and modules bake the home-derived
path at import time. Also covers the xirr underflow past ~51 years and the
backtest archive merging two runs' artifacts into one report.
2026-08-17 17:19:57 +08:00
Haozhe Wu 0713336c66 docs: add 2026-08-16 project news
Six community fixes landed today, led by two user-visible bugs: Anthropic runs dying on recovery paths with the multiple-system-messages error, and search_symbol reporting empty results as healthy while every downstream data tool hard-refused with identity_required. Also covers reasoning-effort forwarding on the Anthropic branch, the Tencent loader SSL fix, the gross_profit fallback revival, and the swarm truncation unification.

Signed-off-by: Haozhe Wu <haozhe_wu@connect.hku.hk>
2026-08-17 01:17:41 +08:00
Haozhe Wu 9806936f76 docs: add 2026-08-15 project news
Signed-off-by: Haozhe Wu <haozhe_wu@connect.hku.hk>
2026-08-15 14:49:08 +08:00
Pham Van Ngoan e0c45d118e feat(backtest): add a Vietnam (HOSE) equity engine and route .VN symbols
Adds the execution rule book that lets the `.VN` data path from the previous
commit produce a meaningful backtest, and classifies `.VN` symbols now that
there is an engine to receive them. Vietnam gets a dedicated engine rather
than a GlobalEquity profile, following India and Korea: none of its rules —
the settlement hold, the board lot, the band arithmetic — are expressible as
parameters on the global model.

Settlement is the T+1.5 cycle in force since August 2022, under which shares
are credited around midday on T+2 and can be sold that afternoon. On daily
bars that is a two-session hold, counted from the position's entry bar rather
than from calendar dates, because a Friday buy settles on Tuesday and calendar
arithmetic would release it a session early. The lag is configurable so the
exchange's announced move to T+1 can be modelled without a code change.

Prices are quoted in whole VND on a three-tier tick grid, so the ±7% band is
computed the way the exchange publishes it — the ceiling truncated down onto
the grid and the floor rounded up — leaving both bounds tradeable rather than
one tick outside the band. Order sizes floor to whole 100-share lots: odd lots
trade in a separate session that a daily bar cannot represent, so a sub-lot
order is not executable at the continuous-session price. Shorting is refused
at construction, as the cash market provides no mechanism for it.

The sell-side cost carries the 0.1% transfer tax on proceeds, which the 2026
personal-income-tax overhaul left in place for listed securities; the 20%
gain-based rate effective 2026-07-01 applies to unlisted capital transfers.
Rates are revised periodically, so the `vn_*` keys are configurable and worth
checking against the current schedule before trusting absolute cost figures.

Tests cover the tick grid and band arithmetic against a published worked
example, the settlement hold at each elapsed-session count, lot flooring,
band-locked bars, the cost stack, and tick-quantized slippage.

Signed-off-by: Pham Van Ngoan <ngoanpham1196@gmail.com>
2026-08-15 10:07:08 +07:00
Haozhe Wu 5e39e42908 docs: add the 2026-08-14 news entry across all six READMEs
Leads with the reasoning-effort fix rather than the two new pages, because it is
the one users could already have hit: the setting existed, was documented, and
did nothing on almost every provider.

Covers the seven merges of the day - reasoning effort across both transports
with a verified allowlist, bounded grounding recovery, the Options Lab and
tearsheet pages, tickerall as the 25th market-data source, and Novita AI plus
GitHub Copilot as built-in providers. The vite 8 bump is a dev dependency and is
left out.
2026-08-14 21:22:25 +08:00
Haozhe Wu a8de9ce307 Merge origin/main into the Copilot provider branch
One conflict: main had added Novita AI to the README provider line while this
branch added GitHub Copilot. Kept both.

Also completes two lists this branch left partly filled, which is what CI was
failing on:

- `es.json` was missing `providerUsesManagedAuth` and `authentication`. This
  branch was opened before the Spanish locale existed (#1087, 2026-08-13) and
  added the pair to the other five, so the type check compared es to en and
  found two keys short — `error TS2322 ... is missing the following properties`.
- The five non-English READMEs still listed the providers without GitHub
  Copilot; only the English one was updated.
2026-08-14 20:24:16 +08:00
Haozhe Wu e334846b30 Merge origin/main into the Novita provider branch
Two conflicts, both resolved toward main:

- README provider line: main had added ModelScope while this branch added
  Novita AI. Kept both.
- `test_cli_init.py`: this branch bumped the hardcoded menu numbers 18/19
  because inserting Novita shifts the list. Main had since replaced those
  literals with `_provider_choice_number(<provider>)`, which looks the number
  up from `_PROVIDER_CHOICES` and does not need touching when a provider is
  inserted. Took main's helper, so the bumped literals are no longer needed.

Also lists Novita AI in the other five READMEs. The PR added it to the English
provider line only; the same sentence lives in all six and the count-consistency
tests compare them to each other, so five locales would have advertised a
shorter list than the code ships.
2026-08-14 18:52:50 +08:00
Haozhe Wu d16725e7b2 docs: add the 2026-08-13 news entry across all six READMEs
Leads with the backtest execution-truth fix, since positions.csv having held
target rather than filled weights meant a report could overstate exposure while
the same targets fed the invested-weight metrics and the risk x-ray. Then the
research dashboard and Spanish as the sixth UI language, with the rest of the
day's eight merged PRs compressed to one clause each.

Demotes the 2026-08-10 v0.1.13 entry into <details> so exactly three stay
visible, which is the convention for this section.
2026-08-13 22:28:26 +08:00
daviddaco1 6746d172e8 feat(i18n): add Spanish (es) locale and README_es.md
Registers "es" as a sixth supported UI language (i18next resource
bundle, lazy loader, RTL/parity test), and adds a full Spanish
translation of README.md as README_es.md, following the same
heading/anchor conventions as the existing zh/ja/ko/ar translations.
Adds the Español nav link to all five existing README variants.

Signed-off-by: daviddaco1 <daviddaco1@hotmail.com>
2026-08-12 15:46:22 -05:00
Haozhe Wu faa276746b docs: add the 2026-08-12 news entry across all five READMEs
Signed-off-by: Haozhe Wu <haozhe_wu@connect.hku.hk>
2026-08-12 04:23:36 +08:00
Haozhe Wu 1bf1d8b4c9 docs: add the 2026-08-11 news entry across all five READMEs 2026-08-11 13:25:41 +08:00
Haozhe Wu c33133f4fd release: 0.1.13 — expose quantlib_call over MCP, repair two unreachable modules
Prepares the 0.1.13 release and fixes the defects found while verifying its
claims. The pieces interlock — the documented counts are the code's surface —
so they land together rather than as commits that fail their own tests.

Code:
- attribution and impact carried no __all__, and quantlib_call dispatches on
  __all__ alone, so the tool listed ZERO functions for both while the package
  docstring advertised them. Both now export; exposed callables 184 -> 195.
- Six read-only analytics tools reach MCP for the first time (64 -> 70):
  quantlib_call, cashflow_performance, orderbook_depth, sentiment,
  technical_indicators, get_fundamentals. They use the existing mirrored path,
  which refuses any class whose is_readonly is not True, so order-placing tools
  remain structurally unreachable over MCP.

Tests that measured a proxy instead of the truth:
- The manifest tool count was derived from @mcp.tool decorators, which ignores
  every mirrored tool. Four institutional-research tools were live over MCP and
  absent from the published SKILL.md, and the contract test asserted that
  absence was correct. Both now measure mcp.list_tools().
- test_every_allowlisted_module_actually_imports only asserted ok is True, which
  can never catch an empty listing. A new guard fails when any allowlisted
  module exposes no callables; removing an __all__ names exactly the two
  offenders.
- The README count tests only proved the five files agreed with each other and
  with a pinned constant, so a uniform error was invisible — that is how the
  broker count sat at 12 after eToro shipped as the 13th. The pin is now
  anchored to the profile registry, every connector must appear in the table,
  and the quantlib export count joins the verified badges.

Docs, corrected against measurement rather than the previous text:
- merged PRs since 0.1.12: 42 -> 162 (42 counted merge commits only; squash
  merges leave none)
- auto-discovered agent tools in the project tree: 68 -> 94
- broker connectors: 12 -> 13, with eToro added to the table in all five READMEs
- quantlib: 249 across 17 modules -> 265 across 19, now exactly the allowlist
- SKILL.md: skills 88 -> 89, MCP tools 60 -> 70, python ">=3.11" -> ">=3.11,<3.14"
  to match pyproject
- zh/ja/ko/ar gain the eToro connector section and the
  CONTENT_FILTER_WARNING_THRESHOLD row that only English carried
- v0.1.13 news entry and contributor credits across all five READMEs

Full suite 10147 passed / 54 skipped / 0 failed (baseline on a clean tree was
10140 / 54 / 0; the +7 are the new guards). CI grep gates pass.
2026-08-10 19:53:19 +08:00
Haozhe Wu 8c52594829 docs: add 2026-08-09 project news
Signed-off-by: Haozhe Wu <haozhe_wu@connect.hku.hk>
2026-08-09 20:36:13 +08:00
Haozhe Wu fb0f16b04c Merge branch 'main' into fix/expose-alpha-zoo-mcp-tools 2026-08-09 19:19:26 +08:00
Haozhe Wu ed4d6df767 Merge pull request #1011 from yrk111222/feat/add-modelscope-provider
feat(providers): add ModelScope as an OpenAI-compatible provider
2026-08-09 18:30:08 +08:00
Haozhe WuandWill Liao cf9c693fb1 feat: complete TSX and TSXV market support
Scope #1024 to its Canadian-market objective, retain the contributor history, and complete symbol routing, CAD-aware backtesting, Yahoo fallback, grounding, benchmark selection, documentation, and regression coverage.

Co-authored-by: Will Liao <liaotoca@yahoo.com>
2026-08-09 15:12:58 +08:00