InvestSkill — 26 US-equity analysis frameworks with no runtime, just markdown

1.7 seconds to install, 0 dependencies. 26 frameworks that are nothing but prompts. I ran it properly on a US stock, closed the loop into a weltiq paper slot, a

Part 9. InvestSkill — 26 US-equity analysis frameworks with no runtime

This tool has no code to run. There is no pip install and no npm start. 26 markdown files are the whole of it, and what reads them is the AI you are already using.

What counts as finishing this article: you have the tool itself pick which of the 26 you need, then carry the numbers from that conclusion into a weltiq strategy container's rule and stop, and actually put it on during US market hours.

What it does Hands you 26 analysis frameworks (+ a report generator) for reading US equities, as markdown. Reading a 10-K, DCF, 13F, Form 4, short interest, earnings-call analysis — all documents that only exist for US-listed companies
Who it fits Anyone who wants to read one or two US stocks properly but has no idea where to start · anyone who wants to write down, as numbers, what would tell them the conclusion was wrong
Who it does not fit Anyone expecting it to fetch data for them · anyone looking at crypto or Korean equities · anyone who wants to know the hit rate of the signals (this tool has no apparatus for measuring its own hit rate)
What you end up with The list of frameworks the tool picked for itself, one HTML report, and a paper order carrying its three prices exactly as given, plus the fill record
Cost to get started Code free (MIT) · model only the LLM calls your own agent makes · market data this tool fetches none · weltiq only when you follow section 5
Time & difficulty 1.709 seconds to install, minutes to the first analysis. Difficulty low — all you install is markdown
Relationship to weltiq It connects. Their Thesis Invalidation section maps 1:1 onto this side's mandatory gate. The lowest attachment cost in this series — 6 computation nodes
Test environment & date 2026-09-22, 01:40–02:50 KST · Claude Code · US market hours
Disclosure The author is paid by weltiq for this series. Tool assessments use only results the author ran personally

Every order is a weltiq paper (simulated) order. Not one live-account order. The instruments and figures here are examples used to confirm functionality and are not trading opinions of any kind. The lines on the human side are the commands I actually typed; the outputs are measured and the numbers are untouched. The raw prompts, responses and logs are in the verification record.

There is one embarrassing passage in this part. I wrote "the mission picks the participants" into this series' own principles, and then broke it in the very next round. That story is in section 4.


1. What this is

yennanliu/InvestSkill is a bundle of US-equity analysis frameworks. The README's first paragraph sums up its identity in one line — "There is no runtime — every skill is a prompt" (README.md line 23).

It is literally so. The 27 markdown files under prompts/ (26 analysis frameworks + a report generator) are the whole of it, and there is not one line of code that performs analysis. So what occupies the seat of judgment is not this repository but the LLM that read this repository's markdown. "Running" this tool means shipping that markdown to an LLM verbatim, and that is exactly what I did here.

