The Second Week: May 22 - May 26

Some of the algorithms that we were looking at were already encoded in the simulator (ZIC, ZIP, and GD). I spent the beginning part of the week learning how those algorithms fit into the overall market structure so that I could add the algorithms that were not already there, as well as studying the algorithms I wanted to add.

We found that the ZIP algorithm that was written into the simulator was not exactly the same as the algorithm that had been outlined in the paper we read. The differences between the algorithms arose largely due to discrepencies in assumed market structure. I coded the ZIP algorithm exactly as it was in the paper, and called it CLIFF.

The ZIPs and CLIFFs went through the same learning process, but under different conditions. In other words, when ZIPs and CLIFFs decided to increase/decrease their asking/bidding prices, they used the same calculations to make their changes, but their decisions to increase/decrease were made based upon different criteria. For example, when CLIFFs learned from market activity, they sometimes took into account whether the current price on the market had been generated as an ask or a bid, whereas ZIPs never cared how the price was generated.

We called the second new algorithm that we wanted to add the PVT algorithm, after the authors of the paper (Priest and van Tol, 1998). It had been designed for a slightly different market structure, but technically so had the ZIPs, so we made some adaptations to the general concept so I could code it into the simulator. Again, I used the same learning process as the CLIFFs and ZIPs, but under different conditions.

The third new algorithm was an idea that Amy and I came up with through brainstorming and building on ideas we had been discussing relating to the other algorithms, especially the Gjerstad and Dickhaut oncepts. It also used the same learning process as the ZIPs/CLIFFs/PvTs, but under different conditions. However! In coding this algorithm, I somehow managed to work in a bug that affected the performances of all the other algorithms. I was able to find it and to work around it, so I left fixing it for later.

At the end of the week, with these different algorithms encoded, I was able to start running experiments in the simulator. Going into the third week of the project, we had some data with which to make comparisons between the algorithms and hypotheses as to the causes of their performances.