Skip to main content
  1. Posts/

Once you open up that curiosity door, anything is possible

·1203 words·6 mins
pâtissier
Author
pâtissier

Recall this post I made about a month ago.

I saw a video on some engineer making trades on TQQQ and I started looking at doing the same.

Progress so far
#

Some bullshit results: Synthetic data
#

After much work, I was able to get to results that are at parity, and even beyond what the guy showed in the YouTube video. In the YouTube video, his strategy showed a 100X improvement simply buying and holding TQQQ, holding from inception until 2025.

Here’s my results:

2010 TQQQ

Raw results

This uses a synthetic TQQQ (just daily QQQ returns multiplied by 3, plus some drag). These graphs start at the dot-com boom bust, and they say:

  • If you buy and held a TQQQ at $1 at the beginning of the dotcom boom, you’d have $66.486 in Oct 2025.
  • From TQQQ inception to October 2025, you’d make 355X your money. This is a bit sanguine as in reality you’d only make around 260X.

Heavy optimism aside, the point is that the strategy beats B&H handedly. Instead of beating B&H 100 times, it beats it by roughly 156K times.

This is due to an artifact of using TQQQ as a derivation of QQQ: there is a lot of drag that isn’t considered, so synthetic TQQQ is a bit more optimistic. Interestingly, while the plot above shows synthetic TQQQ as an optimistic baseline, the TQQQ that derives the strategy curve is a bit more pessimistic

  def _apply_drag_from_real(
      syn_df: pd.DataFrame, real_df: pd.DataFrame, jitter: bool = True
  ) -> pd.DataFrame:
      overlap = syn_df.index.intersection(real_df.index)
      if len(overlap) < 100:
          return syn_df
      syn_log = np.log(syn_df.loc[overlap, "close"]).diff()
      real_log = np.log(real_df.loc[overlap, "close"]).diff()
      diff_log = (real_log - syn_log).dropna()
      extra = diff_log.mean()
      extra_std = diff_log.std()
      base_log = np.log(syn_df["close"]).diff().fillna(0.0)
      syn_full_log = base_log + 5 * extra
      if jitter and extra_std > 0:
          rng = np.random.default_rng()
          noise = rng.normal(0.0, extra_std, size=len(syn_full_log))
          noise[0] = 0.0
          syn_full_log = syn_full_log + 0.5 * noise
      syn_adj = syn_df.copy()
      syn_adj_close = np.exp(syn_full_log.cumsum()) * syn_df["close"].iloc[0]
      syn_adj["close"] = syn_adj_close
      ratio = syn_adj["close"] / syn_df["close"]
      for col in ["open", "high", "low"]:
          if col in syn_adj.columns:
              syn_adj[col] = syn_df[col] * ratio
      return syn_adj

  if real_tqqq is not None:
      syn_tqqq = _apply_drag_from_real(syn_tqqq, real_tqqq, jitter=True)

Basically, it adds a bunch of noise to fool the strategy, and any “optimism” in the synthetic TQQQ is punished 5X on average.

Bullshit Part 2: Real TQQQ
#

The reason why you’d want to use a synthetic TQQQ is for more backtesting data. TQQQ started in 2010, so there is not too many years for you to test your strategy on. However, if you look at using the real TQQQ, my strategy still beats the Youtuber’s:

Real

His beats buy and hold 100X, and mine beats it by 366X.

So far so good, so why bullshit?

Real results
#

In the YouTube video, it is unlikely he considered slippage and taxes. The reason why you wouldn’t want to consider taxes is taxes are very different depending on which country you trade in, what type of brokerage account you’re using, or what your corporate structure is for trading.

And he never mentioned slippage in the video at all, so I think this 100X B&H result is a bit sanguine. When you run the same real TQQQ test above, with taxes turned on (37% ordinary income on gains, wash sales not deductible, etc.), and a pessimistic .5% slippage per transaction, you actually only get:

Less sad results
.5% slippage, no taxes, roth IRA?

Sad results
.5% slippage, with taxes

And a quick .1% slippage example, just to get a range.

Least sad results
.1% slippage, with taxes

It makes an enormous difference as you can see. We are only able to beat the strategy by less than 8X. Though this is still incredible though, and I am happy with it. Especially because real slippage for TQQQ is on average likely around .01% to .1% (i.e. I take 5-50X the average penalty per trade, on each side).

What isn’t impossible, is possible
#

I had the same feeling when I used to do NFT arbitrages. I saw how someone was able to get some outcome, and immediately I thought: “why not me?”

Same thing here. I saw this dude make 100X+ returns of TQQQ buy and hold and I thought: “It is possible ergo I should just do that.”

Ended up being better.

Ye of little faith
#

However, one dangerous thing with this attitude is that most of social media is filled with liars. So they might tell you that you can just make a product, publish it in some forum, and earn $1M/yr.

And you’ll waste years of your life doing it.

That is:

What is impossible, remains impossible.

And if you don’t succeed, then the guru course-sellers will say “oh yeah you guys just aren’t trying hard enough.”

So it is useful to discern what is likely a lie, and what is possible.

NFT Example
#

The reason why I was able to build an NFT arbitrage bot is because I saw other people doing it. They didn’t brag about it on X. Nor would they want to, as it would invite competition.

I only talk about this now as it is no longer that profitable. But if it was still very profitable, I’d just keep it to myself.

Is that to say anything on social media is a lie? No, but it mostly is so you should take everything with a grain of salt.

The lucrative bot I built was different though: I knew it was possible because there were transactions on the blockchain to show that these arbs were actually happening. It’s not some random guy on X bragging about how they made $100K/mo selling Labubus.

So for me: it was a 100% truth that is possible to make a lot of money making an NFT bot.

Trading Example
#

While it is unclear to me if these dropshippers or other gurus are doing so well, why they would be selling courses. They could simply double down and get way more money.

Same for trading. If you’re compounding your money, why podcast it? Seems dumb.

So why did I think this TQQQ thing was possible?

Well:

  1. He showed a demo in the video, seems too elaborate to do this as a guest on a podcast where incentives aren’t clear. Being a podcast guest has no requirement of showing how your software works at all.
  2. Even if this strat was fiction, it is well-known that there are successful traders out there who follow systems if not implement their own. And if you look at the existence of Point72, Jane Street, etc. it is possible to generate a lot of alpha.

So the only way that it is impossible to make a profit doing quant trading is if all prop firms were a lie, and the demo was also a lie.

Compare this to the impossibility criteria for say, dropshipping: all gurus selling a course need to lie about their business model (but the fact that they are selling a course is already admitting to it).

Conclusion
#

I think trying new things and being curious is good.

It opens a lot of doors, knowledge, and intellectual adventures.

Though you need to have some process of knowing what is worth trying out, and what’s not.