Item Value How it was checked
URL · license github.com/yennanliu/InvestSkill · MIT GitHub API
Stars ★216 · 51 forks (observed 2026-09-22) GitHub API
Last push 2026-09-21 · created 2026-02-16 · 11 open issues GitHub API
Distribution 27 markdown files (prompts/), 55,933 words in total wc -w prompts/*.md
Dependencies 0 (not one Python or Node package gets installed) section 2
Target market US equities only — the repository says so explicitly FAQ.md line 204

The framework list makes its aim obvious — 10k-digest · dcf-valuation · insider-trading (Form 4) · institutional-ownership (13F) · short-interest · earnings-call-analysis. This is not a tool for looking at prices but a tool for reading a company.

And here is the most important part of this article: the output format is standardized. Of the 27, 22 open with a Data Verification section ("do not use prices from your training data; if you cannot get them, raise a warning"), 21 close with a Thesis Invalidation section ("write down, as numbers, the conditions that overturn this judgment"), and 18 end with a Signal Output box. That standardization is the whole of section 5 — to say it up front, Thesis Invalidation maps 1:1 onto weltiq's mandatory gate.

By position, this tool sits on the judging side. There is no seat here for placing an order at all.


2. Installing

All you need is one AI agent (Claude Code, Cursor, Gemini CLI, Copilot, Codex and OpenCode are supported). It is free — no API key, no subscription; the only cost is the LLM calls your own agent makes.

Install this skill for me: https://github.com/yennanliu/InvestSkill

If you would rather type it yourself
curl -fsSL https://raw.githubusercontent.com/yennanliu/InvestSkill/main/install.sh | bash -s -- -a claude
Change what follows `-a` to `cursor` · `copilot` · `gemini` · `codex` · `opencode` · `any` to install for that tool. `any` just unpacks the prompt files — the case where you paste them into ChatGPT on the web.
InvestSkill → claude (/private/tmp/a09-investskill-demo)
· Downloading yennanliu/InvestSkill@main …
✓ 26 analysis frameworks (+ report-generator) → .investskill/prompts/
✓ 27 skills → .claude/skills/

Next: run claude → "Evaluate AAPL with the stock-eval skill"

The measured output of the InvestSkill install

The real output of that one install command. Two lines reading ✓ 27 skills mean it finished, and real 0m01.709s below them is how long it took. Because all it pulls down is markdown, it creates no virtualenv and no packages.

It took 1.709 seconds, and what landed was 27 markdown files plus 27 skill folders, 1.0MB in all. That is not a boast but a consequence of the structure — when all there is to install is markdown, 1.7 seconds follows, and by the same token this tool does nothing on your machine either.

Where you might get stuck

Symptom Cause Fix
Piping a script into a shell feels wrong Reasonably so install.sh is 205 lines. Read it and decide. The README recommends the same
Not sure which entry point gets created It differs per agent Claude Code: .claude/skills/<name>/SKILL.md, Cursor: .cursor/rules/, Gemini: GEMINI.md
Worried about your existing instruction files It does not overwrite The install script only appends. Running it again is harmless
You want it account-wide, not per project The default is the current folder Add -g
Installed, but the skill never fires The most common mistake — without -g it is only recognized in that folder Start the agent in that folder, or reinstall with -g

3. First result

First — there is no dashboard

Do not go looking. There is no server to start, no address to open, no TUI. There is no process to run, so no port and no login, and this tool's screen is the chat window of the AI you were already using. There is exactly one output that makes a picture — the single HTML file that full-report and report-generator emit (output/<TICKER>_report_<date>.html).

How you know it fired

With skill-shaped tools, "installed but it never fires" is the first gate. There is one check — if it fired properly, the output opens with a Data verification section (22 of the 22 are written to start that way) and closes with a Thesis Invalidation section or an INVESTMENT SIGNAL box. If neither is there and it is just prose, it did not fire.

The reliable way to trigger it is to put the framework name in your sentence (install it via /plugin marketplace add yennanliu/InvestSkill and you also get slash commands like /stock-eval NVDA). Ask "how's Nvidia looking?" without naming it and the agent frequently skips the skill and just answers — and that is why it is hard to notice the tool never fired.

The smallest example

Evaluate NVDA with the stock-eval framework.

## Data verification

⚠️ Live fundamental and longer-term market data unavailable. Daily bars, 52-week range,
market cap, fundamentals, earnings history, analyst estimates, options data, and ownership
filings were not provided. I will not substitute stale estimates. This is therefore a
short-horizon technical evaluation only.

This is what success looks like. I made a mistake here — calling the candle API I wrote limit= when the actual parameter is hours=. The default of 24 hours applied, so I handed over only 219 intraday 1-minute bars and not a single daily bar, and the tool caught it exactly. Instead of quietly filling in a market cap or P/E from its training data, it wrote "I did not receive that data and I will not guess" and narrowed its scope.

I fixed my mistake (hours=8760), gave it 19 more daily bars, and ran it again.

Without daily bars (1st) With 19 daily bars (2nd)
Entry level 226.60 226.60
Stop 225.70 225.70
Target 228.40 228.40
Reasoning "just above the session high of 226.55" "targeting just below the recent daily resistance at 228.54. Not chasing to the daily high of 234.75"

Not one of the four numbers changed; only the reasoning did. It came out the same by coincidence and does not mean the tool ignores daily bars — but the fact that the same number can be explained by two different rationales is worth remembering.

InvestSkill at work

The real output of the second run, the one given 19 daily bars. The ## Data verification at the top is the sign that the tool fired properly, and the five lines of the EXECUTABLE RULE block at the bottom are everything that crosses into the strategy container in section 5. The evaluation body in the middle is trimmed for length.

The one output that makes a picture — the HTML report

Turn that analysis into an HTML report with report-generator. Don't invent numbers; use only what's there.

The InvestSkill HTML report

The generated HTML file opened in a browser (25,764 bytes, self-contained in one file). The $226.25 and 2026-09-21 12:56 ET in the header are the measured values I handed over, and the eight entries in the contents below are the fixed format this tool defines — note that Data Verification and Thesis Invalidation are both in the table of contents.

This is the most picture-like output the tool produces. But it is HTML an LLM wrote in one pass, so it does not refresh — it is a single sheet of paper, printed once.


4. Getting the most out of it — asking the tool "is this your job?" first

With 26 frameworks, which one to use is the first problem, and this tool is built so that it can answer that question itself. The one-line description at the top of each SKILL.md is the dispatch surface. So I pulled the catalog and asked the tool itself.

If you would rather type it yourself — pulling the catalog
for f in .claude/skills/*/SKILL.md; do
  echo "- $(basename $(dirname $f)): $(grep -m1 '^description:' $f | cut -d: -f2-)"
