CHAPTER 3

Forecasting Short-Term Commodity Prices

Short- and long-term commodity price forecasts help you to make better risk management decisions. Long-term forecasts are looking out in the future, one year or more. Short-term forecasts look ahead to the next few weeks, months, or quarters.

In this chapter, we describe how to use technical analysis to develop short-term forecasts, and in Chapter 4, we discuss long-term forecasts. Technical analysis reviews historical price patterns, and forecasts are based on assumptions about future price patterns. The only data used in technical analysis are historical prices. The theory supporting technical analysis suggests all marketplace information about a commodity is incorporated into its price. As soon as new information is available about a commodity, the market adjusts to determine a new price. This underlying premise is attributed to Charles Dow,1 who observed price patterns in the stock market. Dow suggested prices reflect factual information, as well as the expectations and beliefs of all market participants. Therefore, in a technical analysis there is no need for understanding the underlying factors affecting price dynamics; the analysis only uses the price’s historical patterns.

Long-term forecasting uses an approach called fundamental analysis, which we discuss in Chapter 4. Fundamental analysis assumes the relationship between supply and demand drives commodity prices. Fundamental analysis involves examining the underlying forces affecting supply and demand, estimating how supply and demand will change, and then assessing what impact the change might have on price.

Managers use short-term forecasts to make tactical decisions to execute supply chain strategies. How are short-term price forecasts used in the company? For example, based on a price forecast, adjustments can be made on how much and when to buy a commodity. If a commodity’s price is expected to increase, it can be acquired sooner than planned, and if prices are forecast to decrease, can be purchased at a later time. The time frame of these decisions determines the time period for short-term forecasts. Typically, monthly or weekly prices are used when forecasting near-term commodity prices. In our research, for example, we found in 85 percent of the companies, the forecasting frequency is monthly, and in only one case daily prices are used for the forecast. These choices are also influenced by the fact, for many commodities, it is easy to find monthly prices published by external sources. Quarterly or annual price forecasts are also available, but these are then typically used for long-term timeline forecasts.

With shorter time periods, say daily versus weekly prices, there can be a lot of variation in the forecast. Longer time periods, such as quarters, tend to smooth out price variations. If orders are placed infrequently, and the spend level and volatility are relatively low, quarterly or monthly forecasts may be more appropriate. In case of frequent purchases, high levels of spend, and highly volatile prices, developing weekly price forecasts may be a better choice.

The key steps in a technical analysis are described as follows:

  1. Gathering historical commodity price data.

  2. Identifying price patterns.

  3. Selecting a forecasting model.

  4. Developing forecasts for the appropriate price pattern (stable, trends, seasonality).

  5. Developing forecasts for price patterns with trends.

  6. Developing forecasts for seasonal price patterns.

  7. Assessing forecast accuracy.

  8. Improving the forecast.

  9. Monitoring the forecast.

Gathering Historical Commodity Price Data

The first step in technical analysis is to gather historical commodity spot prices for the most recent two to three years. Spot prices are the actual prices paid in the marketplace during a given time period. Companies may have historical records on the actual prices paid for commodities. If price data are not readily available within the company, public sources or subscription services may be available. For example, gasoline, oil, natural gas, and coal prices are publicly available through the U.S. Energy Information Administration. The U.S. Department of Agriculture Economic Research Service provides price data for a number of agricultural commodities including corn, soybeans, and wheat; and the World Bank provides price data on a large number of commodities. Subscription services can be expensive but provide forecasts and market information as well, so they may be a valuable investment for your company. When using historical data from different sources, it is important to ensure they are consistent in terms of grade of the commodity, unit of measure, and time frame. For example, there are six different major classes of wheat, each with different producing regions, varying uses, and consuming countries.2

Identifying Price Patterns

The next step in a technical analysis is to plot the historical price data and identify patterns. This can be done using a spreadsheet plotting the price data for the most recent two to three years in a line graph in the order of occurrence. This is typically represented as a time-series price chart. The monthly wellhead natural gas prices for 2014 to 2016 from the U.S. Energy Information Administration shown in Table 3.1 are plotted in Figure 3.1 to illustrate a technical analysis.

