MAHORAGA and DayTradingAgent — how far you get before either one asks for an account

Two trading agents pushed as far as they go with no sign-ups, mapping exactly what runs for free and the precise line at which each one makes you reach for your

Part 29. How far without an account — MAHORAGA and DayTradingAgent

Done when: you know which accounts each of these two tools needs before you install it, and how far you get for free.

What they do MAHORAGA: reads social sentiment (StockTwits, Reddit) and regulatory filings, picks what to buy and sell, and places orders through Alpaca. DayTradingAgent: watches US and Hong Kong equities intraday and computes an entry price, a stop and a quantity as a signal (you place the order yourself)
Who it fits Anyone weighing up whether to install either one who stopped at the "create an account first" line in the instructions
Who it doesn't fit Anyone who needs something finished and running today. This article is a map of the walls, not a completed run
What you end up with A list of what you can verify with no account, and the exact one-line point at which each tool makes you pay
What you need · cost Code free (both MIT) · model paid (71 calls measured, $0.197) · market data: Alpaca free for MAHORAGA, free promotional access for DayTradingAgent on US equities · weltiq separate
Time · difficulty 25 minutes to run MAHORAGA locally · 15 minutes to reproduce DayTradingAgent's review pass · difficulty medium (you need to be able to build a Node and a Python environment)
Versions used Node 26.8.1 · Python 3.14.7 · wrangler 4.61.1
Relationship to weltiq Not connected. Both tools need an account before a judgment can be pushed through to execution, so the weltiq side was confirmed by reading the source only (section 5)
Test environment · date 2026-09-22 (KST) · macOS · ygwyg/MAHORAGA at its 2026-02-16 state · xhqing/DayTradingAgent at its 2026-09-19 state
Disclosure I am a paid contributor for weltiq. Both tools here are third-party open source with no connection to weltiq, and every number below came from runs I did myself.

1. What these are

There is something you should check before star counts when picking an open-source trading tool: how many accounts you have to create before you can even switch it on. The tools in this series so far have mostly been "one LLM key plus free market data". These two are different.

MAHORAGA DayTradingAgent (Victor)
Repository github.com/ygwyg/MAHORAGA · MIT · 868 stars github.com/xhqing/DayTradingAgent · MIT · 2 stars
Last commit 2026-02-16 (stalled for 7 months) 2026-09-19
Language TypeScript (Cloudflare Workers) Python plus normative documents
Markets US equities plus BTC, ETH, SOL (all spot) US and Hong Kong equities and ETFs (no derivatives)
Accounts the instructions demand LLM · Alpaca · Cloudflare An agent harness · Tiger Brokers · Futu OpenD market data

MAHORAGA is an autonomous agent that runs 24 hours a day on Cloudflare. It scrapes four subreddits and StockTwits to build a per-symbol sentiment score, blends in filings (the flow of new 8-K disclosures), and hands the candidates to a model that returns BUY / SELL / HOLD with a confidence. What makes it interesting is that it does not take the sentiment at face value. Every post gets multiplied by three factors — a time decay with a 120-minute half-life, an engagement factor bracketed by upvotes and comments, and a flair multiplier (DD 1.5x, Meme 0.4x, Shitpost 0.3x). Source credibility is kept separately: 8-K filings 0.95, StockTwits 0.85, and r/wallstreetbets 0.6. This tool has written into its code that it trusts the noisiest place it reads the least.

DayTradingAgent has an entirely different character. The first paragraph of the README declares that there is no application to install — the repository is the agent. What it actually consists of is roughly 1,975 lines of normative documents and 45 scripts. An agent harness reads those documents and takes them as its discipline. The default is signal mode — the tool computes an entry price, a stop and a quantity, prints them as a table, plays a sound, and you place the order in your own broker app. Before a position is opened it forces six fields to be settled (target, direction, reference price, price range, quantity, stop), and unless the setup clears a win rate above 50% and a reward-to-risk of at least 1.2, it does not emit the signal at all.


2. Installing — one verified path each

MAHORAGA (without a Cloudflare account)

