Brennen Slaney
  • Home
  • Stock Competition
  • Blog
  • Books
  • About
  • Resume

On this page

  • 1 Current Standings
    • 1.1 Leaderboard
    • 1.2 Performance Over Time
  • 2 Background
  • 3 Selections
    • 3.1 Market-Timer Mike
    • 3.2 Raw Iron Ryan
    • 3.3 The Benjamin
    • 3.4 Real Slim Slaney
    • 3.5 T-FERG
    • 3.6 Ballin Blamer
  • 4 Appendix
    • 4.1 Full Dataset

Other Formats

  • PDF

Stock Competition 2026

Published

June 17, 2026

LAST UPDATED: 2026/06/17 at 02:23 EDT
AUTHOR: Brennen Slaney 
GITHUB: @realslimslaney

1 Current Standings

1.1 Leaderboard

Results as of 2026-06-17
Name Ticker Return Start Date End Date Start Price End Price Dividends End Value
Brennen IONQ+ 53.03% 2026-01-30 2026-06-15 $39.98 $61.18 $0.00 $61.18
Tyler GE+ 14.97% 2026-01-30 2026-06-16 $306.34 $351.73 $0.47 $352.20
Ben AVGO+ 14.14% 2026-01-30 2026-06-16 $330.61 $376.71 $0.65 $377.36
Mike TSLA- 5.98% 2026-01-30 2026-06-16 $430.41 $404.66 $0.00 $404.66
Joe AXP+ −2.67% 2026-01-30 2026-06-16 $351.06 $340.74 $0.95 $341.69
Ryan MSFT+ −7.64% 2026-01-30 2026-06-16 $428.38 $393.83 $1.82 $395.65
Benchmarks
Name Ticker Return Start Date End Date Start Price End Price Dividends End Value
S&P 500 ^SPX+ 8.25% 2026-01-30 2026-06-16 $6,939.03 $7,511.35 $0.00 $7,511.35
Bitcoin BTC-USD+ −21.78% 2026-01-30 2026-06-17 $84,128.66 $65,805.99 $0.00 $65,805.99

1.2 Performance Over Time

Code
chart_df = (
    df.join(
        df.rename({"close": "start_price"})
        .filter(pl.col("date") == start_date)
        .select(["ticker", "start_price"]),
        on="ticker",
        how="left",
    )
    .with_columns(
        pl.col("close")
        .add(pl.col("dividend").fill_null(0.0).cum_sum().over(pl.col("ticker")))
        .alias("Accumulated Value")
    )
    .with_columns(
        (
            pl.col("factor")
            * (pl.col("Accumulated Value").truediv(pl.col("start_price")) - pl.lit(1))
        ).alias("Return"),
        pl.when(pl.col("factor") == 1)
        .then(pl.col("ticker") + "+")
        .otherwise(pl.col("ticker") + "-")
        .alias("position"),
    )
)

if pdf_bool:
    fig, ax = plt.subplots(figsize=(10, 5))
    for label in chart_df.get_column("position").unique().sort():
        subset = chart_df.filter(pl.col("position") == label)
        ax.plot(subset.get_column("date").to_list(), subset.get_column("Return").to_list(), label=label)
    ax.yaxis.set_major_formatter(mticker.PercentFormatter(xmax=1, decimals=1))
    ax.set_title("Total Return by Company")
    ax.set_xlabel("Date")
    ax.set_ylabel("Return")
    ax.legend(title="Ticker")
    ax.grid(True, alpha=0.3)
    plt.tight_layout()
    plt.show()
else:
    fig = px.line(
        chart_df,
        x="date",
        y="Return",
        color="position",
        line_group="position",
        labels={"Return": "Return", "date": "Date"},
        category_orders={"position": position_order},
        color_discrete_map=position_color_map,
    )
    for trace in fig.data:
        if trace.name in benchmark_positions:
            trace.line.dash = "dash"
            trace.line.color = "#888"
            trace.line.width = 1.8
        else:
            trace.line.width = 2.5
    fig.add_hline(y=0, line_dash="dot", line_color="#999", line_width=1)
    fig.update_traces(
        hovertemplate="<b>%{fullData.name}</b><br>%{x|%b %d, %Y}<br>Return: %{y:.2%}<extra></extra>"
    )
    fig.update_layout(
        title="Total Return by Company",
        legend_title="Ticker",
        yaxis=dict(tickformat=".1%"),
        template="plotly_white",
        hovermode="x unified",
    )
    fig.show()