After the price chart is complete, basic patterns are identified in the historical prices. In the short-term, prices can exhibit four basic patterns: stable, trend, seasonal, and shift. A stable pattern is essentially a horizontal line with little movement up or down. A trend shows upward or downward price movements. Seasonal patterns are repeating patterns occurring over time. For example, gasoline prices in the United States typically increase during the summer vacation season. Seasonal patterns may be caused by actual seasonal changes, such as harvesting for an agricultural commodity or changes in consumer demand. A shift is a step change occurring—for example—after a major disruption to supply or demand.

Table 3.1 Natural gas: Citygate prices (US$/1,000 cubic ft.), January 2014 to March 2016

Month

2014

2015

2016

January

$5.56

$4.48

$3.38

February

$6.41

$4.54

$3.46

March

$6.57

$4.35

$3.45

April

$5.64

$3.93

May

$5.90

$4.24

June

$6.05

$4.43

July

$5.99

$4.65

August

$5.49

$4.58

September

$5.51

$4.54

October

$5.16

$4.00

November

$4.91

$3.68

December

$5.15

$3.76

Source: U.S. Energy Information Administration.3

Figure 3.1 Natural gas: Citygate prices, January 2014 to March 2016

Source: U.S. Energy Information Administration.4

Besides the basic patterns, some prices may be a combination of patterns. For example, a seasonal pattern can also have an increasing or decreasing trend. In the long-term, a cyclical pattern from economic cycles may also be evident.

Random error is present in all pricing patterns. Over time price patterns change, and for some commodities, frequent changes can occur.

Determining price patterns is more of an art than a science and requires judgment and experience. Since all price patterns contain random error, it is difficult to sort out real changes in patterns from those that are noise. Note the monthly prices for natural gas are shown in Figure 3.1. Overall during this time period there had been a downward trend in price. However, during this period there were some months, for example, April through July 2015 when prices increased. Further, in February and March 2016, prices appear to have stabilized. There is no “right” answer to the patterns, as this depends on judgment, which is gained through experience. So when a trend is occurring, how far will prices increase or decrease? Patterns emerge because of market participants’ beliefs and behaviors. Prices tend to increase or decrease until they hit upper and lower boundaries formed by the behaviors of the market participants. At the upper end is a resistance price that is the “highest” price for the commodity. When an upward trend encounters the resistance price, it typically shifts direction and begins to decline. Similarly, a low price point called support is the price that a decreasing trend typically reverses.

Commodity traders use short-term price charts with frequent intervals, often as short as 1 minute, to identify support and resistant points. For natural gas over the entire time period, as shown in Figure 3.1, the resistance price appears to be $6.57 per 1,000 cubic ft., and the support price is $3.45 per 1,000 cubic ft. The resistance and support prices can change over time. A shift in the pattern caused by a major supply disruption or economic jolt will shift the resistance and support prices.

In technical analysis, there are a number of standard price patterns beyond the scope of this book that experienced analysts use to identify trends and trend reversals. It takes time to study and learn about commodities and begin to develop an understanding of their normal pricing patterns. Understanding pricing patterns provides critical information for making better commodity management decisions.

Selecting a Forecasting Model

Commodity traders use a wide variety of technical analysis tools to understand very short-term pricing patterns, so they can profit from price movements. Supply chain managers, whose objective is to understand commodity price risk and buy to budget, can use a subset of these tools. Some statistical tools useful for short-term forecasting for supply chain management include time-series models, simple linear regression, and seasonal indices. If you did not know anything about forecasting, how would you develop a short-term forecast? One simple approach is to take the last period’s price and use it as a forecast for the next period’s price, an approach called the naïve method. For example, using the data in Table 3.1, the actual price in March 2016 of $3.45/1,000 cubic ft. would be the forecast for April 2016. Once the actual price for April 2016 is known, that price becomes the forecast for May 2016. Although this approach is easy, the forecast may not be very accurate since it may introduce a lot of random noise.

Some simple statistical tools can be used to improve forecasts. Different statistical tools are designed for different pricing patterns: stable prices, increasing or decreasing trends, seasonal patterns, and a combination of trend and seasonality. The price pattern determines which statistical tool is likely to work the best. For example, if the price pattern is actually an upward trend, but the forecast is developed using a statistical tool designed for a stable pattern, the forecast will be too low.

Developing Forecasts for Stable Price Patterns

Three statistical tools called time-series models are designed for stable price patterns. These statistical tools are simple moving average, weighted moving average, and simple exponential smoothing. With spreadsheets these tools are easy to develop and use.