The instructions tell you to create a Cloudflare account, create a D1, create a KV, add secrets and deploy. Half of that can be skipped. Development mode emulates the database, the cache and the storage entirely on your own machine.

git clone https://github.com/ygwyg/MAHORAGA && cd MAHORAGA
npm install

# fill the placeholders in the config file with anything (nothing checks them locally)
sed -e 's/<YOUR_D1_DATABASE_ID>/00000000-0000-0000-0000-000000000000/' \
    -e 's/<YOUR_KV_NAMESPACE_ID>/0123456789abcdef0123456789abcdef/' \
    wrangler.example.jsonc > wrangler.jsonc

cp .env.example .dev.vars     # fill in Alpaca paper keys, the LLM key, and a token you choose
npx wrangler d1 migrations apply mahoraga-db --local
npx wrangler dev

When that last line prints Ready on http://127.0.0.1:8787, you are done. A login screen never appears once.

This far without an account — the local boot and where the wall sits

What works without an account (green) and what does not (red) are on the same screen. Everything up to Ready on http://127.0.0.1:8787 is the free stretch, and notice that D1, KV, R2 and the Durable Object are all bound as local — that is why no account is needed. The two Not logged in. lines at the bottom are the wall.

DayTradingAgent

git clone https://github.com/xhqing/DayTradingAgent && cd DayTradingAgent
cp .claude/skills/trade/config.example.json .claude/skills/trade/config.json
python3 -m venv .venv
.venv/bin/pip install futu-api numpy scipy matplotlib pandas

That much is free. Anyone can pull the Python packages. There is one thing to know before you run preflight.py, though — that script installs a startup item (a LaunchAgent) in your macOS home directory and turns on a sleep block. The documentation gives no warning. How to undo it is in the table below.

Where it gets stuck

Where What appears What it needs
MAHORAGA wrangler deploy Not logged in. A Cloudflare account (the free tier is enough — see the cost table under section 5)
The database identifiers in MAHORAGA's config file Deployment fails if the placeholders are still there wrangler d1 create · kv namespace create (login required)
MAHORAGA's decision step skipped_no_llm in the log An LLM key
DayTradingAgent hot_list.py ECONNREFUSED repeating every 6 seconds, it never stops itself An OpenD gateway logged in with a Futu/moomoo account
DayTradingAgent's four automatic order scripts Cannot run — no account information file Tiger Brokers credentials (not needed if you only use signal mode)
The startup item preflight.py left behind — launchctl unload ~/Library/LaunchAgents/com.daytrading.monitor-watcher.plist, then delete it, then run keepawake_off.sh

3. First result — this is what it looks like when it works

MAHORAGA: if you got this far without an account, all 200 tests pass and the dashboard shows your paper account live.

$ npx vitest run
 Test Files  9 passed (9)
      Tests  200 passed (200)

But the command above does not bring up the dashboard. What wrangler dev starts is the API worker; the screen is a separate app inside the repository. Open a second terminal and start it like this.

cd MAHORAGA/dashboard
npm install
npm run dev          # to change the port, npm run dev -- --port 9321
Which address http://localhost:3000 (the dashboard's default). The worker is on 8787 and the dashboard forwards /api there. If you changed the worker's port you have to say so, with WRANGLER_PORT=9320 npm run dev or MAHORAGA_API_URL=http://localhost:9320 npm run dev
Is a login needed No Cloudflare account is needed. What you do need is to paste the MAHORAGA_API_TOKEN you chose in .dev.vars into the settings field inside the screen, once (it is stored only in the browser). Without that token nothing is visible
On first open If you did not start the worker first, or did not enter the token, the screen below is all there is

The dashboard on first open

Start the dashboard without the worker and this is everything. Under the red OFFLINE it tells you what to do — start the worker and hit /agent/enable once. Do not go create an account because you got stuck here. It is not an account problem, it is an ordering problem.

Start the worker and enter the token, and it fills in like this.

The dashboard with real data in it

