docs · v0.4 Buy $FADE
DOCUMENTATION

Do the opposite, on purpose.

Fadebook is an inverse copy trading terminal. You pick traders who are reliably wrong. When they buy, you sell. When they sell, you buy. These docs explain how a loser gets picked, how a trade gets flipped, and how to run the same logic yourself with fade.js.

Quick start

Everything the site does with orders lives in one small file with no dependencies: /lib/fade.js. Load it from this site and call Fade.invert() on any trade.

// Node or a bundler: download lib/fade.js next to your file first
const Fade = require('./fade.js');

const his = { side: 'buy', mint: 'TOPS…pump', usd: 4200, price: 0.0119, ts: Date.now() };
const mine = Fade.invert(his, { usd: 100 });

console.log(mine.side, mine.usd, mine.tp, mine.sl);
// → "sell" 100 0.008925 0.013328
NOTEThe library is a UMD file. In a browser it sets window.Fade, in Node it exports the same object. There is no npm package, the file on this site is the package.

How fading works

Copy trading follows people who are right. Fading follows people who are wrong, which turns out to be a much bigger and more consistent group. The loop has four steps, the same four you see on the home page.

  1. Find a loser. Every tracked wallet gets a fade score from 0 to 100. High score means they lose often, buy close to local tops and do it with conviction.
  2. Read the thesis. Every trade is a post. You see why they bought, so you know exactly what you are betting against.
  3. See the market. The chart puts their face on every buy. If the faces sit on the wicks, you are looking at a good fade.
  4. Fade. When their trade lands, invert() builds the opposite order with your own size, take profit, stop loss and trailing.

The loser cloud

The hero shows the 16 worst traders of the last 24 hours as bubbles. Bubble size is the size of the loss, so the biggest bubble is the person you most want on the other side of your trades. The top three get a rank badge, and the number one gets a gold ring he did not ask for.

Hover or tap a bubble to open the trader card: PnL, win rate, how many people are already fading them, and a Fade button.

Theses and the feed

Each trade comes with the trader's own reasoning. Fadebook does not edit it. Once you fade someone, their next thesis lands in your feed already flipped: their buy shows as your sell, with your size next to it.

The counter under a post, for example 64 faded this, shows how many people took the other side of that exact trade.

Faces on the chart

The market card draws candles for the token and pins the trader's avatar above every candle where they bought. It is the fastest way to judge a loser. If their faces sit at the top of the wicks across 5m, 15m and 1h, the score is earned.

The fade ticket

The ticket has one switch and one number.

ControlWhat it does
He buys, you sellDefault. Fades entries. Your order is a sell with take profit below entry.
He sells, you buyFades exits. Useful for traders who panic sell bottoms with the same precision they buy tops.
AmountFixed size in USD per fade. Presets $10, $50, $100, $500. Mirror sizing is available in the library.

Check a friend

Type any handle on the home page and Fadebook builds a profile: win rate, tops bought, bottoms sold, what they are still holding, and a fade score with a verdict. The same handle always gets the same result, so the verdict holds up in the group chat.

ScoreVerdict
90–100Perfect contrarian indicator
75–89Generationally wrong
55–74Reliably wrong
35–54Mildly wrong
0–34Annoyingly right. Do not fade

Liquidations

Sometimes a bubble pops. That is a trader getting liquidated, and the next worst trader on the bench inflates into the empty spot. The cloud always holds 16. There is never a shortage.

fade.js

One file, about 12 KB, no dependencies. It exposes:

MemberReturns
Fade.invert(trade, opts)A FadeOrder, or throws a FadeError
Fade.score(stats){ score, tier }
Fade.profile(handle)Deterministic loser profile for any handle
Fade.avatar(seed, opts)SVG string, the same faces as the site
Fade.usd(n, signed)"$647K", "-$4.2K", "+$38K"
Fade.rng(seed), Fade.hash(str)Seeded random and FNV-1a hash used everywhere above

Try it

This box runs the real library from /lib/fade.js.

invert(trade, opts)

Takes the trade you want to fade and returns the order you should place. Side is flipped. Take profit and stop loss are placed on the correct side for the flipped direction, so a fade sell takes profit below entry.

invert.js
const order = Fade.invert(
  { side: 'buy', mint: 'TOPS…pump', usd: 4200, price: 0.0119, wallet: 'Top…9000', ts: Date.now() },
  { sizing: 'mirror', ratio: 0.05, tp: 0.3, sl: 0.1, self: myWallet }
);
// order.usd === 210, order.side === "sell"
WARNINGPass self with your own wallet. If the wallet you are fading turns out to be yours, invert() throws E_SELF. It happens more often than you would think.

score(stats)

Combines three numbers into one. Win rate carries the most weight, then how often they buy local tops, then how close to the top they buy on average. Wallets with fewer than 40 trades are pulled toward 50, so one bad week does not make a legend.

score
raw   = (1 - winRate) × 0.55 + (topBuys / trades) × 0.30 + avgFromTop × 0.15
conf  = min(1, trades / 40)
score = round(100 × (0.5 + (raw - 0.5) × conf))

profile() and avatar()

profile(handle) returns the same object the home page shows when you check a friend: trades, winRate, topBuys, bottomSells, avgFromTop, pnl30d, holding, score, tier. It is seeded by the handle, so it never changes.

avatar(seed, {size, bg}) draws the face: 7 eye types, 5 mouths, 7 hats, 10 skin tones. Laser eyes are about one in seven, as in real life.

FadeOrder format

FieldTypeMeaning
vnumberFormat version, currently 1
side"buy" | "sell"Always the opposite of the source trade
mintstringToken mint, copied from the source
usdnumberYour size after sizing and maxUsd
entrynumber | nullSource price, if given
tp, slnumber | nullAbsolute prices when entry is known, fractions otherwise
trailingnumber | nullTrailing stop distance
slippageBpsnumberMax slippage in basis points
feeUsdnumber0.3% of size
sourceobject{ wallet, sig, side, usd } of the trade you faded
createdAtnumberUnix ms

Defaults

OptionDefaultNotes
sizing"fixed""mirror" uses trade.usd × ratio
usd100Fixed size per fade
ratio0.02Mirror ratio
maxUsd5000Hard cap per order
tp / sl0.25 / 0.120 turns either off
trailing0Off by default
slippageBps3003%
maxAgeMs90000Older trades are refused
feeBps300.3%

Errors

Every error is a FadeError with a code.

CodeWhen
E_SIDETrade side is not "buy" or "sell"
E_MINTTrade has no mint
E_SIZESize resolves below $1
E_SELFYou tried to fade your own wallet
E_STALESource trade is older than maxAgeMs
E_RISKStop loss outside 0–1

Limits

$FADE

$FADE is the token of Fadebook. Contract, chart and buy links below fill in automatically from the home page settings.

FAQ

Is fading just shorting?

On a spot token, a fade sell is selling what you hold, and a fade buy is buying what they dumped. You only fade in the direction you can actually trade.

Can I fade myself?

No. invert() throws E_SELF. Check a friend will still score you if you type your own handle, and the result is private between you and your screen.

What if everyone fades the same loser?

Then he becomes the most important trader on the chain. We do not know what happens next either.

Where do the faces come from?

They are drawn by Fade.avatar() from the handle. Nobody's photo is used anywhere on Fadebook.