The easiest model to use is the simple moving average. A simple moving average is the average price over a fixed number of time periods, for example, months. Look back at the monthly price data for natural gas in Table 3.1. To examine this model, take for example a three-month moving average to forecast the price of natural gas beginning in April 2014. To develop the forecast, average the prices for January ($5.56/1,000 cubic ft.), February ($6.41/1,000 cubic ft.), and March ($6.57/1,000 cubic ft.). The three-month moving average forecast for April is $6.18/1,000 cubic ft. Once the actual price is known for April ($5.64/1,000 cubic ft.), a three-month moving average forecast can be developed for May 2014 ($6.21/1,000 cubic ft.) by averaging the prices for February, March, and April. Then, the forecast for June 2014 can be developed by averaging the prices for March, April, and May. Continue this approach to develop a price forecast for each subsequent month. Typically, three to six time periods are used for simple moving averages. When fewer time periods are used, the forecasts are more responsive to recent price changes. Using more time periods creates a smoothing effect, so the forecast has less variation and is more stable. For example, Figure 3.2 compares forecasts for natural gas. The solid line is the actual spot price for natural gas; the dotted line is the three-month moving average forecast, and the dashed line is the six-month moving average forecast. The six-month moving average has less variance and is more stable than the three-month moving average. Later in this chapter, we will discuss how to measure the accuracy of a forecasting model, so the models can be compared and the best model can be selected.

The weighted moving average also is intuitive and easy to use. With the simple moving average, to improve forecast accuracy the only factor to adjust is the number of periods averaged together. With the weighted moving average, there are two factors to improve accuracy: the number of periods and the weight put on the price in each period.

As a first step, similar to the simple moving average model, select the number of periods to include in the model, which is typically three to six periods. Then, based on judgment, assign a weight to each time period so the weights sum to one. The most recent time period typically reflects future prices more accurately than older time periods. Thus the price for the most recent time period is usually weighted the most heavily. The final step of the weighted moving average model is to add the weighted prices for each time period together to get the forecast for the next period.

Figure 3.2 Natural gas: Three- and six-month simple moving average forecasts

Source: U.S. Department of Energy.5

For example, we will forecast the price of natural gas for April 2014 using a three-month weighted moving average. Using judgment, decide on the weights to use. In this case, weigh the most recent month (March) at 0.5; the next most recent month (February) is weighted at 0.3; and the oldest month (January) is weighted at 0.2. The calculations are shown in Table 3.2. Using a three-month weighted moving average, the forecast for April 2014 is $6.32/1,000 cubic ft.

Once the actual price for April is known ($5.64/1,000 cubic ft.), the forecast for May is calculated by 0.2 × February price ($6.41/1,000 cubic ft.), 0.3 × March price ($6.57/1,000 cubic ft.), and 0.5 × April price ($5.64/1,000 cubic ft.). Using the three-month weighted moving average, the forecast for May 2014 is $6.07/1,000 cubic ft. The process continues as the actual price for each new month is known.

Another model designed for stable price patterns is simple exponential smoothing. This model determines the forecast for the next period using the actual price and forecast for the last period. Thus, the forecast for the price in April 2014 is based on the actual price in March 2014 and the price forecast for March 2014.

Only one factor is adjusted in the simple exponential smoothing model. This factor refers to a smoothing coefficient, and is named α. Using judgment, a value should be assigned to α between 0 and 1. The actual price in the last period is multiplied by α, and the forecast for the last period is weighted by (1 ߝ α). A higher value of α puts more weight on the actual price.

Table 3.2 Natural gas: Three-month weighted moving average forecast April 2014

Month

Price (US$/1,000 cubic ft.)

Weight

Weighted price

January

$5.56

0.2

$1.11

February

$6.41

0.3

$1.92

March

$6.57

0.5

$3.29

April

Forecast = Sum

1

$6.32

Source: U.S. Energy Information Administration.6

These two values are added together to get the forecast for the next period. To put more weight on the most recent price, use a high value for α.

The equation for simple exponential smoothing is as follows:

