Frequently Asked Questions

All Adjustments & Taxes Data & Methodology Performance & Statistics Practical Use Strategy Concepts Strategy Mechanics General

Practical Use

How do I actually trade these signals?

The published track record assumes a specific and quite simple execution: you hold each month's target allocation for the whole month, and you move to the next month's targets at the month-end close. Everything on this site is built on that assumption.

Nobody trades exactly that way. Understanding where your execution differs from the model is most of what determines whether your account tracks the published curve.

The monthly rhythm

  1. Signals are computed from month-end closing prices. Nothing partial, nothing intraday.
  2. The resulting allocation is for the month ahead. It appears on the site the evening the month closes, once the day's data has settled.
  3. You trade into those targets. In practice this means at or near the open of the first trading day of the new month.
  4. You hold. Unless the strategy uses drift bands, no action is needed until the next month-end.

The gap between step 1 and step 3 is where reality enters. The model buys at the previous close; you buy the next morning at whatever the market opens at. Sometimes that helps you, sometimes it hurts, and over many months it mostly washes out. It does not disappear, though, and it is the main reason two people running the same strategy get slightly different results.

Wait for the month to close

The Provisional row projects what next month's allocation would be if the current month ended today. It is genuinely useful for anticipating a change and getting mentally prepared for it.

It is not a trade instruction. Signals computed on a partial month can and do reverse in the final days. Trading a projection early means occasionally taking a position the strategy never actually called for, and then paying again to undo it.

Wait for the month to close and the allocation to settle.

Not every month requires a trade

Some months the targets are unchanged and your holdings have drifted only slightly. Some strategies deliberately let positions run and only trade when a holding wanders outside a set band.

Do not manufacture activity. The published results already account for holding without trading, and adding trades the strategy did not call for only adds cost. See the Trading Friction FAQ for how the model distinguishes drift from an actual trade.

Costs the model assumes

Trading Friction charges each fund its own published bid/ask spread, in full, on every buy and every sell. For large, liquid ETFs, leveraged ones included, that is about 1 to 2 basis points; smaller funds cost more, and thinly traded ones 20 basis points or more. Earlier decades carry a higher minimum, and every trade costs more when markets are stressed. See the Trading Friction FAQ for the details.

You can do better or worse. Limit orders in calm conditions cost less. Market orders at the open, when spreads are at their widest, cost more. Small accounts trading illiquid leveraged funds can cost considerably more. If your execution is habitually worse than the model assumes, your results will drift below the published curve for reasons that have nothing to do with the strategy.

Account type matters

These strategies rotate, and rotation realizes gains. In a tax-deferred account that is irrelevant. In a taxable account it is a real and recurring cost.

The Taxable Account toggle and the Tax Profile panel exist to let you see the size of that difference for a given strategy before you commit to running it somewhere it will be taxed.

AutoPilot

Some strategies are available through AutoPilot, which handles execution rather than leaving it to you. The strategy page indicates whether a given strategy is supported. It removes the timing and discipline problems described above, which for many people are the largest source of tracking difference.

Where real accounts diverge from the published curve

Ranked roughly by how much damage each one does:

  1. Skipping signals. Deciding not to take a defensive move because it feels wrong, or not to re-enter because it feels early. This is by far the biggest one, and it is the reason a rules-based strategy exists at all.
  2. Trading late. A signal acted on a week into the month is a different position than the one the model held.
  3. Partial implementation. Running the strategy with part of the account and something else with the rest produces neither result.
  4. Execution costs above what the friction model assumes.
  5. Fractional share and rounding differences. Small and unavoidable.

Note that the first three are behavioral, not mechanical. The published record assumes a level of discipline that is genuinely hard to sustain through a stretch where the strategy is behind.

One caution

None of this is personal financial advice. It describes how the published signals are constructed and how they were assumed to be executed. Whether any strategy is appropriate for you, and how much of your money belongs in it, are questions this site cannot answer.

Permalink to this answer → Last updated October 13, 2026
How do I set up DMS → AI Agent → Brokerage?

DMS → AI Agent → Brokerage is a Premium feature. Your own AI agent reads a DMS portfolio's target weights, reads one of your brokerage accounts, works out the difference, and trades.

Most members set it to run automatically. You create a daily scheduled task in your own AI app (Step 6). On most days it checks and does nothing. After each month-end, it trades the new allocation, with no action from you.

You can run more than one account. Each account gets its own connection on the DMS side and its own scheduled task in your AI app. A connection is just a DMS portfolio with a name you choose.

Your AI app needs two connections, not one. One to your brokerage, which you set up with your broker, and one to DMS. For example, Claude Cowork connected to both. DMS provides only the second. If your broker does not offer an MCP connector for AI agents, this feature cannot work with that account.

Free Claude or a paid AI plan?

There are two ways to run this. Choose which one at the top of the panel in My Account; your connections are the same either way, so you can switch at any time.

