Car Analysis

Car Analysis
Author

Benedict Thekkel

Summary Highlights

  • Cheapest viable used option: Toyota Corolla Hybrid (Ascent Sport/SX) — ideal entry-level, ~$25–30k.
  • Best value for new car: Hyundai i30 Sedan Hybrid — starting around $30k, modern tech, and long warranty.
  • Spacious and mature choice: Toyota Camry Hybrid, starting around $40k new; used late-gen models offer value.
  • More premium feel? Honda Accord e:HEV or Lexus ES300h, though these are more expensive and less common.

Model (AU years) Powertrain Fuel use (combined) Safety (ANCAP) Price (Australia) Why it’s good Watch-outs
Toyota Corolla Sedan Hybrid (Ascent Sport / SX) 1.8 L HEV ~3.6–3.9 L/100 km 5 ★ (2022+) Used (2020–2022, low km): ≈ $29k; Older (2019): mid‑$20k; Some listings around $25k (e.g., Ascent Sport Hybrid) ([Carsales][1], [CarsGuide][2], [News.com.au][3]) Very reliable, plentiful in Brisbane, affordable to maintain Smaller rear cabin; look for good service history
Hyundai i30 Sedan Hybrid (2024+) 1.6 L HEV ~3.9 L/100 km 5 ★ (facelift models) New (2024–25): from $29.5k–$31.5k as guide; Dealer drive-away: around $37k ([Carsales][4]) Efficient, fresh design, excellent warranty Recall on i30 N variants (not hybrids)—check VIN ([News.com.au][3])
Toyota Camry Hybrid (2025 new-gen) 2.5 L HEV ~4.0 L/100 km 5 ★ New (Ascent Hybrid): from $39.99k; Ascent Sport: $42.99k; SL: $53.99k; Drive-away: around $44–60k depending on state ([CarExpert][5], [CarsGuide][6], [CARS24 Australia][7]) Spacious, smooth ride, proven hybrid tech Higher costing; check for ex-fleet/oz rental cars if buying used
Honda Accord e:HEV 2.0 L HEV ~4.3 L/100 km Typically 5 ★ Used: tends to be more expensive than Camry; limited stock (specific pricing unclear)** Roomy, efficient, premium feel Scarcer availability and possible higher running costs
Lexus ES300h 2.5 L HEV ~4.6–4.8 L/100 km 5 ★ Used: starting from $40k+, depending on age & kms ([CarExpert][5]) Luxury-grade comfort and refinement High upfront cost; expensive servicing

Car value Depreciation

Good one 🚗💨 — depreciation is one of the biggest hidden costs in car ownership.

For Japanese mass-market sedans/hatchbacks (Toyota, Honda, Mazda, Nissan, Hyundai/Kia although not Japanese) in Australia, a pretty reliable rule of thumb is an exponential decay curve:


📉 Depreciation Formula (approximation)

\[ V(t) = V_0 \times (1 - r)^t \]

Where:

  • \(V(t)\) = value of car after \(t\) years
  • \(V_0\) = original new price (drive-away)
  • \(r\) = annual depreciation rate
  • \(t\) = years since new

🔹 Typical depreciation rates (Japanese mainstream cars in AU)

  • Year 1: ~20–25% drop immediately (new → used)
  • Years 2–5: ~10–15% per year
  • Years 6–10: slows to ~5–7% per year
  • After 10 years: flattens, value is ~20–30% of original and then mostly follows condition/kms.

🔹 Typical Depreciation Rates (AU Market, Japanese brands)

