# High Frequency Price Prediction of Index Futures — Data

来源：https://www.kaggle.com/competitions/caltech-cs155-2020/data

采集时间：2026-10-19T12:32:24Z

File descriptions
train.csv
- the training set
test.csv
- the test set. Note that id's in the test set are not chronologically ordered.
sample_submission.csv
- a sample submission file in the correct format. The Predicted column should be the probability of class "1" in the "y" column. This is the (relative) probability that the mid price will go strictly up (>0).
Terminology
order
- An order is a request to buy or sell the contract at a certain price with certain quantity.
fill
- To fill an existing order is to fulfill it. Example: The order book is currently empty. James sends in an order to buy 100 contracts at $1.00. Jim then sends in an order to sell 100 contracts at $1.00. Jim has "filled" James's order.
order book
- a data structure representing all the unfilled orders. Orders in the book are filled in the priority of price, and then time (whoever submitted the best price first gets filled).
bid
- you bid when you put in a buy order. "Bid $X to buy a good"
ask
- you ask when you put in a sell order. "Ask for $X to sell a good". In an order book, BID IS ALWAYS LESS THAN ASK. Think of why this might be.
Data fields
id
- The timestep ID of the order book features. In the training set,
id
is ordered chronologically. However, in the test set, they are scrambled so that you cannot simply use the order book features of future data to make fake "predictions" in previous timesteps. To keep the competition more of a ML problem and less of a math problem, this scrambling also prevents timeseries modelling. If you would like, you could try to unscramble the ordering using some ML.
last_price
- the price at which the most recent order fill occurred.
mid
- the "mid" price, which is the average of the best bid (bid1) and the best ask (ask1)  prices.
opened_position_qty
- In the past 500ms, how many buy orders were filled?
closed_position_qty
- In the past 500ms, how many sell orders were filled?
transacted_qty
- In the past 500ms, how many buy+sell orders were filled?
d_open_interest
- In the past 500ms, what is (#buy orders filled)- (#sell orders filled)?
bid1
- What is the 1st bid price (the best/highest one)?
bid[2,3,4,5]
- What is the [2nd, 3rd, 4th, 5th] best/highest bid price?
ask1
- What is the 1st ask price (the best/lowest/cheapest one)?
ask[2,3,4,5]
- What is the [2nd, 3rd, 4th, 5th] best/lowest/cheapest ask price?
bid1vol
- What is the quantity of contracts in the order book at the 1st bid price (the best/highest one)?
bid[2,3,4,5]vol
- What is the quantity of contracts in the order book at the [2,3,4,5]th bid price (the [2,3,4,5]th best/highest one)?
ask1vol
- What is the quantity of contracts in the order book at the 1st ask price (the best/lowest/cheapest one)?
ask[2,3,4,5]vol
- What is the quantity of contracts in the order book at the [2,3,4,5]th ask price (the [2,3,4,5]th best/lowest/cheapest one)?
y
(unique to training data) - What is the change in the mid price from now to 2 timesteps (approx. 1 second) in the future? "1" means this change is strictly positive, and "0" means the change is 0 or negative.
### Missing fields

Missing fields are simply empty. It is up to you how you would like to fill them in.

### Arent financial price movements random, unpredictable, and Gaussian?

Usually, you get random and unpredictable, but not quite Gaussian. At this time scale, the order book actually leaks enough information on future prices to make decent predictions. Unfortunately, being speedy enough to make money on them is a much more difficult problem.