This screen was brought up on my own machine with no Cloudflare account, and every number in it is real data. Top left is an actual Alpaca paper account, below it the 29 signals collected on this pass (StockTwits 15 · 8-K filings 13 · crypto 1), and bottom right is what the model wrote about each symbol and why. Look at the bottom line: CRYPTO 24/7 · SYMBOLS BTC · PAPER MODE.

DayTradingAgent: with no market data there are no judgments to look at. But the repository ships with the author's own trading record — 31 trading days from 2026-07-07 to 09-14, and 43 signal files. So the review and statistics side runs in full.

There is no dashboard on this side. No web UI, no TUI, no address to open — you call a script, a table prints in the terminal, and the statistics scripts drop PNG files into a folder. That is all.

$ .venv/bin/python .claude/skills/trade/scripts/review.py reviews/2026-07-21-trades-hk.csv
交易复盘 · N=12 positions closed
  N=12   win rate p=0.750   loss rate q=0.250
  win multiple R_W=1.542   loss multiple R_L=-0.655
  EV=+0.9927 (EV%=+99.27)
  Bayesian P(EV>0) = 97.5% (σ uncertain 82.8%~99.7%)
  Read: width 17pp (>5pp) → small sample, take the direction only, do not use as grounds to change strategy
  Sample size plan: win rate ±5% → 384 trades / EV confirmation (80% confidence) → 1,705 trades

(The block above has been rendered for readability; the actual output is in Chinese.)

DayTradingAgent at work — the raw output of review.py

This is what this tool looks like working without an account. Start with the fact that the output is in Chinese — factor that in if you plan to use it. The green block is win rate, multiples and EV, the blue block is the Bayesian probability, and the 判读 (reading) line below them is the character of this tool — the numbers came out good and it still marks down its own result, saying the sample is small so take the direction only and do not change strategy.

Fees are not estimated; they run off the actual rate schedules. The denominator of the reward-to-risk is computed with fees on both sides included, so that a fill exactly at the stop comes to exactly −1.000.

The sequential Bayesian curve, reproduced without an account

One of six figures bayes_evolution.py draws from the same CSV. Over the 20 trades that accumulate, the "probability that expected value is above zero" climbs from 8.8% to 96.4%. Look at the blue band rather than the line — that is the uncertainty that comes from having few samples, and it is how this tool says "don't believe it yet".


4. Getting the most out of them

MAHORAGA — don't deploy it; run it locally and just take the judgments. This tool is advertised on unattended 24-hour operation, but what is valuable to a first-time user is seeing how the sentiment score gets built. Leave it running and poke it now and then like this.

curl -H "Authorization: Bearer $TOKEN" localhost:8787/agent/trigger
curl -H "Authorization: Bearer $TOKEN" localhost:8787/agent/status

The signalResearch field of the status response carries per-symbol reasoning in prose. Here is one I actually received:

"At the supplied $23.49 price, there is insufficient evidence of an attractive entry. A 51% bullish Stocktwits reading is nearly neutral, not a strong buy signal. Without current financials, valuation, or recent price and volume history, neither fundamental support nor whether the stock has already pumped can be established. Confidence reflects the case for waiting, not a prediction of a price decline." (on GME)

You have to wait 300 seconds between runs for a new judgment. Poke it sooner and it reuses the previous one, leaving nothing but research_skip in the log.

Asking about Bitcoin three times under the same conditions gave this — WAIT all three times, with confidence 0.88, 0.90 and 0.89. The 24-hour move was −1.19%, short of the ±2% threshold this tool sets, and the answer did not wobble.

One caution came out of that. Changing only the model and asking again gave the same conclusion (SKIP, don't buy) but the confidence dropped to 0.20. That number is a property of the model you happened to use, not of the tool. If you plan to filter anything automatically on confidence (this tool's default threshold is 0.6), pin the model down.

Note also that this tool gives neither an entry price nor a stop — the 5% stop and 10% take-profit are fixed values in the config file, not judgments.

