Spaces:
Running
Running
import pandas as pd | |
def calculate_bollinger_bands(prices, ma_length=20, std_dev_multiplier=2): | |
""" | |
Calculates the Bollinger Bands for a given set of stock prices. | |
Parameters: | |
- prices (pd.Series): A pandas Series containing the stock's closing prices. | |
- ma_length (int): The length of the moving average. Defaults to 20. | |
- std_dev_multiplier (int): The number of standard deviations to calculate the upper and lower bands. Defaults to 2. | |
Returns: | |
- pd.DataFrame: A DataFrame containing the Moving Average, Upper Band, and Lower Band. | |
""" | |
# Calculate the Moving Average | |
ma = prices.rolling(window=ma_length).mean() | |
# Calculate the standard deviation | |
std_dev = prices.rolling(window=ma_length).std() | |
# Calculate the Upper and Lower Bollinger Bands | |
upper_band = ma + (std_dev_multiplier * std_dev) | |
lower_band = ma - (std_dev_multiplier * std_dev) | |
bollinger_bands_df = pd.DataFrame(data={ | |
'Moving_Average': ma, | |
'Upper_Band': upper_band, | |
'Lower_Band': lower_band | |
}) | |
return bollinger_bands_df | |
if __name__ == "__main__": | |
# Example usage | |
data = {'Close': [22, 24, 23, 25, 26, 28, 27, 29, 30, 32, 31, 33]} | |
prices = pd.Series(data['Close']) | |
# User-defined parameters for Bollinger Bands | |
ma_length = 20 # Moving Average length | |
std_dev_multiplier = 2 # Standard Deviation Multiplier | |
# Calculate Bollinger Bands | |
bollinger_bands_df = calculate_bollinger_bands(prices, ma_length, std_dev_multiplier) | |
print(bollinger_bands_df) | |