A starting forecast is required to begin a simple exponential model. One approach is to use the actual price for the last period as an estimate for a forecast to get started. To develop a forecast for April 2014, you need both the actual price and a forecast for March 2014. For example, the actual price for March 2014 is $6.57/1,000 cubic ft. However, there is no forecast for March 2014. As an estimate, use the actual price for February 2014 as the forecast for March. If you use a value of 0.8, the forecast for April is as follows:

After the actual price for April 2014 is known, a forecast for May 2014 is developed. Now there is an actual price for April ($5.64/1,000 cubic ft.) and a forecast for April ($6.54/1,000 cubic ft.). The forecast for May is as follows:

After the model is developed, it is continually applied to forecast each subsequent month. Over time, any error introduced by the initial forecast’s estimate will diminish. The key to developing a good simple exponential smoothing forecasting model is to select a value of α having the highest forecast accuracy. As we will explain later in the chapter, you can compare different values of α to determine which value results in the most accurate forecast.

One of the major limitations of the three time-series models is they only forecast one period ahead. Although they are helpful to support short-term tactical decisions, the limited visibility is problematic for strategic decisions.

Developing Forecasts for Price Patterns with Trends

The three statistical tools illustrated so far all work well for short-term forecasts when the price pattern is relatively stable. However, in many cases, historical prices are increasing or decreasing. If prices are increasing, the forecasts developed using time-series models for a stable pattern underestimate prices. If prices are decreasing, models for stable patterns will overestimate prices. There is an extension of the exponential smoothing model called trend-adjusted exponential smoothing that can be used for trend patterns. Please refer to a comprehensive textbook on business forecasting for more detailed information about these models.

Another easy method, simple linear regression, can be used for short-term forecasts with stable or trend-price patterns. Also called “least-squared,” this model mathematically fits a line to the price data points, so the sum of the squared distance from each point to the line is minimized. Linear regression models can be easily calculated using an Excel spreadsheet. One approach is to create a scatter chart replacing the months with the number in the time-series sequence as shown in Figure 3.3 for natural gas prices. Using the layout tab in Excel, click on the data in the scatter chart and then insert a linear trend line. Be sure to select the option to show the equation and the R2 on the chart.

The R2 indicates how well the regression line fits the data. If there is a poor fit, the regression line should not be used as a forecasting tool. The R2 value can range from 0 to 1 and shows the amount of variance in the price data that is explained by the trend line. A value of 1 indicates a perfect fit of the trend line to the price data. In fact, if the R2 is 1, the trend line would be exactly on top of all the price data points. With real price data a perfect fit is unlikely.

Figure 3.3 Natural gas: simple linear regression forecast

Source: U.S. Energy Information Administration.7

The simple linear regression for the natural gas price data is shown in Figure 3.3. The R2 is a good fit of 0.87. This suggests that simple linear regression is a good forecasting tool to use for a commodity, since 87 percent of the variance in price is accounted for by the trend line. There is no rule of thumb of how high an R2 should be to be acceptable, but the higher the R2 the better. If the R2 is acceptable, then the equation can be used to forecast price.

To develop the forecast for April 2014, you use the regression equation y = –0.11x + 6.35. In the equation, y is the forecast for the price of natural gas and x is the number corresponding to the month. As the chart started at January 2014, April 2014 is month 4, so the x value is 4. Solving the equation (y = –0.11(4) + 6.35) shows a price forecast of $5.91/1,000 cubic ft. for April 2014. You can use the regression equation to forecast the price in April 2016. The number for April 2016 is 28. Insert 28 as x and solve the equation. The forecast for April 2016 is $3.27/1,000 cubic ft.

One benefit of simple linear regression is it can be used for any number of periods into the future. As long as you expect prices to follow the same trend, the simple linear regression model should be a good fit. This overcomes the limitation of the time-series models forecasting only one period ahead. However, when the price pattern changes, for example, when resistance or support prices are encountered, the regression developed is no longer appropriate and will not provide an accurate forecast. A forecasting model must be developed fitting the new price pattern. For example, if natural gas prices stabilize and begin to increase in the summer of 2016, you would need to develop new model reflecting the new increasing price trend.

Developing Forecasts for Seasonal Price Patterns

Statistical tools can also be used to develop forecasts if commodity prices show seasonal patterns. A seasonal pattern consistently repeats itself over time. A seasonal model should be used if seasonality in commodity prices is observed. At least two years of data are needed to determine if there are monthly or quarterly seasonal patterns.