done

You are the dispatcher for the InvestSkill package. Below is this package's own framework catalog (name + that framework's own description, verbatim). Pick only frameworks whose own description says they apply to this request. If none apply, say so and stop.

[Request ①] Evaluate NVDA and tell me whether to buy it.
  1. stock-eval          — "comprehensive fundamental and valuation analysis"
  2. fundamental-analysis — "Deep fundamental analysis of US stocks"
  3. stock-valuation      — "Multi-method stock valuation using DCF, ..."

[Request ②] Trade Bitcoin and make a profit while keeping losses within -2%.
  No framework in this package applies to trading Bitcoin; the available trading
  frameworks are specifically scoped to US stocks or investment portfolios.

[Request ③] Evaluate Samsung Electronics (005930, KOSPI) and tell me whether to buy it.
  1. full-report  2. financial-report-analyst  3. competitor-analysis
  4. stock-valuation  5. dcf-valuation  6. dividend-analysis
  7. bear-case  8. result-validator

The dispatcher picking for itself

The real output when only the request changed against the same catalog. The green section at the top (US equity) picked three exactly right; the yellow one at the bottom (Korean equity) picked eight — which contradicts the repository's own statement that it excludes non-US instruments.

① is exact. ② is the subject of the next section. ③ is wrong — Samsung Electronics is a Korean instrument and the repository's FAQ explicitly excludes "International stocks (outside US)", yet the dispatcher waved eight through. Frameworks that read 13F and Form 4 cannot possibly work on a Korean instrument.

So the best way to use this is "ask the dispatcher first, then check its answer." It is good at reading a catalog and choosing from it, but filtering by market scope is not reliable.

This tool refused Bitcoin — and that is a good sign

This is why this part got written. A mission in another round of the same series was "trade Bitcoin and make a profit while keeping losses within −2%", and while picking candidates I asked with the same dispatcher prompt, catalog and model as above.

"No framework in this package applies to trading Bitcoin under a specified maximum loss of -2%." — the InvestSkill dispatcher's output, verbatim, 2026-09-21

The repository says the same thing — "Q: Can I use InvestSkill for crypto/forex/commodities? A: No. InvestSkill is designed specifically for US stocks." (FAQ.md lines 204–210)

The Bitcoin refusal

The real output when the Bitcoin request went into the same prompt. The yellow line is the refusal the tool produced on its own, and below it is the same-effect sentence from the repository FAQ. Note that it picked no framework at all and stopped.

This is not a failure story. Tools that know their own scope and can say "that is not my job" are rare, and most LLM trading tools produce something plausible whatever you ask — which is far more dangerous. What was wrong was not the tool but me — I had written "the market or instrument has to exist on the measuring side" and "do not pick the tool first and fit the mission to it" into this series' principles, and then broke them. The tool stopped me.

But the refusal does not happen every time