Free Claude account: run it by hand. A free Claude account allows one custom connector, and your broker needs it. So DMS is not connected as a connector. Instead, each of your connections has a private link, and your agent reads your targets from it. After each month-end you open a new chat, paste the free-account instructions, and send. Your agent shows its plan and waits for your OK. Nothing happens unless you run it.

Keep private links private. Each one can read that connection's targets, though never trade. Paste it only into your own AI chat, and select Reset link on the card if you think one has leaked; the old one stops working at once.

Paid AI plan: let it run itself. With a paid plan, DMS connects as its own connector alongside your broker's, and a scheduled task can check every day and trade after month-end with no action from you. Claude Pro and above is the tested setup; ChatGPT and Grok may work but are untested with DMS.

The rest of this guide covers both. Where they differ, it says so.

What DMS does and does not do

DMS never places trades. Your agent does, on the schedule you set in your AI app. If you do not set a schedule and do not run it yourself, nothing happens, and your account keeps last month's allocation.

DMS is not connected to your broker. There is no link between the two. DMS publishes your target weights at a private address, and your agent reads them. DMS cannot see your account or your balance, cannot tell whether your agent ran, and cannot place, cancel or reverse a trade. Your agent is the only thing that sees both sides.

DMS cannot check that you paired things correctly. You tell your agent which DMS connection to read. If you name the wrong one, DMS has no way to know, and your agent will trade the wrong allocation without anything looking broken. Step 4 is about getting that right.

DMS is not affiliated with any broker.

Which brokers work

Any broker whose own MCP connector your AI app can use. As of this writing that includes Robinhood, Interactive Brokers and Webull, and the list changes as brokers ship connectors.

Brokers differ in what they let an agent do. Some let it submit orders directly. Others stage the orders for you to confirm in the broker's own app. Both work with DMS; the agent instructions handle either, and your report says which happened.

Check your broker's own rules before you start, including which account types they allow an agent to act in. That is the broker's decision, not ours, and it changes.

Who can use it

  • You must be 18 or older with a legal US residential address.
  • The account must be your own, for your own self-directed investing. You may not use this to trade or manage money for anyone else, or share or redistribute your credentials.
  • Whether a retirement account can be used is up to your broker and your AI provider. DMS does not restrict it. If they permit agentic trading in an IRA, so do we, and the tax consequences of trading inside it are yours to understand.
  • Up to five connections per member.

What you need

  • A DMS Premium subscription, and access to the email address on your DMS account (we send confirmation codes there)
  • A brokerage account at a broker with an MCP connector, opened and funded
  • An AI app. A free Claude account works for running it by hand. For automatic runs you need a paid plan with custom connectors and scheduled tasks; Claude Pro or higher is the tested setup.
  • A desktop computer for the broker setup

If you do not already pay for an AI plan, adding one costs more per year than AutoPilot, which handles scheduled execution for you with none of this setup. AutoPilot is the better choice for most people.

Step 1 - Decide what each account should follow

Every published DMS strategy can be used except Profit Farmer and Profit Farmer w/Gold, which have their own page.

You can pick a single strategy at 100%, blend several, or start from a portfolio you already saved in the Custom Portfolio Builder. You build the blend inside the MCP panel itself, using the same builder you already know, so nothing has to be saved first.

About 300-tier strategies. Catalyst 300, Global Navigator 300 and LT Gain 300 can hold up to 300% notional exposure through 3x leveraged funds. As noted on their strategy pages, they are designed to be used as a sleeve within a portfolio rather than as a whole portfolio. Leveraged funds also drift quickly, so expect your agent to rebalance a 300-tier sleeve more often than the rest of your portfolio. Whether and how much to use them is your decision.

Step 2 - Accept the terms

Open My Account, then DMS → AI Agent → Brokerage.

  1. Read the terms. The checkbox unlocks when you scroll to the end. Tick it, then select Accept and continue.
  2. We email you a 6-digit code. Enter it to confirm it is you.

A token also appears, shown once. You only need it if your agent uses the direct feed instead of the DMS connector (see Step 4). If you might, copy it somewhere safe.

Step 3 - Add a connection for each account

Select Add a connection. Then:

  1. Name it after the brokerage account it is for. "Roth at Webull", "IBKR taxable". The name is how your agent asks for it, and it is the only thing tying a portfolio to an account, so make it unmistakable.
  2. Optionally use Start from to copy in a DMS strategy at 100% or one of your saved portfolios, then adjust the weights.
  3. Make the weights total 100% and select Use for this connection.

Repeat for each account you want to run, up to five.

Each connection keeps its own copy of the weights. Starting from a saved portfolio copies it once. Editing or deleting that saved portfolio afterwards does not change what any agent trades. To change what an agent trades, edit the connection.

One connection is the default. It is what the direct feed serves when an agent asks without naming a connection. If you only use the DMS connector, the default does not matter.

Confirmation emails. Adding, changing, renaming or removing a connection, changing the default, resetting a private link, generating or rotating a token, connecting an app, and revoking each send you an email naming the connection involved. If you receive one for a change you did not make, change your DMS password and select Revoke and disconnect all. Revoking and removing never need a code.

