3 Year Moving Average with Weights Calculator

3 Year Moving Average with Weights Calculator & Guide :root { –primary-color: #004a99; –success-color: #28a745; –background-color: #f8f9fa; –text-color: #333; –border-color: #ddd; –card-background: #fff; –shadow: 0 2px 5px rgba(0,0,0,0.1); } body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background-color: var(–background-color); color: var(–text-color); line-height: 1.6; margin: 0; padding: 0; } .container { max-width: 960px; margin: 20px auto; padding: 20px; background-color: var(–card-background); border-radius: 8px; box-shadow: var(–shadow); } h1, h2, h3 { color: var(–primary-color); text-align: center; margin-bottom: 20px; } h1 { font-size: 2.2em; } h2 { font-size: 1.8em; border-bottom: 2px solid var(–primary-color); padding-bottom: 10px; margin-top: 30px; } h3 { font-size: 1.4em; margin-top: 25px; } .calculator-wrapper { background-color: var(–card-background); padding: 30px; border-radius: 8px; box-shadow: var(–shadow); margin-bottom: 40px; } .input-group { margin-bottom: 20px; text-align: left; } .input-group label { display: block; margin-bottom: 8px; font-weight: bold; color: var(–primary-color); } .input-group input[type="number"], .input-group input[type="text"], .input-group select { width: calc(100% – 22px); padding: 10px; border: 1px solid var(–border-color); border-radius: 4px; font-size: 1em; box-sizing: border-box; } .input-group .helper-text { font-size: 0.85em; color: #666; margin-top: 5px; display: block; } .error-message { color: red; font-size: 0.85em; margin-top: 5px; display: block; min-height: 1.2em; } .button-group { display: flex; justify-content: space-between; margin-top: 30px; gap: 10px; } .button-group button { padding: 12px 20px; border: none; border-radius: 5px; cursor: pointer; font-size: 1em; font-weight: bold; transition: background-color 0.3s ease; flex: 1; } .btn-calculate { background-color: var(–primary-color); color: white; } .btn-calculate:hover { background-color: #003366; } .btn-reset { background-color: #6c757d; color: white; } .btn-reset:hover { background-color: #5a6268; } .btn-copy { background-color: var(–success-color); color: white; } .btn-copy:hover { background-color: #218838; } #results { margin-top: 30px; padding: 25px; background-color: #e9ecef; border-radius: 8px; border: 1px solid #ced4da; } #results h3 { margin-top: 0; color: var(–primary-color); } .result-item { margin-bottom: 15px; font-size: 1.1em; } .result-item strong { color: var(–primary-color); display: inline-block; min-width: 200px; } .primary-result { background-color: var(–primary-color); color: white; padding: 15px; border-radius: 5px; text-align: center; font-size: 1.8em; font-weight: bold; margin-bottom: 20px; box-shadow: inset 0 0 10px rgba(0,0,0,0.2); } .formula-explanation { font-size: 0.95em; color: #555; margin-top: 15px; padding: 10px; background-color: #fff; border-left: 4px solid var(–primary-color); } table { width: 100%; border-collapse: collapse; margin-top: 20px; margin-bottom: 30px; box-shadow: var(–shadow); } th, td { padding: 12px 15px; text-align: left; border: 1px solid var(–border-color); } thead { background-color: var(–primary-color); color: white; } tbody tr:nth-child(even) { background-color: #f2f2f2; } caption { font-size: 1.1em; font-weight: bold; color: var(–primary-color); margin-bottom: 10px; caption-side: top; text-align: left; } canvas { display: block; margin: 20px auto; background-color: var(–card-background); border-radius: 5px; box-shadow: var(–shadow); } .article-content { margin-top: 40px; background-color: var(–card-background); padding: 30px; border-radius: 8px; box-shadow: var(–shadow); } .article-content p, .article-content ul, .article-content ol { margin-bottom: 15px; } .article-content li { margin-bottom: 8px; } .article-content a { color: var(–primary-color); text-decoration: none; } .article-content a:hover { text-decoration: underline; } .faq-item { margin-bottom: 20px; padding: 15px; background-color: #f8f9fa; border-left: 4px solid var(–primary-color); border-radius: 4px; } .faq-item strong { display: block; color: var(–primary-color); margin-bottom: 5px; font-size: 1.1em; } .related-links ul { list-style: none; padding: 0; } .related-links li { margin-bottom: 10px; } .related-links a { font-weight: bold; } .related-links span { font-size: 0.9em; color: #666; display: block; margin-top: 3px; } .highlight { background-color: var(–success-color); color: white; padding: 2px 5px; border-radius: 3px; font-weight: bold; } .text-center { text-align: center; } .text-primary { color: var(–primary-color); } .mb-20 { margin-bottom: 20px; } .mt-30 { margin-top: 30px; } .p-15 { padding: 15px; } .bg-light { background-color: #e9ecef; }

3 Year Moving Average with Weights Calculator

Smooth your data and identify trends with precision using our weighted 3-year moving average calculator.

Weighted 3-Year Moving Average Calculator

Enter your data points for the last three years and assign weights to calculate the smoothed average.

Enter the data value for the first year.
Enter the data value for the second year.
Enter the data value for the third year.
Weight for the oldest year (Year 1). Typically 1.
Weight for the middle year (Year 2). Typically 2.
Weight for the most recent year (Year 3). Typically 3.

Calculation Results

Formula: Weighted Moving Average = [(Value1 * Weight1) + (Value2 * Weight2) + (Value3 * Weight3)] / (Weight1 + Weight2 + Weight3)
Sum of Weighted Values:
Sum of Weights:
Calculation Details:

Chart showing data points and the calculated weighted moving average.

Data Points and Weights
Year Value Weight Weighted Value
Year 1 (Oldest)
Year 2
Year 3 (Most Recent)

Key Assumptions

The calculation assumes the provided values represent sequential periods and the weights reflect their relative importance, with more recent data often given higher weight.

What is 3 Year Moving Average with Weights?

The 3 year moving average with weights is a sophisticated statistical technique used to smooth out short-term fluctuations and highlight longer-term trends or cycles in data. Unlike a simple moving average, where each data point in the period is given equal importance, a weighted moving average assigns different levels of significance to each data point. In the context of a 3-year moving average with weights, the most recent data point is typically given the highest weight, the second most recent a moderate weight, and the oldest data point the lowest weight. This approach provides a more responsive and relevant smoothed value, as it emphasizes current conditions more than past ones. This method is particularly valuable in financial analysis, economic forecasting, and any field where understanding underlying trends amidst noise is crucial. The 3 year moving average with weights helps analysts and decision-makers to see patterns more clearly, make more informed predictions, and react to market changes more effectively.

Who should use it: Financial analysts, economists, investors, business managers, data scientists, and researchers who need to analyze time-series data and identify underlying trends. It's especially useful when recent data is considered more indicative of future performance or current conditions than older data. For instance, a company might use a weighted moving average to track its quarterly sales, giving more importance to the most recent quarter's performance to gauge current momentum.

Common misconceptions: A frequent misunderstanding is that a weighted moving average is overly complex or only for advanced statisticians. While it requires more setup than a simple moving average, the concept is straightforward: give more importance to certain data points. Another misconception is that it perfectly predicts the future; it's a smoothing tool, not a crystal ball. It helps reveal trends but doesn't eliminate all uncertainty. The choice of weights is also critical and can be subjective, leading some to believe there's a single "correct" set of weights, when in reality, the optimal weights often depend on the specific data and analytical goals. Understanding the 3 year moving average with weights involves recognizing its strengths in responsiveness and its dependence on thoughtful weight assignment.

3 Year Moving Average with Weights Formula and Mathematical Explanation

The core of calculating a 3 year moving average with weights lies in assigning a specific importance (weight) to each data point within the three-year window. The formula is designed to produce a smoothed value that reflects the trend more accurately by giving more influence to certain periods, typically the most recent ones.

The formula for a 3-year weighted moving average is:

Weighted Moving Average (WMA) = [(V1 * W1) + (V2 * W2) + (V3 * W3)] / (W1 + W2 + W3)

Where:

  • V1 is the value for the oldest period (Year 1).
  • V2 is the value for the middle period (Year 2).
  • V3 is the value for the most recent period (Year 3).
  • W1 is the weight assigned to the oldest period (Year 1).
  • W2 is the weight assigned to the middle period (Year 2).
  • W3 is the weight assigned to the most recent period (Year 3).

Step-by-step derivation:

  1. Multiply each data point by its assigned weight: Calculate V1 * W1, V2 * W2, and V3 * W3. This step amplifies the influence of data points with higher weights.
  2. Sum the weighted values: Add the results from step 1: (V1 * W1) + (V2 * W2) + (V3 * W3). This gives you the total weighted value.
  3. Sum the weights: Add all the assigned weights together: W1 + W2 + W3. This sum acts as the divisor.
  4. Divide the sum of weighted values by the sum of weights: The final result is the weighted moving average. This normalization step ensures the average is on the same scale as the original data.

This process effectively creates a smoothed data point that is more sensitive to recent changes than a simple moving average, making the 3 year moving average with weights a dynamic tool for trend analysis.

Variables Table

Variable Definitions for Weighted Moving Average
Variable Meaning Unit Typical Range
V1, V2, V3 Data value for Year 1, Year 2, Year 3 respectively Depends on data (e.g., currency, units, index points) Non-negative numbers
W1, W2, W3 Assigned weight for Year 1, Year 2, Year 3 respectively Unitless Positive numbers (often integers like 1, 2, 3)
Weighted Moving Average The smoothed average value over the 3-year period Same as data values (V) Typically within the range of the data values

Practical Examples (Real-World Use Cases)

The 3 year moving average with weights is versatile. Here are two practical examples:

Example 1: Analyzing Company Revenue Growth

A tech company wants to understand its revenue trend over the last three years, giving more importance to recent performance. They decide to use weights 1, 2, and 3 for the oldest, middle, and most recent year, respectively.

  • Year 1 (Oldest) Revenue: $15,000,000 (Weight W1 = 1)
  • Year 2 Revenue: $18,000,000 (Weight W2 = 2)
  • Year 3 (Most Recent) Revenue: $22,000,000 (Weight W3 = 3)

Calculation:

  • Sum of Weighted Values = (15,000,000 * 1) + (18,000,000 * 2) + (22,000,000 * 3) = 15,000,000 + 36,000,000 + 66,000,000 = $117,000,000
  • Sum of Weights = 1 + 2 + 3 = 6
  • Weighted Moving Average = $117,000,000 / 6 = $19,500,000

Interpretation: The weighted moving average of $19,500,000 suggests a strong upward trend in revenue, more so than a simple average ($18,333,333) would indicate, because the most recent, highest revenue figure ($22M) had the highest weight. This provides a more optimistic and current view of the company's trajectory.

Example 2: Tracking Website Traffic Trends

A digital marketing agency monitors monthly unique visitors to a client's website. They want to smooth out daily fluctuations and focus on the quarterly trend, assigning higher weights to more recent months.

  • Month 1 (Oldest) Visitors: 50,000 (Weight W1 = 1)
  • Month 2 Visitors: 55,000 (Weight W2 = 2)
  • Month 3 (Most Recent) Visitors: 62,000 (Weight W3 = 3)

Calculation:

  • Sum of Weighted Values = (50,000 * 1) + (55,000 * 2) + (62,000 * 3) = 50,000 + 110,000 + 186,000 = 346,000
  • Sum of Weights = 1 + 2 + 3 = 6
  • Weighted Moving Average = 346,000 / 6 = 57,666.67 (approx.)

Interpretation: The weighted moving average of approximately 57,667 unique visitors indicates a healthy growth trend. The higher weight on the most recent month (62,000 visitors) pulls the average up, reflecting the recent surge in traffic more strongly than a simple average (52,333 visitors) would. This helps the agency demonstrate positive momentum to the client.

How to Use This 3 Year Moving Average with Weights Calculator

Our calculator simplifies the process of computing a weighted 3-year moving average. Follow these steps:

  1. Input Data Values: Enter the numerical data for each of the three consecutive periods (e.g., years, quarters, months) into the "Year 1 Value", "Year 2 Value", and "Year 3 Value" fields. Year 1 is the oldest period, and Year 3 is the most recent.
  2. Assign Weights: Input the desired weights for each year into the "Weight for Year 1", "Weight for Year 2", and "Weight for Year 3" fields. By default, weights are set to 1, 2, and 3, respectively, emphasizing the most recent data. You can adjust these based on your analysis needs. Ensure weights are positive numbers.
  3. Calculate: Click the "Calculate" button. The calculator will perform the weighted moving average computation.
  4. Review Results: The results section will display:
    • The primary highlighted result: The calculated Weighted Moving Average.
    • Intermediate values: The sum of weighted values and the sum of weights.
    • Calculation Details: A breakdown of the formula applied.
    • A table summarizing your inputs and calculated weighted values for each year.
    • A dynamic chart visualizing the data points and the smoothed average.
    • Key Assumptions: A brief explanation of the underlying principles.
  5. Copy Results: If you need to share or save the results, click the "Copy Results" button. This will copy the main result, intermediate values, and key assumptions to your clipboard.
  6. Reset: To start over with default settings, click the "Reset" button.

How to read results: The primary result (Weighted Moving Average) provides a smoothed value that represents the trend. A rising WMA indicates an upward trend, while a falling WMA suggests a downward trend. The responsiveness of the WMA (compared to a simple moving average) indicates how quickly it reacts to new data, influenced by the chosen weights.

Decision-making guidance: Use the WMA to identify the underlying direction of your data. If the WMA is consistently increasing, it might signal growth opportunities or positive market conditions. Conversely, a decreasing WMA could indicate potential challenges or a need for strategic adjustments. Compare the WMA to the raw data points to understand the degree of smoothing and the impact of recent events.

Key Factors That Affect 3 Year Moving Average Results

Several factors can influence the outcome and interpretation of a 3 year moving average with weights:

  1. Choice of Weights: This is the most direct factor. Higher weights on recent data make the average more responsive to current changes, while lower weights on recent data lead to a smoother, less volatile average. The specific weights chosen (e.g., 1, 2, 3 vs. 1, 1.5, 2) significantly alter the result.
  2. Data Volatility: Highly volatile data (e.g., stock prices, commodity markets) will naturally cause the moving average to fluctuate more, even with smoothing. The effectiveness of the 3 year moving average with weights depends on the data's inherent noise level.
  3. Length of the Moving Average Period: While this calculator focuses on 3 years, using a longer period (e.g., 5 years) would result in a smoother average but less responsiveness to recent changes. A shorter period (e.g., 2 years) would be more responsive but less effective at filtering out short-term noise.
  4. Data Quality and Accuracy: Inaccurate or erroneous data points will distort the moving average calculation. If Year 3's value is an outlier due to a data entry error, the weighted average will be significantly skewed, especially with higher weights on recent data.
  5. Seasonality and Cyclical Patterns: If the data has strong seasonal or cyclical components that don't align perfectly with the 3-year window, the moving average might produce misleading signals. For example, a strong Q4 sales pattern might distort the average if the 3-year window consistently ends in Q4.
  6. Inflation and Economic Factors: For financial data, inflation can erode the purchasing power of historical values. A simple weighted average doesn't inherently adjust for inflation. Comparing nominal values over time might overstate real growth if inflation is high. Adjusting data for inflation before calculation is often necessary for accurate long-term trend analysis.
  7. External Shocks and Events: Unforeseen events (e.g., pandemics, major policy changes, natural disasters) can create significant data spikes or drops. A weighted moving average will incorporate these events, but their impact might be amplified or dampened depending on their timing and the weights assigned.
  8. Changes in Business Operations or Market Dynamics: Fundamental shifts in how a business operates or how a market functions can make historical data less relevant. The weighted moving average might continue to reflect past conditions longer than is useful if these shifts aren't accounted for.

Frequently Asked Questions (FAQ)

Q1: What is the difference between a simple moving average and a weighted moving average?

A: A simple moving average (SMA) gives equal importance to all data points within the period. A weighted moving average (WMA) assigns different levels of importance (weights) to data points, typically giving more significance to more recent data, making it more responsive to current trends.

Q2: How do I choose the right weights for my 3-year moving average?

A: The choice of weights depends on your analytical goals. If you want the average to react quickly to recent changes, assign higher weights to more recent data (e.g., 1, 2, 3). If you need a smoother trend line and are less concerned about short-term fluctuations, you might use equal weights (like a simple moving average) or weights that increase less dramatically. Experimentation and understanding the data's characteristics are key.

Q3: Can I use negative values in the 3 year moving average with weights calculator?

A: While the calculator technically accepts negative numbers, in most financial and economic contexts, data points like revenue, sales, or traffic are non-negative. Negative values might represent losses or specific accounting adjustments. Ensure your weights are always positive.

Q4: What does a weighted moving average of $19,500,000 mean in Example 1?

A: It means that after considering the revenue from each of the three years and giving more importance to the most recent year's revenue, the smoothed average revenue trend is $19,500,000. It's a representative value that smooths out fluctuations and highlights the overall growth trajectory.

Q5: Is a 3-year moving average with weights suitable for all types of data?

A: It's most effective for time-series data where identifying trends over a medium-term horizon is important. It might be less suitable for data with very high frequency, strong seasonality that doesn't align with the period, or data where all points are equally important.

Q6: How does the calculator handle data entry errors?

A: The calculator includes basic inline validation to prevent non-numeric or negative inputs for weights. It will show error messages below the relevant fields. However, it relies on the user to input accurate data values for the years.

Q7: Can I use this calculator for more than 3 years of data?

A: This specific calculator is designed for a 3-year window. For longer periods, you would need a different calculator or adjust the methodology. The principle of weighted moving averages can be extended to any number of periods.

Q8: What is the benefit of using weights compared to a simple moving average?

A: The primary benefit is increased responsiveness. By weighting recent data more heavily, the WMA reacts faster to new information and trends, providing a more up-to-date picture of the underlying movement compared to the lagging nature of an SMA.

© 2023 Your Financial Website. All rights reserved.
var chartInstance = null; function validateInput(value, id, errorId, min, max) { var errorElement = document.getElementById(errorId); errorElement.textContent = "; if (value === ") { errorElement.textContent = 'This field cannot be empty.'; return false; } var numValue = parseFloat(value); if (isNaN(numValue)) { errorElement.textContent = 'Please enter a valid number.'; return false; } if (min !== undefined && numValue max) { errorElement.textContent = 'Value cannot be greater than ' + max + '.'; return false; } return true; } function calculateMovingAverage() { var year1Value = document.getElementById('year1Value').value; var year2Value = document.getElementById('year2Value').value; var year3Value = document.getElementById('year3Value').value; var weight1 = document.getElementById('weight1').value; var weight2 = document.getElementById('weight2').value; var weight3 = document.getElementById('weight3').value; var isValid = true; isValid = validateInput(year1Value, 'year1Value', 'year1ValueError') && isValid; isValid = validateInput(year2Value, 'year2Value', 'year2ValueError') && isValid; isValid = validateInput(year3Value, 'year3Value', 'year3ValueError') && isValid; isValid = validateInput(weight1, 'weight1', 'weight1Error', 0.0001) && isValid; // Weights must be positive isValid = validateInput(weight2, 'weight2', 'weight2Error', 0.0001) && isValid; isValid = validateInput(weight3, 'weight3', 'weight3Error', 0.0001) && isValid; if (!isValid) { document.getElementById('results').style.display = 'none'; return; } var numYear1Value = parseFloat(year1Value); var numYear2Value = parseFloat(year2Value); var numYear3Value = parseFloat(year3Value); var numWeight1 = parseFloat(weight1); var numWeight2 = parseFloat(weight2); var numWeight3 = parseFloat(weight3); var weightedValue1 = numYear1Value * numWeight1; var weightedValue2 = numYear2Value * numWeight2; var weightedValue3 = numYear3Value * numWeight3; var sumWeightedValues = weightedValue1 + weightedValue2 + weightedValue3; var sumOfWeights = numWeight1 + numWeight2 + numWeight3; var weightedMovingAverage = sumWeightedValues / sumOfWeights; document.getElementById('weightedMovingAverage').textContent = weightedMovingAverage.toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 }); document.getElementById('sumWeightedValues').textContent = sumWeightedValues.toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 }); document.getElementById('sumOfWeights').textContent = sumOfWeights.toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 }); document.getElementById('calculationDetails').textContent = "[(Value1 * Weight1) + (Value2 * Weight2) + (Value3 * Weight3)] / (Weight1 + Weight2 + Weight3)"; document.getElementById('tableYear1Value').textContent = numYear1Value.toLocaleString(); document.getElementById('tableWeight1').textContent = numWeight1; document.getElementById('tableWeightedValue1').textContent = weightedValue1.toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 }); document.getElementById('tableYear2Value').textContent = numYear2Value.toLocaleString(); document.getElementById('tableWeight2').textContent = numWeight2; document.getElementById('tableWeightedValue2').textContent = weightedValue2.toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 }); document.getElementById('tableYear3Value').textContent = numYear3Value.toLocaleString(); document.getElementById('tableWeight3').textContent = numWeight3; document.getElementById('tableWeightedValue3').textContent = weightedValue3.toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 }); document.getElementById('results').style.display = 'block'; updateChart(numYear1Value, numYear2Value, numYear3Value, weightedMovingAverage); } function resetCalculator() { document.getElementById('year1Value').value = "; document.getElementById('year2Value').value = "; document.getElementById('year3Value').value = "; document.getElementById('weight1').value = '1'; document.getElementById('weight2').value = '2'; document.getElementById('weight3').value = '3'; document.getElementById('year1ValueError').textContent = "; document.getElementById('year2ValueError').textContent = "; document.getElementById('year3ValueError').textContent = "; document.getElementById('weight1Error').textContent = "; document.getElementById('weight2Error').textContent = "; document.getElementById('weight3Error').textContent = "; document.getElementById('results').style.display = 'none'; if (chartInstance) { chartInstance.destroy(); chartInstance = null; } } function copyResults() { var weightedAvg = document.getElementById('weightedMovingAverage').textContent; var sumWeighted = document.getElementById('sumWeightedValues').textContent; var sumWeights = document.getElementById('sumOfWeights').textContent; var assumptions = document.getElementById('keyAssumptions').textContent.replace('Key Assumptions', 'Key Assumptions:'); var textToCopy = "Weighted 3-Year Moving Average Results:\n\n"; textToCopy += "Primary Result: " + weightedAvg + "\n"; textToCopy += "Sum of Weighted Values: " + sumWeighted + "\n"; textToCopy += "Sum of Weights: " + sumWeights + "\n\n"; textToCopy += assumptions; navigator.clipboard.writeText(textToCopy).then(function() { // Optional: Show a confirmation message var copyButton = document.querySelector('.btn-copy'); var originalText = copyButton.textContent; copyButton.textContent = 'Copied!'; setTimeout(function() { copyButton.textContent = originalText; }, 2000); }).catch(function(err) { console.error('Failed to copy text: ', err); // Optional: Show an error message }); } function updateChart(val1, val2, val3, wma) { var ctx = document.getElementById('movingAverageChart').getContext('2d'); // Destroy previous chart instance if it exists if (chartInstance) { chartInstance.destroy(); } var dataPoints = [val1, val2, val3]; var labels = ['Year 1', 'Year 2', 'Year 3']; // Create a new chart instance chartInstance = new Chart(ctx, { type: 'line', data: { labels: labels, datasets: [{ label: 'Data Values', data: dataPoints, borderColor: 'var(–primary-color)', backgroundColor: 'rgba(0, 74, 153, 0.2)', fill: false, tension: 0.1 }, { label: 'Weighted Moving Average', data: [null, null, wma], // Start with nulls to align with Year 3 borderColor: 'var(–success-color)', borderWidth: 3, fill: false, pointRadius: 6, pointBackgroundColor: 'var(–success-color)' }] }, options: { responsive: true, maintainAspectRatio: false, scales: { y: { beginAtZero: false, title: { display: true, text: 'Value' } }, x: { title: { display: true, text: 'Year' } } }, plugins: { legend: { position: 'top', }, title: { display: true, text: '3-Year Weighted Moving Average Trend' } } } }); } // Initial calculation on load if default values are present (optional) // document.addEventListener('DOMContentLoaded', function() { // // If you want to pre-fill and calculate on load, uncomment below // // document.getElementById('year1Value').value = '15000'; // // document.getElementById('year2Value').value = '16500'; // // document.getElementById('year3Value').value = '17000'; // // calculateMovingAverage(); // });

Leave a Comment