Seasonality and Revenue Management
Seasonality and Revenue Management
Every STR market has peaks and troughs. Summer beach properties are booked solid in July; November is a ghost town. Ski resorts peak in January and crater in August. Ignoring seasonality and charging a flat $150 nightly year-round leaves money on the table during peaks (you could charge $250) and attracts no bookings during troughs (demand disappears at $150). Dynamic pricing—adjusting your nightly rate based on expected demand, competition, and your own occupancy targets—bridges the gap between maximum revenue and realistic bookings.
Key takeaways
- Most STR markets exhibit 2–4 distinct seasonal windows: high season (peak pricing), shoulder season (moderate pricing), and low season (discounts). Some markets (ski, beach) have binary seasonality; others (business travel, urban centers) have softer variations.
- Manual pricing (setting rates once per quarter) misses micro-opportunities. Demand shifts week-by-week: a holiday weekend spikes 40% above baseline; a rainy week during normally-peak season drops demand 20%.
- Dynamic pricing tools (PriceLabs, Wheelhouse, Airbnb's built-in features, Hostaway) automate rate adjustments using occupancy trends, competitor pricing, and historical booking patterns. They cost $20–80/month per property and typically pay for themselves within the first month via improved occupancy or ADR.
- The goal is not maximum ADR but maximum revenue: ADR × occupancy × 365. Sometimes dropping price $20/night attracts enough extra bookings to net more total income.
- Seasonality also drives property management decisions: when to schedule maintenance, whether to offer discounts for long-term bookings, and how to staff cleaning teams.
Seasonal patterns across market types
Tier 1: Beach and warm-weather destinations
- High season: November–April (winter escape for northern markets, spring break, Easter)
- Shoulder: May, September–October
- Low season: June–August (too hot, family vacations to cooler destinations)
- ADR swing: High $250–350 to low $100–150
- Occupancy swing: High 80–85% to low 35–50%
Example (Miami beachfront):
Nov–Apr: $300 ADR, 82% occupancy (180 days)
May, Sep–Oct: $160 ADR, 70% occupancy (122 days)
Jun–Aug: $90 ADR, 40% occupancy (63 days)
Annual: $300×0.82×180 + $160×0.70×122 + $90×0.40×63 = $44,280 + $13,664 + $2,268 = $60,212
Tier 2: Ski and cold-weather destinations
- High season: December–March (ski season, holidays, Presidents' Day weekend)
- Shoulder: November, April, summer (shoulder ski season, summer hiking, family reunions)
- Low season: May–October (summer flatness in ski towns, limited demand)
- ADR swing: High $250–400 to low $70–120
- Occupancy swing: High 75–85% to low 25–35%
Example (Aspen, Colorado):
Dec–Mar: $350 ADR, 80% occupancy (120 days)
Nov, Apr, Jul–Sep: $120 ADR, 45% occupancy (162 days)
May–Jun: $100 ADR, 35% occupancy (61 days)
Oct: $130 ADR, 50% occupancy (31 days)
Annual: $350×0.80×120 + $120×0.45×162 + $100×0.35×61 + $130×0.50×31 = $33,600 + $8,748 + $2,135 + $2,015 = $46,498
Tier 3: Urban business travel centers
- High season: Monday–Thursday, year-round (business travel, conference weekends)
- Shoulder: Friday–Sunday (leisure, visiting friends)
- Low season: Holiday weeks, summer weekends (offices closed, people on vacation)
- ADR swing: Weekday $140–180 to weekend $90–120; high-season weeks $160+ to slow weeks $70–100
- Occupancy swing: Weekday 80–90% to weekend 60–70%; peak weeks 85%+ to holiday weeks 20–40%
Example (Downtown Denver):
Weekday (Mon–Thu): $160 ADR, 85% occupancy (260 days)
Weekend (Fri–Sun): $110 ADR, 65% occupancy (105 days)
Annual: $160×0.85×260 + $110×0.65×105 = $35,360 + $7,538 = $42,898
But holidays and summer compress this. A realistic model segments further:
Normal weeks (35 weeks): Weekday $160/85%, weekend $110/65%
Holiday weeks (5 weeks): Uniform $200/75% (all days)
Summer soft (12 weeks): Weekday $140/70%, weekend $100/50%
Annual: $160×0.85×(35×5) + $110×0.65×(35×2) + $200×0.75×(5×7) + $140×0.70×(12×5) + $100×0.50×(12×2)
= $29,400 + $5,005 + $5,250 + $2,940 + $1,200 = $43,795
Dynamic pricing: mechanics and strategy
Goal: Maximize revenue by adjusting price in real-time based on demand signals.
Signals used:
- Competitor pricing: How much are similar properties charging this week?
- Your occupancy: How far in advance are you booked? (Further out = adjust up; sparse bookings = adjust down to attract volume)
- Seasonality calendar: Is this a holiday week, festival week, or low-demand week?
- Booking velocity: Are you filling the calendar faster or slower than historical average?
- Length of stay: Longer stays (14+ nights) might justify discounts (reduced turnover costs).
Pricing rules:
-
Lead time pricing: Increase price as the stay approaches if you're not fully booked (scarcity pricing). Lower price 60+ days out if occupancy is weak (attract early planners).
-
Occupancy-based adjustments: If you're 90%+ booked 30 days out, charge maximum. If you're 50% booked, discount 15–25% to attract marginal bookings.
-
Length-of-stay discounts: Offer 10% off for 7+ nights, 20% off for 30+ nights. This reduces turnover and acquisition costs.
-
Seasonal multipliers: Apply 1.5–2.0× multiplier in high season, 0.6–0.8× in low season.
Example pricing schedule (Denver urban property, base ADR $140):
| Scenario | Rate | Rationale |
|---|---|---|
| High season (peak week), 30 days in advance | $180 | Scarcity + seasonality |
| High season, 7 days out | $220 | Last-minute spike |
| Normal week, early booking (60 days) | $130 | Attract planners |
| Normal week, full occupancy | $160 | Maximize at capacity |
| Low season | $100–110 | Discount to compete |
| 30+ night stay, any season | −20% | Reduce turnover cost |
Dynamic pricing tools
PriceLabs (pricelabs.co) is the most popular automation platform. It analyzes competitor pricing, your historical occupancy, and seasonal trends to suggest daily rates. You set upper/lower bounds (e.g., never go below $100, never exceed $250) and let the algorithm adjust within those guardrails. Cost: $15–49/month depending on property count.
Wheelhouse (wheelhousecorp.com) takes a different approach: it predicts optimal pricing by simulating revenue outcomes. Feed it your target revenue goal, and it calculates the daily rate that maximizes it. Wheelhouse integrates with Airbnb, VRBO, and Booking.com. Cost: $99–199/month.
Airbnb's smart pricing: Airbnb offers a built-in smart pricing feature (free to members). It's a simplified version of third-party tools—less granular but sufficient for beginners. If you use Airbnb exclusively, start here before paying for PriceLabs.
VRBO and other platforms: VRBO offers similar built-in pricing tools. Furnished Finder does not have dynamic pricing—most corporate bookings are longer-term and less price-elastic.
Implementation strategy:
- Set baseline seasonal ranges (high/shoulder/low ADR) from market data.
- Enable dynamic pricing tool with upper/lower bounds.
- Monitor for 4 weeks, reviewing suggested adjustments against market reality.
- Tweak bounds if the algorithm over- or under-prices relative to competitor activity.
- Let it run; check monthly but avoid over-optimizing (weekly changes introduce noise).
Revenue impact: dynamic vs. flat pricing
Scenario: Same Denver property, both strategies
Strategy 1 (flat pricing): $140 ADR year-round, 65% occupancy
Annual revenue: $140 × 0.65 × 365 = $33,189
Strategy 2 (dynamic pricing with tool):
High season (15 weeks, 105 days): $200 ADR, 80% occupancy = $16,800
Normal (23 weeks, 161 days): $145 ADR, 68% occupancy = $15,926
Low season (14 weeks, 98 days): $105 ADR, 55% occupancy = $5,676
Total annual: $38,402
Dynamic pricing adds $5,213 annual revenue (15.7% improvement) without changing operational capacity. On a property with $20,000 net income baseline, this is a 26% increase in profit.
Tool cost: $30/month × 12 = $360/year. ROI: ($5,213 − $360) / $360 = 1,346% first year.
Seasonality and operations
Pricing is half the equation; operations adjust seasonally too.
High season:
- Hire temporary cleaning staff or increase co-host support (turnovers accelerate).
- Stock supplies aggressively (higher turnover = more toilet paper, soap, linens needed).
- Maintenance should be completed before peak begins; you cannot take the property offline mid-season.
Low season:
- Schedule major maintenance, deep cleaning, renovations (guest disruption is acceptable when occupancy is 20–30%).
- Reduce cleaning staff; rely on existing team for minimal bookings.
- Consider seasonal closure if low season is severe enough that opex exceeds revenue.
Shoulder season:
- Ramp up or down carefully; maintain flexibility.
- Use this window to test pricing adjustments before high season arrives.
Seasonality flowchart
Related concepts
- ./04-adr-and-occupancy-by-market.md
- ./03-str-financial-modeling.md
- ./06-str-operating-expenses.md
Next
Dynamic pricing maximizes revenue from guests you already attract, but the true cost to revenue is opex—cleaning, utilities, supplies, and team. Operating expenses are often underestimated, and small oversights cascade into profit erosion. The next article breaks down the STR operating expense structure and reveals where costs are hidden.