Brand / Model Type Year 1 drop Years 2–5 (annual \(r\)) Years 6–10 (annual \(r\)) Notes
Toyota (Corolla, Camry, RAV4) 15–20% 10–12% 5–7% Best resale value, especially hybrids.
Mazda (Mazda 3, Mazda 6, CX-5) 18–22% 12–13% 6–8% Very solid, but not quite Toyota’s resale strength.
Honda (Civic, Accord, CR-V) 20–25% 12–15% 6–8% Reliable, but demand dipped in AU → slightly faster depreciation.
Nissan (Altima, Pulsar, X-Trail) 25%+ 15% 8–10% Value drops quickly; resale weaker than Toyota/Mazda.
Mitsubishi (Lancer, Outlander, ASX) 25%+ 15%+ 8–10% Cheap new, but resale is poor; often fleet sales.
Lexus (ES, IS, RX) 15% 8–10% 5–6% Hybrid luxury models hold value well vs Euro luxury (BMW/Audi).
Hybrid variants (Toyota Hybrid, Honda e:HEV) ~15% 8–10% 5–6% Hybrids depreciate slower now due to fuel costs + demand.

🔹 Example (Toyota Corolla Hybrid, new $35,000)

Let’s assume \(r = 0.15\) (15%/year) for the first 5 years, then 7% after.

Year Formula Approx. Value
0 (new) $35,000 $35,000
1 \(35000 × 0.85\) $29,750
3 \(35000 × 0.85^3\) $21,500
5 \(35000 × 0.85^5\) $15,500
8 \(15500 × 0.93^3\) $12,600
10 \(15500 × 0.93^5\) $11,300

So after ~10 years, it’s worth ~30% of new price — which matches used car market data.


🔹 Factors that affect depreciation

  • Brand/reputation → Toyota & Mazda hold value best; Nissan & Mitsubishi drop faster.
  • Fuel efficiency / hybrid → hybrids depreciate slower (esp. now with fuel costs & gov policies).
  • Fleet/taxi history → Camry Hybrids drop harder if ex-fleet.
  • Market cycles → COVID shortages reversed normal depreciation for 2020–2022.
  • Mileage/condition → in AU, >200,000 km is a steep cliff.

Rule of thumb:

  • Expect 50% of new price at 5 years.
  • Expect ~30% at 10 years (for well-kept Toyota/Mazda).
import numpy as np
import plotly.graph_objects as go

# -----------------------------
# 1) Base depreciation rates by brand (rule-of-thumb, AU market)
# -----------------------------
depreciation_rates = {
    "Toyota":       {"year1_drop": 0.18, "years2_5": 0.12, "years6_10": 0.06},
    "Mazda":        {"year1_drop": 0.20, "years2_5": 0.13, "years6_10": 0.07},
    "Honda":        {"year1_drop": 0.22, "years2_5": 0.14, "years6_10": 0.07},
    "Nissan":       {"year1_drop": 0.25, "years2_5": 0.15, "years6_10": 0.09},
    "Mitsubishi":   {"year1_drop": 0.26, "years2_5": 0.16, "years6_10": 0.09},
    "Lexus":        {"year1_drop": 0.15, "years2_5": 0.09, "years6_10": 0.05},
    "Hyundai":      {"year1_drop": 0.23, "years2_5": 0.14, "years6_10": 0.08},
    # Generic hybrid for non-specified hybrids
    "Hybrid (General)": {"year1_drop": 0.15, "years2_5": 0.10, "years6_10": 0.05}
}

# -----------------------------
# 2) Modifiers by model type & price bracket
# -----------------------------
model_type_modifiers = {
    "hybrid":   {"year1_drop": -0.02, "years2_5": -0.02, "years6_10": -0.01},
    "suv":      {"year1_drop": -0.01, "years2_5": -0.005, "years6_10": -0.005},
    "sedan":    {"year1_drop":  0.00, "years2_5":  0.00,  "years6_10":  0.00},
    "sports":   {"year1_drop":  0.02, "years2_5":  0.01,  "years6_10":  0.00},
    "fleet":    {"year1_drop":  0.03, "years2_5":  0.02,  "years6_10":  0.01},
}

def price_bracket(V0):
    if V0 < 25000:
        return "budget"
    elif V0 <= 50000:
        return "mainstream"
    else:
        return "luxury"

price_modifiers = {
    "budget":    {"year1_drop": +0.02, "years2_5": +0.01, "years6_10":  0.00},
    "mainstream":{"year1_drop":  0.00, "years2_5":  0.00, "years6_10":  0.00},
    "luxury":    {"year1_drop": +0.05, "years2_5":  0.00, "years6_10":  0.00},
}