DayTradingAgent — before you create a market-data account, run the review script over your own record. review.py takes a single CSV (date, symbol, direction, entry, exit, share count, max loss). Whether this tool is worth using is something you can settle by looking at the numbers it gives you for 50 of your own trades. That is the most useful thing this script tells you — that 12 trades confirm nothing, and that speaking with confidence takes hundreds.


5. Moving it into weltiq — an integration experiment

This part was not connected. On one side the judgment never came out, blocked by a market-data account; on the other the judgment came out but half of it disappears in transit. Rather than force it, I only lined up the two tools' output shapes against the fields of a weltiq rule document.

Field MAHORAGA DayTradingAgent
Direction Carries over as-is Carries over as-is
Entry price Does not produce one — I would have to write it Produces a reference price plus a valid price range → carries over
Stop Fixed 5% from config (not a judgment) Produced as an absolute price → carries over
Target Fixed 10% from config Absolute price, plus a trailing signal
Quantity A share of capital — has to be divided by price to become a share count Produces the share count directly
Trading hours Not applicable 04:00–16:00 US Eastern → maps onto the session and time-window conditions of a weltiq rule document

In one line: MAHORAGA gets only the direction across and leaves a human to write the price levels, which means you cannot call it "moving the judgment over". DayTradingAgent maps almost all six fields directly. What cannot move is equally clear — MAHORAGA's allocation instruction (a percentage) is not a rule but an allocation, so there is no place for it in a rule document (a property of the tool), and DayTradingAgent permits short selling by default while weltiq's US equity side does not accept shorts (a weltiq limit).

Execution is left for after the accounts are in hand.


6. After using them

What was good

What fell short

Cost (checked from the public pricing pages only, without signing up)

Account Is it free
Cloudflare Workers A free tier exists (100,000 requests/day). Paid starts at $5/month minimum
Cloudflare stateful storage (Durable Objects) Works on the free tier — only the SQLite flavor does, and that is the one MAHORAGA uses
Cloudflare file storage (R2) There is a free allowance, but creating a bucket requires going through a subscription step once. That said, this build of MAHORAGA does not actually use R2 — removing that entry from the config should drop the step entirely (I could not confirm this by deploying)
Alpaca paper Free. Email sign-up only, no approval and no deposit
Model Paid. Measured at $0.197 over 71 calls, averaging $0.0028 per call
Twitter/X (optional) Paid. Per the instructions, $0.005–0.01 per read
Futu/moomoo OpenD You can log in with an app account without opening a brokerage account. US equity data is free during a promotional period. Hong Kong depth-of-book is free for mainland China users and paid otherwise
Tiger OpenAPI API use is free. Market-data entitlements must be purchased separately from the app, and the price is only visible on the purchase page — unconfirmed

In summary: the floor on account costs for running MAHORAGA 24 hours a day is the Cloudflare free tier plus model tokens. For DayTradingAgent, if you only want US equities the market data is free too, and money is only involved if you want Hong Kong depth-of-book or automatic orders. In other words, for both tools the real wall is lower than the account list in the instructions.


7. What to do next

If you are picking only one, it splits like this. If you want to hand the judgment off, run MAHORAGA locally — deployment is a later problem, and seeing how the sentiment score is built is worth it on its own. If you want your own trading graded, take just DayTradingAgent's review script — it needs no account at all, and it will show you numerically that your sample confirms nothing yet.

If you do decide to create a market-data account, there is an order to it. A Futu/moomoo app account → run OpenD → check that hot_list.py returns values is one bundle, and Tiger is only needed if you want automatic orders.

The next part puts tools that run through the US session under the same conditions side by side, and covers how comparisons break when the definition of trading hours differs. The 04:00 against 09:30 found in this part is exactly that story.

weltiq setup — 3 steps 1. Sign up: {{CTA_URL}} 2. My → Connections → issue a key 3. claude mcp add weltiq --transport http https://weltiq.ai/mcp --header "Authorization: Bearer <key>"

Paper only. You can see what the fields in this article's section 5 table actually look like.


The full verification record — raw output, commands and responses — is in reports/a/29-account-walls/.