Review the quarterly price data for two years shown in Table 3.3. Note that Quarter 5 in the table is the first quarter of the second year. There seems to be a repeating pattern in the first and second years. In each year, the highest prices are in the last quarter, with the next to highest being in the first quarter. If this type of pattern is expected to continue, a seasonal forecasting model should be used. To develop seasonal indices, the first step is to develop a regression equation to fit the data. This line represents prices with seasonality removed. The R2 will likely be low but is not a concern because the trend line itself is not generating the forecast.

Table 3.3 Seasonal price indices

Quarter

Spot price US$/gallon

Trend-line price

Seasonal index

Average index

1

$1.61

$1.33

1.21

1.22

2

$1.35

$1.53

0.88

0.95

3

$1.24

$1.72

0.72

0.71

4

$2.10

$1.92

1.09

1.12

5

$2.61

$2.12

1.23

6

$2.37

$2.32

1.02

7

$1.76

$2.52

0.70

8

$3.14

$2.71

1.16

Source: U.S. Energy Information Administration.8

For the data in Table 3.3, the regression equation is y = 0.198x + 1.131. Then calculate quarterly prices without seasonality by entering the number for each quarter as “x” in the regression equation. Develop a seasonal index for each time period by dividing the actual price in that time period by the trend-line price for that time period. In this example, the seasonal index for Quarter 1 (1.21) is the actual spot price ($1.61/gallon) divided by the regression line price ($1.33/gallon).

To develop final indices to be used for forecasting, average the indices for the same time period across at least two years. In the example, average the indices for Quarter 1 and Quarter 5 (first quarter in year 2) together to get the index used to forecast the first quarter of each year. Repeat for the remaining quarters. The average indices are used to generate the forecast.

Next, use the average seasonal indices to develop a forecast for Quarter 9, which is Quarter 1 of the third year. Return to the regression equation (y = 0.198x + 1.131) and enter 9 for x. This is the trend-line price of $2.91/gallon. Now multiply this price by 1.22, the seasonal index for Quarter 1. The forecast for the first quarter of the third year is $3.56/ gallon. The forecast for Quarter 10, which is the second quarter of the third year, is determined by multiplying the trend-line price of $3.11 by the seasonal index for Quarter 2 (0.95). The forecast for the second quarter of the third year is $2.96.

Assessing Forecast Accuracy

We have examined a number of different forecasting methods in this chapter. Developing and maintaining commodity price forecasts consume time and money, so use the simplest method providing the accuracy needed for the decisions being made. If the consequences of an error are larger, the forecast accuracy should be better.

Forecast error is the key measure of forecast accuracy. The actual price minus the forecast price for a period is its forecast error. An example is shown using a subset of the historical data for natural gas from January 2014 to December 2014 shown in Table 3.4 to compare forecasts with three- and six-month simple moving average models. Although the three-month moving average starts April 2014, July 2014 is the first forecast that can be developed using the six-month simple moving average because data from January to June are needed.

Table 3.4 Forecast error for three- and six-month moving average forecasts

Month

Citygate price ($/1,000 cubic ft.)

Three-month MA

Three-month error

Six-month MA

Six-month error

Jan 2014

$5.56

Feb 2014

$6.41

Mar 2014

$6.57

Apr 2014

$5.64

$6.18

$(0.54)

May 2014

$5.90

$6.21

$(0.31)

Jun 2014

$6.05

$6.04

$0.01

Jul 2014

$5.99

$5.86

$0.13

$6.02

$(0.03)

Aug 2014

$5.49

$5.98

$(0.49)

$6.09

$(0.60)

Sep 2014

$5.51

$5.84

$(0.33)

$5.94

$(0.43)

Oct 2014

$5.16

$5.66

$(0.50)

$5.76

$(0.60)

Nov 2014

$4.91

$5.39

$(0.48)

$5.68

$(0.77)

Dec 2014

$5.15

$5.19

$(0.04)

$5.52

$(0.37)

Source: U.S. Energy Information Administration.9

For example, the actual price for July 2014 is $5.99/1,000 cubic ft. The three-month simple moving average forecast for July 2014 is $5.86/1,000 cubic ft., so the forecast error (price minus forecast) for July is $0.13. The six-month simple moving average forecast for July 2014 is $6.02, so the forecast error is –$0.03.

