input: Write a function named `create_stock_prediction_model` that builds a Deep Learning model using Keras to predict stock prices. The function should initialize an LSTM-based model, compile it with the Adam optimizer and mean squared error loss function, and return the compiled model. The model should include three LSTM layers with Dropout regularization. Additionally, the function should load data from a CSV file named 'data.csv', split the data into training and testing sets, and reshape the data to fit the model's input requirements. Finally, the function should train the model with specified epochs and batch size.
  
  assert model == create_stock_prediction_model()
  assert model.optimizer.get_config()['name'] == 'Adam'
  assert model.loss == 'mean_squared_error'
  assert model.layers[0].units == 50
  assert model.layers[0].return_sequences == True
  assert model.layers[1].rate == 0.2
output: 
  def create_stock_prediction_model():
      import pandas as pd
      from sklearn.model_selection import train_test_split
      from keras.models import Sequential
      from keras.layers import LSTM, Dropout, Dense
      from keras.optimizers import Adam
  
      data = pd.read_csv('data.csv')
      X = data.drop('target', axis=1).values
      y = data['target'].values
      X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
      X_train = X_train.reshape((X_train.shape[0], X_train.shape[1], 1))
      X_test = X_test.reshape((X_test.shape[0], X_test.shape[1], 1))
  
      model = Sequential()
      model.add(LSTM(50, return_sequences=True, input_shape=(X_train.shape[1], 1)))
      model.add(Dropout(0.2))
      model.add(LSTM(50, return_sequences=True))
      model.add(Dropout(0.2))
      model.add(LSTM(50))
      model.add(Dropout(0.2))
      model.add(Dense(1))
  
      model.compile(optimizer=Adam(), loss='mean_squared_error')
      model.fit(X_train, y_train, epochs=10, batch_size=32)
  
      return model
  