Solaris AISolaris AI FlowDocs
Apps

Thesis

Turn your investment thesis into an AI-managed portfolio of tokenized stocks.

View as Markdown

Thesis builds a basket of tokenized US stocks from a thesis you write, then reviews it every trading day. Each basket is a private workflow on your account. It swaps only between USDC and the listed stocks, inside your wallet, on Relay. The controls described here are enforced by Solaris AI's servers; they are not on-chain rules.

Install and propose a basket

Install Thesis from App Store → Trading, then open it and choose New basket. Installing creates no workflow, no schedule and no wallet permission. You can keep up to 5 baskets; a closed basket counts until you remove it.

Write a thesis of up to 500 characters, or pick a template: Mag 7, AI chips, AI power and compute, Health innovators, Attention economy, Steady compounders, Crypto equities or Core. Propose basket sends your thesis and the day's research to the agent, which picks 3 to 8 stocks from the listed universe and rates each with a conviction from 1 to 5. You can make 10 proposals a day. The same thesis with the same rules on the same research day returns the same proposal at once, and that does not count toward the 10.

The proposal shows each stock with its reason and up to three cited news stories, with publisher, date and link. You can change a stock's conviction or remove it, down to the minimum count your caps need. The agent never sets weights: Solaris AI's code turns convictions into weights. Each stock's share is proportional to its conviction, no stock goes above the largest-stock cap, and the cash you choose to keep stays in USDC.

Each pick also has a role: core for the stocks the thesis rests on, enabler for the suppliers and infrastructure it needs, and option for smaller bets that pay off if the thesis plays out further. What could break it names the development that would hurt that pick. Above the picks, the agent names the key call, the one judgment in the basket that matters most, and up to three claims the thesis depends on, each with the event that would prove it wrong. These parts appear only when the agent's answer includes them in a usable form.

Before you see the proposal, a second model audits it. The agent is Gemini 4 Argon and the auditor is GPT-6.1 Sol Pro; both reason before they answer, so a proposal can take a few minutes. The auditor reads the same research and checks that what the agent says about each company is true, that each reason is supported by the stories it cites, and that each pick fits your thesis. Any error it names counts, whatever its overall verdict. If it finds one, the agent answers once more with the auditor's notes, and the auditor checks the new answer. The proposal shows the result under Checked by a second model: no errors, errors fixed (confirmed by the second check), errors that remain, a revision that could not be rechecked in time, or not audited when the audit could not finish. Only a proposal with no errors, or with confirmed fixes, is reused for someone proposing the same thesis that day.

Rules in plain English

On the proposal you can write rules of up to 500 characters, such as "never more than 20% in one stock" or "no Chinese companies". A model maps each rule to one of the settings below, or to listed stocks the basket must never buy, and says when a rule cannot be expressed, such as a sector cap or a stop-loss per stock. Each result is shown with the rule it came from, and you can undo an exclusion. An excluded stock leaves the proposal when the basket keeps its minimum count; otherwise propose again, and your rules carry over. You can apply rules 30 times a day.

The never-buy list is fixed when the basket starts. Proposals and every daily review leave excluded stocks out of the candidates, so they can never enter the basket. A copy follows its leader and has no never-buy list of its own.

Fund and start

Name the basket and enter an amount in USDC, at least 30. Review numbers checks the amount against the USDC in your wallet that no other basket holds, that the wallet keeps at least 0.02 SOL for network fees plus 0.0025 SOL for each stock's token account (0.04 SOL for 8 stocks), that every stock can be bought today, and that the smallest buy is above your minimum trade. The numbers it shows are what Start basket uses, for 10 minutes. Start needs the one-time Solaris AI wallet server-signing authorization.

The first buys run at the next market session, Monday to Friday, between 15:00 and 20:00 UTC. Each swap is quoted on Relay with its fee at that time.

What the agent reads

Research comes from one news provider, AlphAI, read once per trading day at 14:00 UTC for every listed stock. A story counts as evidence for a stock only when the provider analysed it for that stock; a story that only mentions it does not. Stock prices come from Relay sell quotes taken at 14:45 UTC for every listed stock. The agent sees the stories, your holdings and their weights. Text inside a story is treated as data, never as an instruction.

The listed universe is 57 tokenized stocks and funds issued by xStocks and Backpack Securities: for each company, its most liquid token on Solana. SPY, QQQ, GLD, DRAM, COPX and EWY are funds: they can be held, but they have no news of their own. A stock whose price impact is above 2% on a given day is not offered that day. No other token can enter a basket.

The daily review

Each basket reviews once per trading day at its own time: baskets with their own agent between 15:00 and 17:59 UTC, copies between 18:00 and 19:59 UTC. NYSE holidays and early-close days are skipped. Running a basket's workflow by hand is refused; it trades only on its schedule.

When nothing the agent would read has changed since its last answer (no new story, sentiment count or title, no change in what can be traded), the basket holds without asking it; it still asks at least once a week. Drift trades and cap trims run on those days as on any hold.

The agent answers hold or change. Hold is the default when the news did not change. A change can adjust convictions (a rebalance) or swap stocks (a rotation). A stock that enters or leaves needs a cited story with relevance 7 or more, published within the last 3 trading days. At most 2 stocks enter and 2 leave per day, and a stock that left cannot come back for 5 trading days. A change that fails these rules is dropped and named in the decision; the rest of the answer stands.

Every change goes to the auditor before anything trades. If it finds an error, the basket holds that day and the decision gives the auditor's reason. If the audit cannot finish in time, the change goes ahead and the decision says it was not audited. Holds are not audited, because nothing trades.