Stopping here would be me glamorizing the tool, so I threw the same question six more times today. Same prompt to the character, same catalog to the line, same model (I diffed the catalog against the earlier round's).

Count
Stopped with "no applicable framework" 2
Picked position-ladder and waved it through 5
Total (1 earlier round + 6 today, all the same prompt) 7

It refused 2 times out of 7. The dispatcher is an LLM and not a rule, so that follows — and it means the gap between the FAQ's flat "A: No." and the actual behavior is this wide.

Following the ones that got through, though, there was a second door. I loaded the position-ladder the dispatcher had picked verbatim and put the same request in, and this time the framework's own Data Verification section blocked it.

"⚠️ Live data unavailable. I cannot verify the current Binance BTCUSDT price, 52-week range, market cap, ATR, or recent market data from this chat. I will not assume a price." — the InvestSkill position-ladder output, verbatim (2026-09-22)

It went on to write "define first whether −2% is account-wide or per trade" and "BTCUSDT spot cannot be shorted without margin or derivatives", and never produced an executable rule.

The second door — the framework's own data verification

The output when the position-ladder the dispatcher waved through was actually loaded and sent. The first line, ⚠️ Live data unavailable, is the second door, and below it the tool asks back — "define the −2%" and "spot cannot be shorted". The lower part of the screen is it handing back the blanks to fill in (BTCUSDT spot price: …).

So there are two doors. The first (the dispatcher) opened 5 times out of 7, but the second (Data Verification) stayed shut — and as a result I have never once extracted a Bitcoin rule from this tool.


5. Moving it to weltiq — their format and this side's gate are the same shape

This is the heart of the part. InvestSkill's conclusion is prose — not an order, not a parameter bundle. So moving it means "pulling the numbers out of that prose and rewriting them as a rule document", and there are four steps.

① Write it as a rule document  POST /v1/ai/formalize or POST /v1/strategy-rules → document hash
② Write the rationale yourself POST /v1/ai/thesis
③ Set the stop conditions      POST /v1/containers (stop_max_loss · stop_after_hours required)
④ It runs                      Unattended. The container keeps the rule even with you and
                               InvestSkill both switched off

② and ③ cannot be skipped. I actually left them out and threw them.

# Leaving out the stop conditions
{"detail":[{"type":"missing","loc":["body","stop_max_loss"],"msg":"Field required"},
           {"type":"missing","loc":["body","stop_after_hours"],"msg":"Field required"}]}

# Not writing the rationale
{"detail":{"code":"thesis_required",
 "questions":["이 전략이 수익을 내는 이유를 한 문장으로 쓰세요 (본인의 말로).",
              "어떤 시장 조건에서 이 논리가 깨집니까?",
              "무효 조건(가격 레벨 또는 시점)을 숫자로 지정하세요."]}}

(The Korean questions read: "Write in one sentence why this strategy makes money — in your own words." / "Under what market conditions does this logic break?" / "Specify the invalidation condition as a number — a price level or a point in time.")

Those two gates are the boundary of autonomy. And here is the heart of it — InvestSkill already holds all three of those questions in its own format.

What the gate asks The box InvestSkill already writes
Why this strategy makes money, in one sentence Output Format item 1, Investment Thesis Summary ("2–3 sentences capturing the core bull or bear case")
Under what market conditions the logic breaks Thesis Invalidation — "thesis breaks if:"
Specify the invalidation condition as a number The same section is written to give price levels

Here is the output I actually got. All I asked was "fill in the two closing sections your framework defines", and I did not touch the numbers.

## Thesis Invalidation

**If signal is BULLISH — thesis breaks if:**
- NVDA fails to break and hold above $226.60, or closes below the nearby support zone at $225.70.
- Price loses the intraday SMA200 at approximately $224.62 with sustained selling pressure.
- The breakout triggers but reverses below $225.70 before reaching the $228.40 target.
- The order does not trigger before the 2026-09-21 16:00 ET close; cancel the setup rather
  than open a late position.

╔══════════════════════════════════════════════╗
║              INVESTMENT SIGNAL               ║
╠══════════════════════════════════════════════╣
║ Signal: BULLISH   Confidence: LOW            ║
║ Horizon: SHORT    Score: 6.2 / 10            ║
║ Action: BUY       Conviction: WEAK           ║
╚══════════════════════════════════════════════╝

Thesis Invalidation and the signal box

The lower part of the HTML report from section 3. The five red lines under The thesis breaks if: are the box that goes straight into questions 2 and 3 of the gate, and the $225.70 among them becomes the stop price below. The black box beneath is this tool's fixed signal format — and not one of its fields crosses over to weltiq.**

The BULLISH, BUY and 6.2/10 in that box are entirely the tool's output. weltiq issues no signals and no scores and says nothing about whether those values are right — all it does is put that judgment somewhere with costs and fills and measure it. And note that it wrote Confidence: LOW itself. I did not mark it down.

How low the attachment cost is — I counted

I measured with the same ruler as Moss in Part 15. That tool produced 36 parameters, and rewriting them in the rule grammar took 277 computation nodes; InvestSkill's conclusion took 6 nodes.

nodes=6 rules=2 qty=1 entry>226.60 stop=225.70 tp=228.40

The difference is not which tool is better but what kind of output they produce. Moss hands you "a strategy engine of indicators and weights"; InvestSkill hands you "three prices and the conditions that would say they were wrong" — and the latter is overwhelmingly cheaper to move. In exchange you lose something: of the tool's 10 standard output fields, 5 crossed over (Investment Thesis Summary · Key Risks · Price Targets · Recommended Entry Zone · Thesis Invalidation), and of the 5 that did not (Valuation Assessment · Quality Score · Management Assessment · Analyst Consensus · the Signal Output box), four are company-value judgments. A strategy container takes only prices and quantities, so there is no box for "undervalued/overvalued" or a Piotroski score to begin with; the fifth, the Signal Output box, is not a missing box but one deliberately unused — weltiq does not deal in opinions, scores or grades.

So the best combination is this. Ask InvestSkill only to write down, as numbers, what would overturn this judgment, and carry those numbers straight into the stop conditions and the stop-loss. The company-analysis conclusions do not cross over, so they are yours to read and judge. What this combination does not do is source data — it fetches neither prices nor financials, and the Data Verification section only says "you bring it".

One turn around the loop — during US market hours

I fixed the two checkpoints before running, not after.

① Draw the boundary — us-equity NVDA 1-minute bars, $10,000 of capital, halt at $300 of cumulative loss, auto-close after 3 hours.

I got blocked once here. The first rule was 44 shares (99.7% of $10,000), and uploading it as-is produced not a single order. A 30-day replay showed why.

"warning": "execution:rejected:1159/1159 — 주문 의도의 80% 넘게 체결되지 않음 (주요 사유: DENY 1159)"
"intent_outcomes": {"DENY": 1159}

(The Korean warning reads: "more than 80% of order intents went unfilled (main reason: DENY 1159)".)

All 1,159 entry intents were rejected, because the default order limit at the time was pinned at 1. 1 Bitcoin is a large order, so that number makes sense there, but 1 share of stock does not. Back then a strategy document uploaded with an API key had no field for specifying this limit at all — a weltiq problem that surfaced while writing this article.

Since then (2026-09-23): fixed. The sizing.qty a rule document declares is now the order cap itself — upload qty: 44 and max_order_qty becomes 44. What follows below — "so I cut it to 1 share and resubmitted" — stays exactly as measured that day. Upload the same document today and 44 shares go through.

So rather than approximating, I told the tool the truth and asked again — "this engine rejects orders larger than 1 share". The rule that came back had the same three prices and a quantity of 1. I did not correct the tool's judgment; I corrected the wrong boundary and let the tool decide again.

② The tool judges and weltiq places the order — rule document (6 nodes) → rationale → strategy container running (stop={"max_loss":"300","until":"…T19:58:56Z"}). ③ Take the result and read it — 7 minutes later the condition matched and it filled.

02:06:11 KST  buy 1 NVDA @ 226.662662  (expected_px 226.63, taker, fee 0E-8 USD)
02:06:11 KST  sell 1 stop_market @ 225.70  (reduce_only, acked)

The entry order and the protective stop went out in the same instant. The stop price 225.70 is the number InvestSkill wrote into Thesis Invalidation, and no human recomputed it.

The weltiq strategy container — the loop connected

The container detail right after the fill. The single line under the title (entry: (close > 226.60) → … stop=225.70, limit=228.40) is InvestSkill's numbers unchanged, and the green light beside running plus Holding — watching exit conditions are the sign that it is running unattended. Of the two ORDERS rows, the upper one is the protective stop that attached automatically. The account identifier is masked.

Checkpoint 1 (02:42, position still open) — I put the record into the result-validator framework raw, unprocessed.

"The position was still open, so the stop-loss and take-profit decisions have not been tested." "No rule change is warranted. The current rule is repeated unchanged below." — the result-validator output, verbatim (confidence 63/100 · MEDIUM)

The tool answered "I am not changing it." Touching a rule because a small unrealized gain appeared before the trade was even over has no basis — and instead it set homework: "backtest the same structure on a meaningful sample."

④ I did exactly that homework — the same document through a 30-day replay.

n_bars 7661 · n_fills 709 · n_trades 354
pnl -26.5200280   fees 1.68068977
intent_outcomes: {"accepted": 709, "market_closed": 2}

354 trades for −$26.52. Buying one share at a time keeps the amount small, but the sign is unambiguous — and this also confirmed that the orders rejected wholesale in ① went through all 709 of them at a quantity of 1.

Checkpoint 2 (02:44) — I put that record in raw as well. This time the tool changed it.

"Because the replay invalidates the original rule's demonstrated edge, the validated action is to avoid initiating another long position under that rule. The executable rule below therefore uses a deliberately unreachable breakout threshold as a halt condition rather than pretending the original signal remains investable."

Field Checkpoint 1 Checkpoint 2
Signal · Score · Action BULLISH · 6.2/10 · HOLD BEARISH · 2.5/10 · SELL
entry_level 226.60 234.76
stop_loss · take_profit 225.70 · 228.40 234.00 · 235.50

234.76 is a number chosen so it would never trigger. The daily high I had supplied was 234.75, and the tool put the entry line one tick above it, halting its own rule. Output like that makes your fingers itch — "this basically means not trading, maybe loosen it a bit". I did not. This table means something precisely because I did not touch the decision the tool made.

⑤ Place the order again — rebuild the document with the corrected numbers (6 nodes, same shape), write a new rationale, and put up a new strategy container. Green light, "entry condition not met — waiting normally." The loop closed — judgment → rule → resident execution → record → judgment again → resident execution again. And the time InvestSkill had to be switched on across that loop was three moments of judgment, nothing more. (I confirmed the new container came up waiting, then stopped and deleted it — with an unreachable entry line it was a rule that would not have traded anyway.)

How that one share ended

Switching to the new rule at checkpoint 2 meant stopping the previous container, and a stop flattens the position.

02:06:11 KST  buy  1 @ 226.662662   (expected 226.63)  fee 0E-8
02:45:20 KST  sell 1 @ 227.217274   (expected 227.25)  fee 0.00468068 USD
realized_pnl 0.554612 · fees 0.00468068 → net +0.54993132 (+0.0055%)

39 minutes, one share, 55 cents of net profit. That number proves nothing — the tool itself wrote as much ("a small unrealized gain should not be treated as proof that the rule was profitable"). What is worth having is the numbers next to it.

Value
Round-trip slippage Entry +0.032662 (1.44bp) · exit −0.032726 (1.44bp) — adverse on both sides
Against the expected edge 0.62 if it had gone as expected, 0.554612 actually → slippage took 10.5%
Fees Buy 0, sell 0.00468068 USD — the US equity schedule charges only on the sell, so it lands on one side

These are numbers that do not exist in InvestSkill's world. It hands you three prices and has no way to say whether those prices actually fill, how far you get pushed, or where the cost lands — because it has no execution engine.

What snagged along the way — all of it on weltiq's side

What snagged What happened What I did
Order limit of 1 The default order cap of 1 at the time meant 44 shares was rejected all 1,159 times Corrected the boundary truthfully and let the tool re-decide at 1 share. Fixed on 2026-09-23 — the document's sizing.qty is now the order cap
The resident engine did not know the new blocks The running engine did not know the price_level and price_exit blocks that /v1/ai/formalize had picked, so it failed to attach with KeyError: 'price_level' Rewrote the same rule in the grammar that engine does know (6 nodes). The engine was running on code from before those blocks were added
Ledger currency label A US equity fill, yet the export's ledger comes out as "ccy": "USDT". reconciliation.matched is false too Not fixed in this article; shipped as it is. The P&L and fee numbers themselves agree with performance and the fill records

And one mistake of my own — as noted in section 3, I wrote the candle API parameter as limit and so gave the tool no daily bars. I found out because the tool caught it.


6. After using it

What was good

What fell short

Cost

Item Value
Code Free (MIT · 0 API keys · no subscription)
Model Only the LLM calls your own agent makes
Time · disk 1.709 seconds to install · 27 markdown files, 1.0MB

7. What to do next

Part 10 is NautilusTrader (★29.2k). If InvestSkill is the extreme of "no runtime", NautilusTrader is the opposite end — an execution engine with a Rust core and a nanosecond event bus, and not one prompt. The reason for covering it is not performance but that it implemented the principle that backtest and live must run on the same code first, and above all that it wrote down, in its own documentation, the differences that remain even after doing so.

Getting weltiq ready — 3 lines 1. Sign up: {{CTA_URL}} 2. My page → Connections, issue an API key 3. claude mcp add weltiq --header "Authorization: Bearer <key>" https://weltiq.ai/mcp

This is where to put InvestSkill's three prices on top of real costs and fills.


Every command, output and number here was actually run on 2026-09-22. All orders are simulated and none of this is a trading opinion. The raw prompts, responses and logs are in the verification record.

Tony Brown · 2026-09-24