# -----------------------------
# 3) Helper to clamp rates into sensible bounds (0..0.5)
# -----------------------------
def clamp(x, low=0.0, high=0.50):
    return max(low, min(high, x))

# -----------------------------
# 4) Compute effective rates for a given car
# -----------------------------
def effective_rates(brand, model_type, V0):
    base = depreciation_rates.get(brand, depreciation_rates["Hybrid (General)"]).copy()
    mt = model_type_modifiers.get(model_type, {"year1_drop": 0.0, "years2_5": 0.0, "years6_10": 0.0})
    pb = price_modifiers[price_bracket(V0)]
    eff = {}
    for k in ("year1_drop", "years2_5", "years6_10"):
        eff[k] = clamp(base[k] + mt.get(k, 0.0) + pb.get(k, 0.0))
    return eff

# -----------------------------
# 5) Depreciation curve (piecewise)
# -----------------------------
def depreciation_curve(V0, rates, years):
    vals = []
    for t in years:
        if t == 0:
            vals.append(V0)
        elif t == 1:
            vals.append(V0 * (1 - rates["year1_drop"]))
        elif 2 <= t <= 5:
            v1 = V0 * (1 - rates["year1_drop"])
            vals.append(v1 * ((1 - rates["years2_5"]) ** (t - 1)))
        else:
            v5 = V0 * (1 - rates["year1_drop"]) * ((1 - rates["years2_5"]) ** 4)
            vals.append(v5 * ((1 - rates["years6_10"]) ** (t - 5)))
    return vals

# -----------------------------
# 6) Example fleet to plot
# -----------------------------
cars = [
    {"label": "Toyota Corolla Hybrid", "brand": "Toyota", "model_type": "hybrid", "V0": 35000},
    {"label": "Hyundai i30 Sedan Hybrid", "brand": "Hyundai", "model_type": "hybrid", "V0": 36000},
    {"label": "Mazda 3",               "brand": "Mazda",  "model_type": "sedan",  "V0": 33000},
    {"label": "Honda Civic",           "brand": "Honda",  "model_type": "sedan",  "V0": 34000},
    {"label": "Nissan Sedan",          "brand": "Nissan", "model_type": "sedan",  "V0": 35000},
    {"label": "Mitsubishi Lancer",     "brand": "Mitsubishi", "model_type": "sedan", "V0": 30000},
]

years = np.arange(0, 15)

# -----------------------------
# 7) Build the Plotly figure with delta in hover
# -----------------------------
fig = go.Figure()

for car in cars:
    rates = effective_rates(car["brand"], car["model_type"], car["V0"])
    values = depreciation_curve(car["V0"], rates, years)
    deltas = [None] + [values[i] - values[i-1] for i in range(1, len(values))]
    pct_deltas = [None] + [((values[i] - values[i-1]) / values[i-1] * 100) if values[i-1] != 0 else None for i in range(1, len(values))]
    
    hovertext = []
    for t, v, d, pd in zip(years, values, deltas, pct_deltas):
        if t == 0:
            hovertext.append(
                f"{car['label']}<br>"
                f"Year: {t}<br>"
                f"Value: ${v:,.0f}<br>"
            )
        else:
            hovertext.append(
                f"{car['label']}<br>"
                f"Year: {t}<br>"
                f"Value: ${v:,.0f}<br>"
                f"Δ from last year: ${d:,.0f} ({pd:.1f}%)<br>"
            )
    
    fig.add_trace(go.Scatter(
        x=years, y=values,
        mode="lines+markers",
        name=f"{car['label']} (${car['V0']:,})",
        hovertext=hovertext,
        hoverinfo="text"
    ))

fig.update_layout(
    title="Depreciation vs Time by Brand/Model/Initial Price (AU) — with Year-over-Year Change",
    xaxis_title="Years since new",
    yaxis_title="Estimated Value (AUD)",
    yaxis_tickprefix="$",
    hovermode="x unified"
)

fig.show()
Back to top