Bucket Chart?

Amtrak Unlimited Discussion Forum

Help Support Amtrak Unlimited Discussion Forum:

This site may earn a commission from merchant affiliate links, including eBay, Amazon, and others.
@niemi24s how often do you think I should recalculate the buckets? I can do daily but I think it will take 30-60 minutes to refresh all of them. I also don't want to spam Amtrak excessively for something that will rarely change. I can also manually trigger a refresh if a change is known.
Not to butt in (@niemi24s please chime in as well) but I think you know that you are almost certainly not going to find all 'anticipated' buckets in one calculation. Until you can find all 'anticipated' buckets (i.e. all 8 roomette and bedroom fares for each route) I would do the refresh often (probably not less than once a week), just to gauge a sense of what set of buckets pop up at any given time. Buckets are reallocated daily as inventory sells, (however, generally fluctuate more often for departures that are 1-5 months out, less often for departures that are 6-12 months out, if that makes sense).

Once all buckets have been found there's not of a need in refreshing, unless the bucket prices have changed. However, the buckets change somewhat infrequently. The buckets have been changing somewhat frequently (the last change was in early December, the time before was in late September). I'm happy to let you know when I defect a change as well.
 
@niemi24s how often do you think I should recalculate the buckets? I can do daily but I think it will take 30-60 minutes to refresh all of them. I also don't want to spam Amtrak excessively for something that will rarely change. I can also manually trigger a refresh if a change is known.
I'll chime in. They do change the buckets themselves (as opposed to the allocations) but relatively infrequently. Historically, maybe once, twice or three times a year at most. They don't do all the trains in one shot, though. Bucket changes seem to roll out across the system over the course of a couple months.

I'd be happy with monthly updates, delighted with weekly ones.

This is in no way intended as a criticism of @niemi24s, but even a monthly sweep would be likely be quicker than the current method of manually spotting anomalies in buckets, either by niemi24s or the rest of us reporting to him, then manually looking for more differing values.

Personally, I think monthly updates with manually triggered ones when anomalies are reported would do just fine.

Thanks for all the good work.
 
Last edited:
Buckets are reallocated daily as inventory sells,
Not really. Inventory allocations are consumed as inventory sells. Once all the relatively fixed inventory in a bucket is consumed, sales roll into the next bucket up having allocated inventory.

All inventory is allocated across the buckets at all times.

Actual reallocation, moving inventory from one bucket to another, happens but not daily and certainly not with individual sales.

There are three separate events involved that I can see.
In order of frequency:
1. Sales consuming allocated inventory/cancellations releasing inventory. High frequency, literally moment to moment.
2. Inventory reallocation. Low-ish to middling frequency, every few months to every few weeks depending on how much yield management is paying attention.
3. Bucket price point changes. Low frequency, one to a few times a year.

One possibility useful point of information in approaching this. A "bug" in railsforless.us is more of a feature for me. I have beem hesitant to point it out because I really don't want it "fixed". Total bedroom inventory is shown on railsforless.us, although it all shows as current bucket, which is usually inaccurate. Roomette inventory at current bucket is accurate and the total inventory is not shown.

Total bedroom inventory is useful in inferring the number of sleepers in the consist. This is useful in gauging the chances of an inventory reallocation, a "bucket drop".

Under the restriction of 8 passengers on Amtrak.com, I can find some of the buckets higher than the current open one by doing dummy reservations for up to 8 passengers each in their own room. When a request is made exceeding the open inventory in a bucket, the price quoted for all requested rooms is at the highest bucket used to fulfill the request.

Example:
There are 5 bedrooms available.
2 are allocated to bucket A
2 are allocated to bucket B
1 is allocated to bucket D.

Zero inventory is allocated to bucket C.

While you cannot make a request for 10 passengers, you can make a request for 5 passengers in 5 rooms.

A request for 1 or 2 rooms will result in a price quote for Bucket A.
A request for 3 or 4 rooms will result in a price quote for Bucket B (for all rooms)
A request for 5 rooms will result in a price quote for Bucket D (for all rooms).
 
Last edited:
Not really. Inventory allocations are consumed as inventory sells. Once all the relatively fixed inventory in a bucket is consumed, sales roll into the next bucket up having allocated inventory.

All inventory is allocated across the buckets at all times.

Actual reallocation, moving inventory from one bucket to another, happens but not daily and certainly not with sales.

There are three separate events involved that I can see.
In order of frequency:
1. Sales consuming allocated inventory/cancellations releasing inventory. High frequency, literally moment to moment.
2. Inventory reallocation. Low-ish to middling frequency, every few months to every few weeks depending on how much yield management is paying attention.
3. Bucket price point changes. Low frequency, one to a few times a year.

One possibility useful point of information in approaching this. A "bug" in railsforless.us is more of a feature for me. I have beem hesitant to point it out because I really don't want it "fixed". Total bedroom inventory is shown on railsforless.us, although it all shows as current bucket, which is usually inaccurate. Roomette inventory at current bucket is accurate and the total inventory is not shown.

Total bedroom inventory is useful in inferring the number of sleepers in the consist. This is useful in gauging the chances of an inventory reallocation, a "bucket drop".

Under the restriction of 8 passengers on Amtrak.com, I can find some of the buckets higher than the current open one by doing dummy reservations for up to 8 passengers each in their own room. When a request is made exceeding the open inventory in a bucket, the price quoted for all requested rooms is at the highest bucket used to fulfill the request.

Example:
There are 5 bedrooms available.
2 are allocated to bucket A
2 are allocated to bucket B
1 is allocated to bucket C.