Step 4 - Connect your AI app to your broker and to DMS

Your AI app needs two connectors. Do the broker first: it is usually the bigger job, and without it nothing else here can run.

First, your broker. DMS cannot do this part for you and never sees it. Follow your broker's own instructions for AI or agentic trading. Typically that means:

  • Enabling agentic or AI trading in your broker account settings. Some brokers require you to open and fund a separate account for this.
  • Getting the connector address your broker publishes for AI apps.
  • Adding it in your AI app, the same way you will add DMS below, and completing your broker's own sign-in.

When it works, your AI app can list your brokerage accounts. If it cannot, stop here and sort that out with your broker; DMS cannot help from this side.

On a free Claude account, stop here. Your broker is using your one custom connector, so you do not add DMS. Instead, with Free Claude account selected at the top of the panel, fill in each connection card's broker and account and select Copy agent instructions. That gives you the free-account instructions already filled in for that connection. Skip to Step 5.

On a paid plan, then connect DMS. Add a custom connector with this address:

https://dualmomentumsystems.com/mcp

In Claude, open Customize, then Connectors, select +, and paste the address. When your app asks, sign in with your DMS account, enter the 6-digit code we email you, and select Approve. The app then appears under Connected apps in My Account, where you can disconnect it at any time.

Use the address exactly, without www.

Then give your agent the DMS Agent Instructions. Paste them into your agent or scheduled task. Do not tell your agent to fetch them from our site each time.

Copy them from the connection card. Each card has a small form: your broker (Robinhood, Interactive Brokers, Webull, or type another), the account, and whether to show you the plan first or trade without asking. Then Copy agent instructions gives you the full instructions with the header filled in for that connection. Your broker and account details are saved in your browser only; DMS never receives them. Describe the account by nickname or last 4 digits, never the full number.

Using Claude Code, Codex or another agent that runs code? Instead of the connector, it can call the direct feed at https://dualmomentumsystems.com/agent-feed.php?portfolio=YOUR_CONNECTION_NAME with your token in an Authorization: Bearer header. Paste your token into the instructions where they say YOUR_TOKEN_HERE, and allow dualmomentumsystems.com in the app's network settings. Your token works like a password to your target weights: it cannot trade, but keep it private.

Step 5 - Test before you automate

The instructions start with Run mode: AUTOMATIC, which means your agent places trades without asking. For your first run, tell it to hold off:

  1. Ask your agent to fetch your DMS targets and report them without trading. Check it names the connection you expected, then compare the targets with this month's allocation on the DMS site, not the Provisional row, which is a projection of next month.
  2. Ask it to show the order plan first. Check the plan looks sensible for the right account, then tell it to go ahead. This places your first allocation.

Do this separately for each account. Getting two tasks crossed is the mistake worth spending five minutes to rule out.

Step 6 - Set it to run automatically (paid plans)

On a free Claude account this step does not apply. Instead, after each month-end, open a new chat, paste your saved instructions, and send.

  1. Create a scheduled task in your AI app, one per account. In Claude, open Cowork and choose Scheduled in the sidebar. Scheduled tasks run in the cloud, so your computer does not need to be on.
  2. Set it to run daily. DMS allocations change monthly, but most apps have no monthly option. Daily is safe: when the account already matches its targets, the agent does nothing.
  3. Paste the instructions copied from the connection card into the task. Start with I want to approve trades. Once a run looks right, switch the card to Trade without asking, copy again, and replace the task's instructions. With approval on, a scheduled run reports its plan and waits for you. Some AI apps, Claude among them, may still stop before placing real trades in a scheduled run even with Trade without asking; see When something goes wrong.
  4. Let the task act without stopping. Set your AI app to use the DMS and broker connectors without asking each time; in Claude, choose to always allow them when prompted. On Claude Team or Enterprise plans, an admin may need to allow custom connectors. If your broker asks you to approve each trade, a scheduled run cannot answer, so either turn that off or expect staged orders you confirm yourself.
  5. Check the first scheduled run. Open its results and confirm it reached both DMS and your broker, and that it names the connection you expected. A run that cannot reach the broker has checked nothing, and the instructions make it say so. If the report says there is no broker connection, go back to Step 4: the broker connector is missing from your AI app.

What happens each day: most days the report says no trades are needed. After the last trading day of each month, DMS publishes the new allocation overnight, and your next scheduled run sells what is no longer held, then buys the new targets. If a run fails, the next day's run catches up.

Live prices on the last trading day. DMS updates next month's provisional allocation with live prices at about 1:30, 2:30 and 3:30 PM Eastern on the last trading day, and an agent that asks for next month gets the latest of these, the same figures the Provisional row on the DMS site shows. Its report says the time of the prices and how likely each strategy's allocation is to hold through the close. To trade near the close, schedule the task for about 3:40 PM Eastern so it picks up the 3:30 update. Before the first update of the day, it gets the previous day's close. If you would rather not trade on an estimate at all, leave it to run after the close: from about 6:20 PM Eastern your agent gets next month's allocation by itself, and the month is finalized shortly after midnight Eastern.

