2017-11-07 7 views
-3

私はMicrosoftの履歴データを使って株式市場予測アルゴリズムを提供します。モデルはうまくいっているようですが、モデルには将来の価格が別のトレーニングインプットとして含まれているため、このプロジェクトを使って将来の価格を予測することが可能かどうかはわかりません。私はこのコードで多くの時間を費やしましたが、私が正しいかどうかはわかりません。もし誰かがそれを見て疑問を解決できたら、私は感謝しています。私はそれが効率的かどうかということではありませんが、このモデルを使ってこの価格を予測し、効率的かどうかをどうやって調べることができますか?何か案は?主な部分は、このようになります。一般的なルールとしてこのアルゴリズムを使用して将来の株価を予測することは可能ですか?

# average_upcoming_5_days_predicted += predictions_df.loc[temp_date, 'prices'] 
# # Converting string to date time 
# temp_date = datetime.strptime(temp_date, "%Y-%m-%d").date() 
# # Adding one day from date time 
# difference = temp_date + timedelta(days=1) 
# # Converting again date time to string 
# temp_date = difference.strftime('%Y-%m-%d') 

# start_year = datetime.strptime(train_start_date, "%Y-%m-%d").date().month 

years = [2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016] 
prediction_list = [] 
for year in years: 
    # Splitting the training and testing data 
    train_start_date = str(year) + '-01-01' 
    train_end_date = str(year) + '-10-31' 
    test_start_date = str(year) + '-11-01' 
    test_end_date = str(year) + '-12-31' 
    train = df.ix[train_start_date : train_end_date] 
    test = df.ix[test_start_date:test_end_date] 

    # Calculating the sentiment score 
    sentiment_score_list = [] 
    for date, row in train.T.iteritems(): 
     sentiment_score = np.asarray([df.loc[date, 'compound'],df.loc[date, 'neg'],df.loc[date, 'neu'],df.loc[date, 'pos']]) 
     #sentiment_score = np.asarray([df.loc[date, 'neg'],df.loc[date, 'pos']]) 
     sentiment_score_list.append(sentiment_score) 
    numpy_df_train = np.asarray(sentiment_score_list) 
    sentiment_score_list = [] 
    for date, row in test.T.iteritems(): 
     sentiment_score = np.asarray([df.loc[date, 'compound'],df.loc[date, 'neg'],df.loc[date, 'neu'],df.loc[date, 'pos']]) 
     #sentiment_score = np.asarray([df.loc[date, 'neg'],df.loc[date, 'pos']]) 
     sentiment_score_list.append(sentiment_score) 
    numpy_df_test = np.asarray(sentiment_score_list) 

    # Generating models 
    mlpc = MLPClassifier(hidden_layer_sizes=(100, 200, 100), activation='relu', 
         solver='lbfgs', alpha=0.005, learning_rate_init = 0.001, shuffle=False) # span = 20 # best 1 
    mlpc.fit(numpy_df_train, train['prices']) 
    prediction = mlpc.predict(numpy_df_test) 

    prediction_list.append(prediction) 
    #print train_start_date + ' ' + train_end_date + ' ' + test_start_date + ' ' + test_end_date 
    idx = pd.date_range(test_start_date, test_end_date) 
    #print year 
    predictions_df_list = pd.DataFrame(data=prediction[0:], index = idx, columns=['prices']) 

    difference_test_predicted_prices = offset_value(test_start_date, test, predictions_df_list) 
    # Adding offset to all the advpredictions_df price values 
    predictions_df_list['prices'] = predictions_df_list['prices'] + difference_test_predicted_prices 
    predictions_df_list 

    # Smoothing the plot 
    predictions_df_list['ewma'] = pd.ewma(predictions_df_list["prices"], span=20, freq="D") 
    predictions_df_list['actual_value'] = test['prices'] 
    predictions_df_list['actual_value_ewma'] = pd.ewma(predictions_df_list["actual_value"], span=20, freq="D") 
    # Changing column names 
    predictions_df_list.columns = ['predicted_price', 'average_predicted_price', 'actual_price', 'average_actual_price'] 
    predictions_df_list.plot() 
    predictions_df_list_average = predictions_df_list[['average_predicted_price', 'average_actual_price']] 
    predictions_df_list_average.plot() 