While you cannot make a request for 10 passengers, you can make a request for 5 passengers in 5 rooms.

A request for 1 or 2 rooms will result in a price quote for Bucket A.
A request for 3 or 4 rooms will result in a price quote for Bucket B (for all rooms)
A request for 5 rooms will result in a price quote for Bucket C (for all rooms).
Yeah, my presumption has been the same as you (sorry if my poor wording made you think otherwise). However, I think 2 happens more than you believe. They have been much more aggressive with inventory allocations than they have been in years past.
 
Yeah, my presumption has been the same as you (sorry if my poor wording made you think otherwise). However, I think 2 happens more than you believe. They have been much more aggressive with inventory allocations than they have been in years past.
Actual inventory reallocation appears to be done on something of an ad hoc basis. They may have gotten more active on that recently, but it is still usually not anything like daily.

What is undeniable is that they are far more aggressive in their initial inventory allocation at inventory release 11 months in advance. Typically with no initial allocation in lower buckets at all. Reallocation of inventory into lower buckets may start taking place some months in.
 
One possibility useful point of information in approaching this. A "bug" in railsforless.us is more of a feature for me. I have beem hesitant to point it out because I really don't want it "fixed". Total bedroom inventory is shown on railsforless.us, although it all shows as current bucket, which is usually inaccurate. Roomette inventory at current bucket is accurate and the total inventory is not shown.
This is very interesting to me. Roomette inventory comes from the primary Amtrak API requests. Bedroom and family bedroom inventory come from "ad hoc" requests for each and every room on the train, which is why we warn users that searches including these accommodations will take longer.

I have no way of changing this to bucket inventory, but this does let us display a different message when showing a bedroom or family bedroom.

This has me wondering if the Coach inventory is also the total on the train. In the search below, for example, 226 Floridian seats sounds like close to every seat on the train, and they certainly wouldn't all be sold at one price.

https://railforless.us/cached/SEA-PGH_1735153220

I think you know that you are almost certainly not going to find all 'anticipated' buckets in one calculation. Until you can find all 'anticipated' buckets (i.e. all 8 roomette and bedroom fares for each route) I would do the refresh often (probably not less than once a week), just to gauge a sense of what set of buckets pop up at any given time.
Would a daily refresh be too often? Maybe every 3-5 days?

Once all buckets have been found there's not of a need in refreshing, unless the bucket prices have changed. However, the buckets change somewhat infrequently. The buckets have been changing somewhat frequently (the last change was in early December, the time before was in late September). I'm happy to let you know when I defect a change as well.
Cloudflare lets me define cron jobs that run on an interval, so I can do a daily check of the upcoming month, for each route, and see if any fares that don't match the existing list come up. If they do, that would indicate the need to refresh the entire list.

Here's my proposed algorithm:

Daily:
If any prices, within the first month, are not already stored in the database:
If all 8 buckets are known:
Trigger full refresh, which will replace the existing list
else:
Trigger weekly, as we have hopefully found the missing bucket

Weekly or more:
If all 8 buckets are known:
Do nothing
else:
Scrape the 11 month period and store any new buckets
Trigger daily to help ensure we aren't mixing old and new buckets

If Amtrak updates their bucket prices before all 8 are known, it would result in the weekly job mixing one or more new prices in with the old.
 
I find it hard to understand how bucket pricing is allocated. All I do know from booking trips is that sleeper travel has become very expensive. With no Superliners on order and equipment getting scarce what will the effect be in a few years?
 
I find it hard to understand how bucket pricing is allocated. All I do know from booking trips is that sleeper travel has become very expensive. With no Superliners on order and equipment getting scarce what will the effect be in a few years?
Its basic tenet is “charge what the traffic will bear”…that is to use yield management algorithms based on historical ridership trends, to extract the maximum revenue possible for seats and rooms, constantly adjusting based on projections vs sales.

In other words, supply and demand pricing…
 
Last edited:
Not sure how Amtrak's pricing works or the logic of it. We bought our September 2025 tickets in early November. Two of our trains were the CZ from Chicago to Grand Junction for 1012.00 in a roomette using a companion coupon and the SWC from LA to Chicago in a roomette for 797.00, also using a companion coupon. Last week when I did my weekly price check of all our long distance trains the rate from Chicago to Grand Junction using the companion coupon dropped to 608.00. Not sure why there was that kind of drop over 8 months out?
 
Not sure how Amtrak's pricing works or the logic of it. We bought our September 2025 tickets in early November. Two of our trains were the CZ from Chicago to Grand Junction for 1012.00 in a roomette using a companion coupon and the SWC from LA to Chicago in a roomette for 797.00, also using a companion coupon. Last week when I did my weekly price check of all our long distance trains the rate from Chicago to Grand Junction using the companion coupon dropped to 608.00. Not sure why there was that kind of drop over 8 months out?
Probably sales were below projections, at that particular time…
 
This has me wondering if the Coach inventory is also the total on the train. In the search below, for example, 226 Floridian seats sounds like close to every seat on the train, and they certainly wouldn't all be sold at one price.
I know BC inventory follows the same pattern as roomette inventory, at least on the Cascades. Cannot really speak
to coach, though it does appear to me that a very large part, if not all, of the inventory of Cascades coach is at one price on some cursory searches.

Perhaps a good candidate for testing the theories the Seattle section of the Builder with a single Superliner coach, with 62 upper level and 12 lower level seats total capacity. I imagine an upper level seat pair is held back for the attendant.
 
Back
Top