What to check, and how often

  • Monthly, when your DMS digest email arrives. The allocation month has turned over. Check each account reflects the new allocation within a few days.
  • "Last used" in My Account, shown for each connected app (and for your token if you use the direct feed). This is the only sign DMS has that anything is running. With a daily schedule it should update every day. If it stops, your scheduled task has stopped.
  • Your AI app's scheduled task history. Each run's report starts with a one-line summary and names the connection and account it used.
  • Your broker's activity. The trades appear there like any others.

When something goes wrong

Your agent says the private link is not valid (free accounts). The link was reset, the connection was removed, or you turned the feature off and on again, which replaces every link. Copy the instructions from the connection card again.

Your agent says it may have been given a cached copy (free accounts). The response it got was more than a day old. Start a new chat and try again.

Your agent says there is no broker connection. Your AI app has DMS connected but not your broker. DMS cannot fix this; add your broker's connector in your AI app as in Step 4.

Nothing traded after month-end. Check the task's latest report. If it says it showed a plan and stopped, the first line reads Run mode: ASK FIRST (or is missing); change it to Run mode: AUTOMATIC. If it staged orders, confirm them in your broker's app. If it waited for an approval, see Step 6, item 4. If it could not reach DMS or your broker, reconnect that connector (for DMS, check it still appears under Connected apps in My Account). If there is no report at all, the task did not run.

Your agent says it must name a portfolio. You have more than one connection and the task's Portfolio: line is missing. The error lists your connection names. The Task line on each connection card in My Account shows the exact line to use, or copy the instructions from that card again.

Your agent says there is no portfolio by that name. The name in the task does not match a connection, usually because it was renamed or typed by hand. Copy the instructions from the connection card again rather than editing the name by hand.

Your agent traded the wrong allocation. Check the Portfolio: line in that task. Two tasks pointing at the same connection is the usual cause. DMS cannot detect this, which is why the instructions make your agent report the portfolio label it used.

Your agent says the portfolio cannot be traded. It will name the reason, usually a strategy from the list in Step 1.

Your agent says it must sign in to DMS again. The app was disconnected, the connection went unused for 90 days, your Premium membership lapsed, or our terms changed and you have not re-accepted them. Check My Account first, then reconnect the DMS connector in your app.

Your agent says the token is invalid (direct feed only). You may have rotated or revoked it. Generate a new one and update your tasks.

Your agent says the data is stale. If the allocation data has not updated in four days, the feed refuses to serve rather than let your agent trade on old numbers. Contact us if it persists.

Your agent says order entry was blocked by a permission check. Some AI apps, Claude among them, may refuse to place real trades during a scheduled run with nobody watching, even with Trade without asking. This is your AI app's safety setting, not DMS, and your agent was right to stop. Open that run in your AI app and tell your agent to place the plan, then approve when asked. If it keeps happening, set the card to I want to approve trades, copy the instructions again and replace the task's instructions: each scheduled run then prepares the plan and waits for you.

Your results do not match the site. Expect some difference. Published figures are backtested and do not include your trading costs, timing or partial fills. A large gap is worth reporting.

The confirmation code did not arrive. Check your spam folder, then select Send a new code. You can request one a minute.

Honest limitations

  • We cannot see whether your agent ran, what it traded, in which account, or whether it traded correctly.
  • We cannot check that you paired a connection with the right brokerage account. That is yours to get right.
  • AI agents make mistakes. They can misread instructions, invent tickers, size positions wrongly, or act on stale data.
  • This is documented but not supported. We cannot help debug your AI platform or your broker connection.
  • No broker supervises, audits or endorses any agent or strategy.
  • Performance shown on this site is hypothetical and backtested. Your results will differ.

If any of that is uncomfortable, AutoPilot does this for you, and we would rather you used it.

Permalink to this answer → Last updated October 31, 2026
What instructions do I give my agent?

Select Copy on the box below and paste the instructions into your AI agent or scheduled task. See the setup guide first.

One task per brokerage account. If you run more than one account, each gets its own scheduled task with its own copy of these instructions, and each names a different DMS connection.

The easy way: in My Account, on each connection card, choose your broker and account and how it should run, then select Copy agent instructions. You get these instructions with the header already filled in for that connection, ready to paste. Your broker and account details stay in your browser; DMS never receives them.

Copying from this page instead? Fill in the lines at the top before you run anything:

  • Run mode AUTOMATIC places trades without waiting for you; ASK FIRST shows you the plan and waits for your OK. For your very first run, use ASK FIRST whichever you settle on.
  • Portfolio must exactly match one of your connections in My Account. Each connection card shows it on its Task line, for example Portfolio: Main. Use that line exactly as shown.
  • Broker and Account are how the agent knows which account to work in. For Broker, the broker's name is enough, for example Robinhood. For Account, use the account's nickname as your broker shows it, or its last 4 digits, never the full number.
  • Month end is optional and starts as STANDARD. See below.