#  predictions_df_list.show() 

    # checking the performance of training data itself 
prediction, bias, contributions = ti.predict(rf, numpy_df_train) 
idx = pd.date_range(train_start_date, train_end_date) 
predictions_df1 = pd.DataFrame(data=prediction[0:], index = idx, columns=['prices']) 
predictions_df1.plot() 
train['prices'].plot() 

答えて

3

を:あなたは、時間の長い期間のための株式市場を予測することはできません。十分に掘り下げれば、しばらくの間作品との相関関係が見いだされ、その後は分かりづらい理由があることもあります。 このような一時的な解決策を見つけたら、モンをロードすることはできますが、アルゴリズムが動作しなくなったときにすぐに失う可能性があります。

なぜですか?資源の多くが付いているこの市場での選手の

  1. LOTS、 - 、十分なプレイヤーがこのalgorihtmを使用している場合、それは有用で停止します。
  2. 時系列間の偽の相関は偶然に起こります。それはまた偶然に止まる。
+0

たとえば、MomentumとRNNまたはこのアルゴリズムを使用することをお勧めしますが、明日の株価のみを予測しますか? – wahtdbogh

+0

@JohnSmith私は言うことができません - それは明日のために働くかもしれません、またはそうでないかもしれません。 17日には動作しないが、17日には動作しないかもしれない。 –

+0

短期間で株式市場を予測するためにこのプロジェクトをどのように使うことができますか? – wahtdbogh

1

オフラインでのパフォーマンスが満足できる場合は、明日の株価を予測してください。

たとえば、今日の予測が明日の株価を押し上げるかどうかを確認できます。それから、あなたが正しい軌道にいるかどうかを判断するのに十分な時間、この日を毎日繰り返す。

+0

@JohnSmithあなたがしようとしていることの全体的なポイントは、孤独が価格を予測するかどうかを確認することです。それで、時間の経過とともに予測されることを見て、それがどれほど良いかを判断します。他のモデルと同じように、現実との予測をテストする必要があります。 – Carlos

+0

私はそれが効率的かどうかを意味するわけではありませんが、このモデルを使用してこの価格を予測し、効率的かどうかをどのように予測することができますか?何か案は? – wahtdbogh

+0

モデルが現在予測していることがわからないことを正しく理解していますか? – Kris

0

明日何が起こるかを述語できますか?あなたはそんなことを述語することはできません。

市場に多少の経験がある場合、影響を受ける変数が多すぎることがわかります。たとえば、四半期報告書は株価/方向に影響を与えます。アルゴリズムが企業の収入をどのように述語化できるのか?特に世界的な企業であれば、世界中の製品を販売しています。それは単に不可能です。

このようなアルゴリズムがあったと仮定しましょう。アナリストが手を挙げて述語を見ています。事実、アナリストは彼らの前提に間違っている。それはただの仮定です。

政治、戦争、犯罪、天気などが株式市場に影響します。そのようなアルゴリズムを定義することはできません。

+0

私はそれが効率的かどうかを意味するわけではありませんが、このモデルを使ってこの価格を予測し、効率的かどうかをどうやって調べることができますか?何か案は? – wahtdbogh

+0

@JohnSmithもしあなたが本当に株式市場のためのアルゴリズムを使用したい場合は、いくつかの研究を行いmlを学び、あなたの研究にあなた自身のプログラムの基礎を構築し、他の誰かに依存しないでください。オープンソース: –

+0

できません。あなたはモデルで作業し、手作業でそれを形作ることができるので、株式市場の歴史の90%に当てはまります。しかし、明日は新しい日です。あなたのモデルは50-50チャンスです。それは予測するか、しないかのどちらかです。私は、クリスの提案と一緒に行くと言うでしょう - 今日から毎日、毎週仕事をして、それがどのように進行するかを見てください。とにかく、私はそれに基づいて投資することをお勧めしません。 – Vinny

関連する問題