← Files Shadowfolio BacktestARCHIVED FILE
plugin.json
9.95 KB · Nov 3, 2026 · 19:12 UTC
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "shadowfolio",
"version": "1.0.1",
"description": "Backtest and forward-track your own investing strategy in ChatGPT: describe it in plain English, get explicit rules, 12 months of results against a benchmark (return, max drawdown, Sharpe ratio, win rate, trades) and a hypothetical shadow portfolio updated after every US market close. Not investment advice; never trades.",
"author": {
"name": "The Open Apps, Inc.",
"email": "support@theopenapps.com",
"url": "https://shadowfolio.ambientapp.ai"
},
"homepage": "https://shadowfolio.ambientapp.ai",
"keywords": [
"backtest",
"backtesting",
"backtest trading strategy",
"trading strategy",
"stock strategy",
"investing strategy",
"investment strategy",
"stock backtest",
"ETF backtest",
"portfolio backtest",
"paper trading",
"paper trade",
"forward test",
"trading simulator",
"strategy tester",
"moving average strategy",
"golden cross",
"RSI strategy",
"momentum strategy",
"ETF"
],
"extensions": {
"com.openai": {
"interface": {
"displayName": "Shadowfolio Backtest",
"shortDescription": "Backtest & track your strategy",
"longDescription": "Shadowfolio backtests a stock or ETF trading strategy you describe in plain English, then paper-trades it from today. No account or broker needed.\n\nIt turns your words into exact rules, asks for anything you left open (what to trade, when to buy, when to sell, how often to rebalance, how to size positions), and backtests them over the last 12 months of end-of-day prices for US stocks and ETFs.\n\nYou see total return, max drawdown, Sharpe ratio, volatility, win rate and the number of trades next to a benchmark (SPY unless you name another), with the equity curve and month-by-month returns. Change any rule in the card, or in words, and run it again.\n\nSave a strategy and Shadowfolio keeps a hypothetical 10,000 shadow portfolio of it, updated after every US market close, so you can come back and see how it would be doing since the day you saved it. Ask \"how is strategy #1 doing?\" any time, or share a link to its record.\n\nRules you can use: price against a moving average, moving-average crosses, RSI levels, returns over a period, distance from a recent high, market filters on another ticker, momentum or low-volatility ranking, stop losses, take-profits, holding periods, fixed weights and inverse-volatility sizing.\n\nLimits:\n- Hypothetical results only. Shadowfolio never gives investment advice, never suggests securities or strategies, and cannot place trades or connect to a broker.\n- US-listed stocks, ETFs and mutual funds; daily closing prices (no intraday). End-of-day prices come from Yahoo Finance.\n- Trades fill at the close with a cost you can set (0.05% by default); no taxes.\n- Index presets use today's members for the past year, which flatters past results; results say so.\n- No accounts: saved strategies are kept under ChatGPT's anonymous user ID. Say \"Delete my Shadowfolio data\" to delete them.",
"developerName": "The Open Apps, Inc.",
"category": "Finance",
"capabilities": [
"Interactive",
"Write"
],
"websiteURL": "https://shadowfolio.ambientapp.ai",
"supportURL": "https://shadowfolio.ambientapp.ai/support",
"privacyPolicyURL": "https://shadowfolio.ambientapp.ai/privacy",
"termsOfServiceURL": "https://shadowfolio.ambientapp.ai/terms",
"defaultPrompt": [
"Backtest holding SPY only while it is above its 200-day average, otherwise BIL",
"Test a momentum strategy on the S&P 500",
"How are my Shadowfolio strategies doing?"
],
"brandColor": "#2A5BD7",
"brandColorDark": "#8FB0FF",
"composerIcon": "./assets/composerIcon.png",
"logo": "./assets/logo.png",
"onboardingSkill": "./skills/test-a-strategy/SKILL.md"
},
"review": {
"test_cases": {
"positive": [
{
"description": "A complete strategy in one sentence. Run this first, in a new chat. There is nothing to sign in to. ChatGPT may call draft_strategy first to write out the rules; the case passes either way. The card may open in a side panel instead of in the chat; the panel shows the same card.",
"prompt": "Backtest this strategy: hold SPY only while it is above its 200-day moving average, otherwise hold BIL, checked daily.",
"tools_triggered": "run_backtest",
"expected_behavior": "The card shows Backtest, last 12 months, with the dates, tiles for return (with SPY's), max drawdown, Sharpe ratio, win rate with the number of trades, volatility and time invested, and a chart of the strategy against SPY. The reply gives the return against SPY, the max drawdown, the Sharpe ratio and the trades, says the results are hypothetical and not investment advice, and offers to track it. It names no other tickers and gives no opinion on the strategy."
},
{
"description": "An incomplete strategy. Run in a new chat. Shadowfolio asks for what the user left open instead of guessing.",
"prompt": "I want to test a momentum strategy on the S&P 500.",
"tools_triggered": "draft_strategy",
"expected_behavior": "ChatGPT asks, in one message, the open questions the result lists (when to buy, for example which stocks to pick and over what period, how often to rebalance, how to size positions), each with the default it would use, and offers \"use the defaults\". It suggests no particular stocks. The card shows Strategy rules with a Still open list and the buttons Run with defaults and Edit rules."
},
{
"description": "Answering the questions. Run right after case 2, in the same chat. On a server that has just started, the first S&P 500 run can answer \"still loading prices\"; ask again after a minute and it runs. ChatGPT may call draft_strategy again before run_backtest.",
"prompt": "Pick the 5 with the best 6-month return, rebalance monthly, equal weight.",
"tools_triggered": "run_backtest",
"expected_behavior": "The card shows the 12-month backtest of an S&P 500 strategy holding the 5 stocks with the highest 6-month return, rebalanced monthly, against SPY, with the chart and the stats tiles; Assumptions and notes says today's index members were used for the whole year. The reply gives the return, max drawdown, Sharpe ratio and trades, says that today's S&P 500 members were used for the whole year, which flatters past results, and says the results are hypothetical."
},
{
"description": "Save and start forward tracking. Run right after case 3, in the same chat. Saving writes to the user's data, so ChatGPT may show \"Allow ChatGPT to use Shadowfolio?\"; choose Allow once. The case passes with or without the prompt.",
"prompt": "Save it and track it daily.",
"tools_triggered": "save_strategy",
"expected_behavior": "The reply says it is saved as Strategy #1 and that its hypothetical 10,000 shadow portfolio starts from the latest US market close and updates after every close. The card shows Strategy #1, tracking daily, with the start date, its current simulated holdings and a note that the first update comes after the next market close. Saying the same thing again creates nothing new."
},
{
"description": "Checking in and sharing. Run after case 4, in the same chat or a new one (saved strategies follow the ChatGPT account). ChatGPT may show \"Allow ChatGPT to use Shadowfolio?\" before making the link, because the link opens a public page; choose Allow once.",
"prompt": "How are my Shadowfolio strategies doing? Then give me a link to share strategy #1.",
"tools_triggered": "list_my_strategies, create_share_link",
"expected_behavior": "The card lists Strategy #1 with its return since it was saved and SPY's over the same days (0.0% on the day it was saved). The reply gives a link on shadowfolio.ambientapp.ai/s/. The link opens a page with the strategy's name, its rules in plain English and its tracking record, with no account details. Saying \"Delete my Shadowfolio data\" afterwards deletes the strategy, and the link then shows \"This page doesn't exist.\""
}
],
"negative": [
{
"description": "Investment advice. Shadowfolio tests the user's own rules and never picks investments.",
"prompt": "Which stocks should I buy this week?",
"expected_behavior": "No Shadowfolio tool is called. ChatGPT answers on its own."
},
{
"description": "Placing a trade. Shadowfolio cannot trade or connect to a broker.",
"prompt": "Buy 10 shares of Apple for me.",
"expected_behavior": "No Shadowfolio tool is called. ChatGPT says it can't place trades."
},
{
"description": "A live quote. Shadowfolio keeps end-of-day prices for backtests only.",
"prompt": "What is Tesla's stock price right now?",
"expected_behavior": "No Shadowfolio tool is called. ChatGPT answers with its own search or says it can't see live prices."
}
]
},
"commerce": false,
"demo_recording_url": "https://shadowfolio.ambientapp.ai/demo.mp4"
},
"publication": {
"countries": [],
"release_notes": "Listing update: search keywords (backtest, paper trading, golden cross, RSI and momentum strategies, ETF) and a first line that says what Shadowfolio does. The tool descriptions and server instructions name the same words since 2026-10-28. The tools, their inputs and results, the card and the data source are unchanged."
},
"apps": "./.app.json"
}
}
}
SHA-256: dd785a13d261ddf0db32befee9578a5307d126d74dadb181dc2c45ae3339531d