If you connected the DMS connector, nothing else is needed. If your agent uses the direct feed instead, replace YOUR_TOKEN_HERE with your token.

Right after you generate a token, the card's Copy agent instructions fills your token in too.

Paste the instructions rather than telling your agent to fetch this page. A copy you have read cannot change without you knowing.

Trading on the last day of the month. Next month's allocation is available to your agent on the month's last trading day:

  • After that day's close (from about 6:20 PM Eastern), your agent gets next month automatically. Nothing to set.
  • During that day, your agent can trade next month's allocation before the close. With Month end: STANDARD, it does this when you ask it to, for example "rebalance my account for October". With Month end: TRADE ON LAST DAY, it does it on its own whenever it runs that day, so a daily task scheduled for about 3:40 PM Eastern trades near the close without you.

Before the close, next month's allocation is provisional: it reflects DMS's latest live-price update that day (or the previous day's close before the first one), and it can change after the last day's close and again when the month is finalized shortly after midnight Eastern. Usually nothing changes. If something does, your next run corrects the difference.

Live prices on the last trading day. DMS updates next month's provisional allocation with live prices at about 1:30, 2:30 and 3:30 PM Eastern on the last trading day, and an agent that asks for next month gets the latest of these, the same figures the Provisional row on the DMS site shows. Its report says the time of the prices and how likely each strategy's allocation is to hold through the close. To trade near the close, schedule the task for about 3:40 PM Eastern so it picks up the 3:30 update. Before the first update of the day, it gets the previous day's close. If you would rather not trade on an estimate at all, leave it to run after the close: from about 6:20 PM Eastern your agent gets next month's allocation by itself, and the month is finalized shortly after midnight Eastern.

Run mode: AUTOMATIC
Portfolio: YOUR_PORTFOLIO_NAME
Broker: YOUR_BROKER
Account: YOUR_ACCOUNT
Month end: STANDARD

You rebalance one brokerage account to match one portfolio published by Dual Momentum Systems (DMS).

## Absolute rules

1. **Never compute a strategy.** Do not calculate momentum, rank assets, apply moving averages, or decide what to hold. The DMS endpoint gives you the target weights. Your job is arithmetic and order entry, nothing else.
2. **One portfolio, one account.** The Portfolio line names a DMS connection. The Broker and Account lines name one brokerage account. Every balance, position and order in these instructions refers to that account only. Your broker connection can probably see other accounts; never use totals across accounts, and never place an order in any other account.
3. **Never invent a ticker.** Trade only tickers returned by the DMS endpoint, spelled exactly as given. If one will not trade, stop and report it.
4. **Never guess past an error.** If anything is missing, stale, refused or unclear, stop and report. Doing nothing is always safe. Doing something approximate is not.
5. **Never choose a portfolio yourself.** If the Portfolio line is missing, or DMS does not recognise the name, stop and ask the member. Do not pick one from the list because it looks right.

## Run mode

The first line of these instructions is the run mode, set by the member.

- **AUTOMATIC:** the member has approved placing the orders in your plan without asking. Place them. Every rule in "Stop and report" still applies.
- **ASK FIRST:** after Step 5, show the order plan and wait for the member to approve it before placing any order. If no one is there to approve, for example in a scheduled run, report the plan and stop.

If the member asks you directly in the conversation to report only, or to show the plan first, do that for this run whatever the run mode says. If the run mode line is missing or unclear, treat it as ASK FIRST.

Some brokers do not let an agent submit orders at all, and instead stage them for the member to confirm in the broker's own app. If yours works that way, prepare the orders, stage them, and say clearly in your report that they are staged and waiting. Do not treat staged orders as placed.

## Month end

DMS decides which month's targets you get. You only ever ask for next month in the two cases below, and DMS refuses if it is not available.

- **STANDARD** (or the line is missing): request next month only when the member asks you in this conversation to trade next month's allocation, for example "rebalance for October" or "trade the new allocation".
- **TRADE ON LAST DAY:** on every run, if the first response has `next_month_tradeable_today` true, request next month and use that response instead.

To request next month: with the DMS connector, call `get_target_allocation` again with `month` set to `"next"`. With the direct feed, add `&month=next` to the address.

If a next-month request is refused with `next_month_not_available`, report the `detail` exactly as given and do not trade next month's allocation. Do not fall back to this month's targets unless the member asks you to.

After the close on the last trading day, DMS returns next month by default. You do not need to ask.

## Step 1 - Confirm both connections

Before anything else, confirm you can reach **both**:

- DMS: either the DMS connector (its get_target_allocation tool is available) or the direct DMS feed (Step 2)
- Your broker connection (you can list the member's accounts)

Then identify the account named on the Account line. If you cannot find it, or more than one matches, or you cannot tell which it is, stop and report. Do not guess.

If either connection fails, **stop and report the failure explicitly.** Do not report success. Do not conclude the account already matches its targets. A run that cannot see both sides has checked nothing.

## Step 2 - Fetch the target portfolio

**If the DMS connector is available, use it.** Call its `get_target_allocation` tool, passing the name on the Portfolio line as the `portfolio` argument. If the tool returns an error, report the `error` and `detail` exactly as given and stop.

If you are unsure the name is right, call `list_portfolios` to see the member's connections, report what you found, and ask. Do not choose one.

**Otherwise, use the direct feed:**

    GET https://dualmomentumsystems.com/agent-feed.php?portfolio=YOUR_PORTFOLIO_NAME
    Authorization: Bearer YOUR_TOKEN_HERE

URL-encode the portfolio name. Use this address exactly, and do not add www: that form redirects and the Authorization header is lost. If you get a redirect to a different address, do not follow it and retry; report it. The only change you may make to this address is adding `&month=next`, as described under Month end.

If neither the connector nor the feed works, stop and report it.

A successful result (from either) contains `portfolio`, `allocation_month`, `allocation_basis`, `next_month_tradeable_today`, `data_through`, `live_quotes_as_of`, `confidence_pct`, `data_is_final`, `feed_stale_hours`, `notional_leverage_pct`, `targets` (a list of `ticker` and `weight_pct`, summing to 100) and `notes`. Read the notes.

Then apply Month end above: if it calls for next month, request it now and use that result from here on.

## Step 3 - Check you were given the right portfolio

**Compare `portfolio.label` in the response with the Portfolio line at the top of these instructions.** If they do not match, stop and report both values. Do not trade.

This is the one check that catches the worst failure available to you: trading one account's allocation into a different account. It costs nothing and it is not optional.

The `targets` are the allocation for `allocation_month`. `allocation_basis` says which one you have:

- `current_month`: the allocation for this month.
- `next_month_after_close`: next month's allocation, after the last trading day's close. Trade it.
- `next_month_provisional`: next month's allocation, during the last trading day. Trade it, and say in your report that it is provisional and may change at month end. If `live_quotes_as_of` is set, it is based on live prices at that time; otherwise on data through the `data_through` close. If `confidence_pct` is present, include each strategy's percentage in your report.

`data_is_final` describes whether that month's performance data is complete. It is normally false. It does not affect whether to trade, so do not stop or ask because of it.

From the direct feed, on any status other than 200, stop and report the `error` and `detail` values exactly as given. Common cases: 401 token invalid, rotated or revoked; 403 Premium lapsed; 404 no connection by that name; 409 the request must name a connection, or next month is not available yet; 422 portfolio cannot be traded this way; 429 too many requests; 503 data too stale. Do not retry a 404, 409 or 422.

## Step 4 - Read the account

From your broker connection, for the **named account only**, get:

- **Total equity, including cash.** Not only the market value of positions. Every target percentage is a percentage of this number.
- Every current position, with ticker and market value.

## Step 5 - Decide whether to act

For each target ticker: target dollars = total equity x weight_pct / 100.

For each position: current weight = market value / total equity x 100.

**If every target ticker's current weight is within 2.5 percentage points of its target, and the account holds nothing outside the target list, do nothing.** Report that the account already matches and stop.

You may be run daily while DMS publishes monthly. On most days there is nothing to do, and doing nothing is the correct result. Do not trade to correct small drift.

If any ticker is outside the band, or any position is held that is not in the target list, rebalance the **whole** account to target.

## Step 6 - Place or stage orders

**Sell first, then buy.** Buying first can use up buying power and leave the account half rebalanced.

1. Sell in full any position not in the target list.
2. Sell down any position above its target.
3. Wait until buying power covers the purchases.
4. Buy up any position below its target.

Use fractional shares where available. Targets rarely come to whole numbers of shares.

In ASK FIRST mode, show the full order plan before placing anything (see Run mode). If your broker stages orders rather than placing them, say so plainly.

## Step 7 - Report

Start with a one-line summary, such as "No trades needed" or "Rebalanced: 4 sells, 5 buys", so a scheduled run is easy to check. Then state plainly:

- The DMS portfolio label you used, and the account you traded
- The run mode you used, and whether orders were placed or staged
- The allocation month and `allocation_basis`, and if provisional, that it may change at month end
- Every order placed or staged, with ticker, direction and dollar amount
- Any order that failed or only partly filled
- Final weights against targets
- `notional_leverage_pct`, so the leverage being run is visible

If you did nothing, say so and say why.

## Stop and report, do not proceed

- Either connection unreachable
- The named account not found, more than one match, or unclear which
- The Portfolio line missing, or not recognised by DMS
- `portfolio.label` in the response not matching the Portfolio line
- Any status other than 200 from the DMS endpoint, including `next_month_not_available` on a next-month request
- `feed_stale_hours` above 36: report it and ask before trading
- A target ticker that will not trade in the account
- Order rejections, insufficient buying power, or partial fills that leave any ticker more than 2.5 percentage points off target
- Anything that would require you to choose a holding, a portfolio or an account yourself

## What you are not asked to do

Do not judge whether the strategy is a good idea. Do not adjust weights for market conditions, valuation, news or your own view. Do not substitute a similar fund for one that is unavailable. Do not add hedges. Do not time entry.

If the targets look wrong to you, say so in your report, and do not act on that opinion.
Permalink to this answer → Last updated October 31, 2026
What instructions do I give my agent on a free Claude account?

These instructions are for a free Claude account, run by hand around each month-end. If you have a paid AI plan, use the standard instructions instead: they use the DMS connector and can run on a schedule.

Why a different set? A free Claude account allows one custom connector, and your broker needs it. So instead of connecting DMS, your agent reads your targets from a private link: a web address for one of your connections, shown on its card in My Account.

The easy way: in My Account, on each connection card, choose your broker and account and how it should run, then select Copy agent instructions (with Free Claude account selected at the top). You get these instructions with the header already filled in for that connection, ready to paste. Your broker and account details stay in your browser; DMS never receives them. The Portfolio and Feed lines come filled in as a pair, so the private link always matches its connection.

Copying from this page instead? Fill in the lines at the top before you run anything. Take the Portfolio name and the private link from the same connection card, and describe the account by nickname or last 4 digits, never the full number. Run mode starts as ASK FIRST, so the agent shows its plan and waits for your OK; you are there, so that costs nothing.

Keep your private link private. Anyone with it can read that one portfolio's targets. It cannot trade. If you think it has leaked, select Reset link on the card; the old one stops working at once.

When to run it. Open a new chat, paste these instructions, and send:

  • On the last trading day, before the close: add a line such as "Rebalance for next month" when you send. Your agent trades next month's allocation, which is provisional until the month is finalized: it reflects DMS's latest live-price update that day (or the previous day's close before the first one), and can change after the last day's close and again shortly after midnight Eastern. Usually nothing changes. If something does, running again later corrects the difference.
  • After the last trading day's close (from about 6:20 PM Eastern), or any time after month-end: just send. You get next month automatically.

Live prices on the last trading day. DMS updates next month's provisional allocation with live prices at about 1:30, 2:30 and 3:30 PM Eastern on the last trading day, and an agent that asks for next month gets the latest of these, the same figures the Provisional row on the DMS site shows. Its report says the time of the prices and how likely each strategy's allocation is to hold through the close. To trade near the close, send it after about 3:40 PM Eastern to get the 3:30 update. Before the first update of the day, it gets the previous day's close. If you would rather not trade on an estimate at all, leave it to run after the close: from about 6:20 PM Eastern your agent gets next month's allocation by itself, and the month is finalized shortly after midnight Eastern.

Run mode: ASK FIRST
Portfolio: YOUR_PORTFOLIO_NAME
Feed: YOUR_PRIVATE_LINK
Broker: YOUR_BROKER
Account: YOUR_ACCOUNT

You rebalance one brokerage account to match one portfolio published by Dual Momentum Systems (DMS).

## Absolute rules

1. **Never compute a strategy.** Do not calculate momentum, rank assets, apply moving averages, or decide what to hold. DMS gives you the target weights. Your job is arithmetic and order entry, nothing else.
2. **One portfolio, one account.** The Portfolio and Feed lines name one DMS connection. The Broker and Account lines name one brokerage account. Every balance, position and order in these instructions refers to that account only. Never use totals across accounts, and never place an order in any other account.
3. **Never invent a ticker.** Trade only tickers returned by DMS, spelled exactly as given. If one will not trade, stop and report it.
4. **Never guess past an error.** If anything is missing, stale, refused or unclear, stop and report. Doing nothing is always safe. Doing something approximate is not.
5. **Never use any other address.** Fetch the Feed line exactly as written. The only change you may make is adding `&month=next` to the end, as described under Next month. Do not search for DMS data, do not use another page, and do not repeat the Feed address anywhere except this conversation.

## Run mode

- **ASK FIRST:** after Step 5, show the order plan and wait for the member to approve it before placing any order.
- **AUTOMATIC:** the member has approved placing the orders in your plan without asking. Place them. Every rule in "Stop and report" still applies.

If the run mode line is missing or unclear, treat it as ASK FIRST.

Some brokers do not let an agent submit orders at all, and instead stage them for the member to confirm in the broker's own app. If yours works that way, prepare and stage the orders, and say clearly that they are staged and waiting. Do not treat staged orders as placed.

## Next month

DMS decides which month's targets you get. Ask for next month only when the member asks you in this conversation to trade next month's allocation, for example "rebalance for October" or "trade the new allocation". To ask, fetch the Feed address with `&month=next` added to the end.

If that returns `"ok": false` with `next_month_not_available`, report the `detail` exactly as given and do not trade next month's allocation. Do not fall back to this month's targets unless the member asks you to.

If the member did not ask, but the response has `next_month_tradeable_today` true, mention in your report that next month's provisional allocation can be traded today if they ask.

After the close on the last trading day, DMS returns next month by default. You do not need to ask.

## Step 1 - Confirm your broker connection

Confirm you can reach the broker connection and list the member's accounts. Then identify the account named on the Account line. If you cannot find it, more than one matches, or you cannot tell which it is, stop and report. Do not guess.

If the broker connection fails, **stop and report it.** A run that cannot see the account has checked nothing.

If any header line still reads YOUR_..., the member has not filled it in. Stop and ask.

## Step 2 - Fetch the target portfolio

Fetch the address on the Feed line, exactly as written, or with `&month=next` added if the member asked for next month.

If the fetch itself fails, stop and report exactly what happened. Do not retry with a different address.

The response is JSON. **Check `ok` first.**

- `"ok": false` means DMS refused. Report the `error` and `detail` values exactly as given, and stop. There are no targets in a refusal, so there is nothing to trade.
- `"ok": true` means you have targets. Continue.

A successful response contains `portfolio`, `generated_at`, `allocation_month`, `allocation_basis`, `next_month_tradeable_today`, `data_through`, `live_quotes_as_of`, `confidence_pct`, `data_is_final`, `feed_stale_hours`, `notional_leverage_pct`, `targets` (a list of `ticker` and `weight_pct`, summing to 100) and `notes`. Read the notes.

## Step 3 - Check you were given the right portfolio, and a fresh one

**Compare `portfolio.label` with the Portfolio line.** If they do not match, stop and report both values. Do not trade. This catches the worst mistake available here: one account's allocation traded into another.

**Check `generated_at`.** It is a UTC timestamp for when DMS produced this response. If it is more than 24 hours before now, you may have been given a cached copy. Stop and report it.

`allocation_basis` says which month you have:

- `current_month`: the allocation for this month.
- `next_month_after_close`: next month's allocation, after the last trading day's close. Trade it.
- `next_month_provisional`: next month's allocation, during the last trading day. Trade it, and say in your report that it is provisional and may change at month end. If `live_quotes_as_of` is set, it is based on live prices at that time; otherwise on data through the `data_through` close. If `confidence_pct` is present, include each strategy's percentage in your report.

`data_is_final` describes whether the month's performance data is complete. It is normally false. It does not affect whether to trade.

If `feed_stale_hours` is above 36, report it and ask before trading.

## Step 4 - Read the account

From the broker connection, for the **named account only**, get:

- **Total equity, including cash.** Every target percentage is a percentage of this number.
- Every current position, with ticker and market value.

## Step 5 - Decide whether to act

For each target ticker: target dollars = total equity x weight_pct / 100.

For each position: current weight = market value / total equity x 100.

**If every target ticker's current weight is within 2.5 percentage points of its target, and the account holds nothing outside the target list, do nothing.** Report that the account already matches and stop.

If any ticker is outside the band, or any position is held that is not in the target list, rebalance the **whole** account to target.

## Step 6 - Place or stage orders

**Sell first, then buy.**

1. Sell in full any position not in the target list.
2. Sell down any position above its target.
3. Wait until buying power covers the purchases.
4. Buy up any position below its target.

Use fractional shares where available. In ASK FIRST mode, show the full plan before placing anything.

## Step 7 - Report

Start with a one-line summary, such as "No trades needed" or "Rebalanced: 4 sells, 5 buys". Then state plainly:

- The DMS portfolio label you used, and the account you traded
- The run mode, and whether orders were placed or staged
- The allocation month, `allocation_basis` and `generated_at`, and if provisional, that it may change at month end
- Every order placed or staged, with ticker, direction and dollar amount
- Any order that failed or only partly filled
- Final weights against targets
- `notional_leverage_pct`

If you did nothing, say so and say why.

## Stop and report, do not proceed

- The broker connection unreachable
- The named account not found, more than one match, or unclear which
- A header line still reading YOUR_...
- The Feed fetch failing, or `"ok": false`
- `portfolio.label` not matching the Portfolio line
- `generated_at` more than 24 hours old
- A target ticker that will not trade in the account
- Order rejections, insufficient buying power, or partial fills that leave any ticker more than 2.5 percentage points off target
- Anything that would require you to choose a holding, a portfolio or an account yourself

## What you are not asked to do

Do not judge whether the strategy is a good idea. Do not adjust weights for market conditions, valuation, news or your own view. Do not substitute a similar fund for one that is unavailable. Do not add hedges. Do not time entry.

If the targets look wrong to you, say so in your report, and do not act on that opinion.
Permalink to this answer → Last updated October 31, 2026
What can I see without a subscription?

Almost everything. We don't hide our results the way many strategy sites do.

Every strategy's rules, full history, holdings over time, drawdowns, and risk statistics are open to anyone. You can compare strategies against each other or against a benchmark, and judge each one on its complete track record before deciding whether to follow it.

What Premium adds

Premium is about timing, not visibility:

  • Current-month allocations on day one. For Premium strategies, members see the current month's allocation and return as soon as they're published. Everyone else sees them on the 11th of the month.
  • The Provisional row. A projection of next month's allocation, showing what a strategy would hold if the current month ended today.

Everything else on the site works the same way regardless of account type. We think you should be able to evaluate a strategy thoroughly before deciding whether it's worth following.

Permalink to this answer → Last updated October 7, 2026