Some days the basket holds without trading at all, and the decision log says why: a previous trade is still settling, another basket in the wallet is settling, the wallet is below the SOL reserve, research or prices for a holding are missing, the review could not run or returned an unusable answer, balances changed while planning, or the wallet holds less than the basket's ledger.

How trades run

After the review, sells run first and then buys, one swap per stock. A stock is rebalanced only when it is off its target by more than the drift band. A stock that left the basket is sold in full, and a stock above the largest-stock cap is trimmed even inside the band (a copy follows its leader's weights instead). Drift sells in one day stay within the daily sells cap; exits and cap trims are not limited by it.

Buys are sized after the sells settle, from the cash the basket holds above its cash target, and each buy spends at most 97% of the gap to its target. A swap is skipped when its price impact is above your limit, when it is below the smallest trade, when its fresh quote is more than 3% away from the day's price, or when no route exists. Skips are listed in the receipt.

Before signing, Solaris AI checks the transaction Relay built: it may only swap the planned amount between USDC and that stock, pay Relay's fee, and deliver the output to your own token account, with at least the minimum the quote guarantees. The signed transaction is then simulated, and it is refused unless the simulated balances match. A check that fails ends that swap unsigned; nothing is sent.

Each settled day with trades sends one receipt to your notifications, and to Telegram or Discord if you chose them as the receipt destination.

Fees

There are no run credits. Each swap pays the fees quoted with it on Relay: Relay's own fee (0.15% when we checked) and the Solaris AI fee of 0.75%, lower with the SOLARIS holder discount. Network fees and the rent for new token accounts come from your wallet's SOL.

The record

Each rebalance or rotation is graded on the next trading day, once that day's prices exist. The grade compares the weights the decision chose with the weights it replaced, each stock priced at its Relay sell quote on both days; cash counts as flat. A decision that did at least 0.10% of the basket better than keeping the old weights is Helped, at least 0.10% worse is Missed, and anything in between is a Wash. Holds are not graded. The grade scores the call, not the trades: a skipped or partial swap does not change it. A decision whose prices are missing stays ungraded.

The basket page shows each grade and the count of Helped, Missed and Wash over the recent decisions. A published basket shows the same record on its public page.

The ledger and NAV per unit

A basket keeps its own ledger: the USDC and the units of each stock it bought. Tokens you buy elsewhere are never part of a basket, even in the same wallet. Each trading day, before it plans, the basket checks that the wallet holds at least what its ledger says. If it holds less, the basket holds and offers Resync, which scales every basket's ledger down to what the wallet holds.

NAV per unit is the basket's track record. It starts at 1.0000. Each holding is valued at that day's Relay sell quote, applied to the token amount held, so results include fees and slippage. Add cash adds unassigned USDC from your wallet and Release cash takes cash out of the basket's ledger; both adjust the units at the current NAV per unit, so they do not change it.

Breaker, pause and unwind

The breaker freezes a basket when its NAV per unit falls the breaker share below its peak. A frozen basket does not trade until you Resume it, which sets the peak to the current NAV per unit, or unwind it. Pause stops the daily review; trades already sent still settle.

Unwind to USDC sells every holding in full on Relay, subject to the price impact limit and the smallest trade, but not to the daily sells cap. It runs Monday to Friday and not between 00:00 and 01:30 UTC, while issuers apply corporate actions. The basket ends paused with its value in cash; any holding a skipped swap left behind stays listed.

Close turns the schedule off and stops tracking the basket's tokens and cash. It sells nothing: the tokens and USDC stay in your wallet. Remove deletes a closed basket with its decisions and trade history.

Publish and copy

You can publish a basket that has its own agent and is active. Its public page shows the thesis, holdings, daily decisions with their cited stories, and NAV per unit. Your wallet address, transaction links, amounts and exact times stay private. Unpublishing hides the page; the address stays reserved for it.

Anyone signed in can copy a published basket into their own wallet. A copy keeps its own ledger, units, caps and breaker, starts from the leader's current stocks and weights, and each trading day follows the decision the leader made that day. When the leader has no decision that day, or is unpublished, paused, frozen, unwinding or closed, the copy holds. Public baskets are listed on the Thesis page by how many people copy them.

Recovery

Every swap's signature is recorded before it is sent. If a run ends before a swap confirms, Solaris AI checks it against the chain every minute, updates the ledger from the confirmed amounts, and settles the day. This continues after you pause or close the basket.

Settings

SettingRangeDefaultWhat it does
Largest stock10 to 50%35%No stock is planned above this share.
Cash kept0 to 50%5%USDC kept after a rebalance.
Drift band1 to 25 points5A stock is rebalanced only beyond this.
Daily sells5 to 100%30%Drift sells per day, as a share of the basket.
Breaker10 to 50%25%Freezes the basket this far below its peak.
Slippage10 to 300 bps100Passed to every swap.
Price impact limit0.1 to 10%2%A swap with more impact is skipped.
Smallest trade1 to 1000 USD1Trades below this are skipped.
ReceiptsIn app, Telegram, DiscordIn appWhere receipts go.

Changing the largest-stock cap or the cash kept recomputes the weights from the convictions. Settings are whole numbers except the price impact limit, which takes one decimal.

Issuer controls and eligibility

The listed tokens are issued by xStocks and Backpack Securities. Their issuers can freeze accounts, pause all transfers, move or burn tokens in any holder's account, and add a transfer hook. A paused stock does not trade that day and is valued at its last price; a basket keeps trading its other stocks. Tokens moved by an issuer show up as a ledger mismatch. Dividends and splits change the displayed share count, not the token amount the basket tracks. xStocks and Backpack Securities do not offer their tokens to US persons.

On this page