Code
if pdf_bool:
    for ticker in df.get_column("ticker").unique().sort():
        subset = df.filter(pl.col("ticker") == ticker)
        fig, ax = plt.subplots(figsize=(10, 4))
        ax.plot(subset.get_column("date").to_list(), subset.get_column("close").to_list())
        ax.set_title(f"Stock Price for {ticker}")
        ax.set_xlabel("Date")
        ax.set_ylabel("Stock Price")
        ax.grid(True, alpha=0.3)
        plt.tight_layout()
        plt.show()
else:
    fig = px.line(
        df.sort(["ticker", "date"]),
        x="date",
        y="close",
        color="ticker",
        facet_col="ticker",
        facet_col_wrap=2,
        labels={"close": "Stock Price", "date": "Date"},
        category_orders={"ticker": ticker_order},
        color_discrete_map=ticker_color_map,
    )
    fig.update_layout(
        title="Stock Prices",
        template="plotly_white",
        showlegend=False,
        height=900,
    )
    fig.update_yaxes(matches=None, showticklabels=True)
    fig.update_xaxes(matches=None, showticklabels=True)
    fig.for_each_annotation(lambda a: a.update(text=a.text.split("=")[-1]))
    fig.update_traces(
        line_width=2,
        hovertemplate="%{x|%b %d, %Y}<br>$%{y:.2f}<extra></extra>",
    )
    fig.show()

2 Background

Marvin graciously welcomed the fellas into his home on the evening of January 30, 2026 to once again discuss and debate the leading stock selections for the upcoming year. Upon learning that none of the gentlemen picking stocks this evening could become the sole possessor of the coveted tug of war rope, the boys went to the basement to try their luck with stocks instead.

3 Selections

3.1 Market-Timer Mike

  • Despite seeing B Slane’s new 2020 Model S with a black exterior and white interior, Mike cemented his role as the leader of the Bad Boy Club and chose to Short $TSLA despite their greatness.
  • Michael is confident the market is about to tank and the rug will be pulled shortly, and he will handily beat everyone once Armegeddon arrives any day now.

3.2 Raw Iron Ryan

  • Following a strong 2025 campaign, Ryan pounced on $MSFT 11% drop on selection day to lock in a strong position for the 2026 season.
  • He believes that Microsoft will continue to dominate the technology sector and drive growth through its cloud computing services and software products. Or something, he didn’t come to the conference.

3.3 The Benjamin

  • Beat to the punch on MSFT, Benjamin selected Broadcom $AVGO because he believes in the company’s strong position in the semiconductor industry and its potential for growth.
  • He also appreciates Broadcom’s focus on innovation and its track record of delivering strong financial performance, which he believes will continue to drive the company’s success in the coming years.

3.4 Real Slim Slaney

  • Brennen procrastinated this year and spent hours building a stock filtering tool that he did not use in his final selection, just to keep the haters guessing
  • He ultimately selected $IONQ because he believes in the future of quantum computing and thinks that IONQ is well-positioned to capitalize on this emerging technology. He also appreciates the company’s focus on developing practical applications for quantum computing, which he believes will drive adoption and growth in the coming years.

3.5 T-FERG

  • A new entrant in the 2026 class, T FERG picked General Electric $GE, citing his belief in the company’s ability to innovate and adapt in a rapidly changing market.
  • He believes that GE’s focus on aerospace engineering will position it for long-term success.

3.6 Ballin Blamer

  • A new entrant in the 2026 class, Blamer picked American Express, $AXP citing his love for the company’s credit cards and their iconic “Don’t Leave Home Without It” campaign. He believes that Amex’s strong brand loyalty and premium customer base will drive growth in the coming years.
  • Note he does not have an American Express card himself, but he has a friend who does and that’s good enough for him.
Selections
Name Ticker factor
Ben AVGO 1
Brennen IONQ 1
Mike TSLA -1
Ryan MSFT 1
Joe AXP 1
Tyler GE 1
S&P 500 ^SPX 1
Bitcoin BTC-USD 1

4 Appendix

4.1 Full Dataset

Loading ITables v2.8.1 from the internet... (need help?)
 

© 2026 Brennen Slaney · Built with Quarto