As shown in Table 3.4, it is difficult to compare the accuracy of forecasting methods by looking at the individual forecast errors period by period. Several metrics make it easier to compare forecasting methods. These are the mean forecast error (MFE), the mean absolute deviation (MAD), and the mean absolute percent error (MAPE).

The MFE is simply the average of the forecast errors over the time periods evaluated. It is a measure of the bias of a forecast. A positive MFE value shows that the forecasts are, on average, too low. On average, the actual price is greater than the forecast price. When the MFE is negative, the forecast tends to be too high relative to the actual price. In the natural gas example for 2014, the three-month simple moving average for natural gas has an MFE of –$2.55 while the six-month forecast has an MFE of –$2.81. Both models overestimate the price, with the three-month model being slightly less biased than the six-month model. Given that the pattern shows a downward trend, forecasting models designed for stable patterns would be expected to overestimate the price. More advanced forecasting models such as trend-adjusted exponential smoothing is specifically designed for a trend should provide a more accurate forecast. To learn more about this method, we suggest consulting a basic statistical text book or the Internet.

A problem with the MFE is high positive and high negative forecast errors can cancel each other out, resulting in a low MFE but poor forecasts. The second metric, MAD, addresses this problem. The MAD is the average of the absolute values of the forecast errors; thus, it reflects the true size of the error better than MFE. The MAD for three- and six-month simple moving average models, respectively, are $0.31 and $0.47, suggesting the three-month moving average is a better method. Given the downward price trend, you would expect a model with fewer periods would be more accurate.

The MAPE is the average of the absolute value error as a percent of the actual price for each time period. In the example, the three-month moving average has a MAPE of 5.8 percent, and the six-month moving average’s value is 8.6 percent. The MFE, MAD, and MAPE suggest the three-month moving average provide a more accurate forecast than the six-month moving average. However, a model specifically incorporating a trend is likely to be even more accurate.

Improving the Forecast

If the values of MFE, MAD, and MAPE suggest the accuracy of the forecast is not acceptable, then additional work must be done. The first step is to adjust parameters with the current model. For example, in the simple moving average model, this would involve increasing or decreasing the number of periods. In the weighted moving average, the weights can be changed, the number of periods, or both. In the simple exponential smoothing model, adjust the values. If adjusting the parameters of the current model does not improve the forecast, a different model can be applied and parameters adjusted until an acceptable forecast is developed.

Developing effective and reliable forecasts requires investing in appropriate organizational resources. You should not strive to develop a perfect forecast, because no matter how good the forecast is, it will contain error. Instead, enough resources should be devoted to develop a forecast that is accurate enough for your organization’s decision-making needs.

Monitoring the Forecast

Once a good forecasting model has been identified, then it should be applied to generate a forecast. Before using this forecast to make decisions, adjust it if necessary based on judgment and experience. The biggest challenge with technical analysis is assessing if the price pattern will continue or change. Understanding market fundamentals, which will be described in Chapter 4, provides information that should be integrated with the technical forecast, using judgment to make the final forecast.

It is important to monitor the forecast’s performance over time and adjust the forecast if needed. Pricing patterns can quickly change, so it is necessary to continuously track a forecast’s performance. To monitor a forecast’s performance over time, a metric called “tracking signal” can be used. The tracking signal is the ratio of the running sum of the forecast errors divided by the MAD.10 Calculate a tracking signal for each period and compare it to control limits determined by ±3 MAD. A point outside the control limits suggests the forecasting model should be reevaluated.

Summary

This chapter describes how to use technical analysis to develop short-term forecasts. Technical analysis relies solely on historical price patterns that in the short-term can be stable, trend, seasonal, or a combination of these patterns. The appropriate statistical tools to use for developing the forecast depend on the price patterns. Time-series models—such as simple moving averages, weighted moving averages, and simple exponential smoothing—are designed for stable price patterns. When trends exist, forecasts can be developed using more complex time-series models or simple linear regression. Season indices are used to develop forecasts when prices have seasonal patterns.

Select the forecast model and parameters providing the accuracy needed by examining forecast error. Simple metrics, such as MFE, MAD, and MAPE, use forecast error to indicate a forecast’s accuracy. Use judgment and experience to adjust technical forecasts before using them to support decisions. Monitor ongoing forecasting performance, which can rapidly change as pricing patterns frequently shift.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset