さくら VPS 相関係数予測
さくら VPS 相関係数豪ドル/円予測ファイル作成
さくら VPS 相関係数豪ドル/円予測ファイルで使用するデータファイル pand-mg-1.pyが作成できましたので
相関係数予測精度向上ファイルまとめ
で作成した、相関係数予測精度向上ファイル dsc-6.py と合体します。
print 文はコメント化しています。
# coding: utf-8 import numpy as np import pandas as pd import matplotlib.pyplot as plt import datetime from datetime import datetime as dt from sklearn import preprocessing from mplfinance.original_flavor import candlestick_ohlc # pand-mg-1.py Start # 古い大容量データ取込み xl_df1 = pd.read_csv("public_html/manep-w/mane_chart_go_long.csv", encoding="cp932") # print(xl_df1) # 新小容量データ取込み xl_df2 = pd.read_csv("public_html/manep/mane_chart_go.csv", encoding="cp932") # print(xl_df2) # データを結合する xl_df12 = pd.concat([xl_df1, xl_df2]) # データの一覧 # print(xl_df12) # 重複データ削除 xl_df = xl_df12.drop_duplicates(keep='first', ignore_index=True) # print(xl_df) # CSVファイルに書込・保存 # ヘッダーもインデックスも含めて出力。 xl_df.to_csv('public_html/manep-w/mane_chart_go_long.csv', quoting=1, index=False, encoding='cp932') # ここから dsc-6.py def addBusinessDays(from_date, add_days): cur_date8 = [] # 21/03/30 cur_date4 = [] # 3/30 business_days_to_add = add_days current_date = from_date while business_days_to_add > 0: current_date += datetime.timedelta(days=1) weekday = current_date.weekday() if weekday >= 5: # sunday = 6 continue #土日は以下はスキップ # 年/月/日として文字列にする #例 21/03/30 e11 = current_date.strftime("%y/%m/%d") e22 = e11.replace("/0", "/") e33 = e22[3:] # 21/ 削除 cur_date8.append(e22) cur_date4.append(e33) business_days_to_add -= 1 return cur_date8, cur_date4 # xl_df = pd.read_csv("public_html/manep-w/mane_chart_go_long.csv", encoding="cp932") Open = xl_df["始値(売り)"].values High = xl_df["高値(売り)"].values Low = xl_df["安値(売り)"].values Close = xl_df["終値(売り)"].values Date = xl_df["日付"].values tstr = Date[-1] # print(tstr) tdatetime = dt.strptime(tstr, '%Y/%m/%d %H:%M:%S') # tdatetime = dt.strptime(tstr, '%Y/%m/%d %H:%M') # 文字列をdatetimeに変換するのがstrptime()関数 # datetime.datetime.strptime(文字列, 書式指定文字列) lastday = addBusinessDays(tdatetime, 5) # print(lastday) Idx = xl_df.index """ print(Idx) print(Close) """ Idx_25 = Idx[-25:] - Idx[-1] + 98 + 5 # 表示実値は0~98の99個、98シフト """ print("Idx_25") print(Idx_25) """ n_25 = 25 sl_cl_t = [] for n in range(Idx[-24]): sl_cl_t = np.append(sl_cl_t, Close[n:n+n_25]).reshape(n+1,n_25) """ print("sl_cl_t") print(sl_cl_t) print(sl_cl_t.shape) """ sl_cl_20 = sl_cl_t[:,:20] """ print("sl_cl_20") print(sl_cl_20) """ # kijyu = sl_cl_t[-1][5:] kijyu = sl_cl_t[-1, 5:] # print("基準値") # print(kijyu) cor = np.corrcoef(kijyu, sl_cl_20) # print("cor") # print(cor) cor1 = cor[1:, 0] cor_max = np.amax(cor1) # print('相関max=', cor_max) c_max_id = np.argmax(cor1) # print('相関max_ID=', c_max_id) # print(sl_cl_20[c_max_id]) # print("相関する25個のデータ") # print(sl_cl_t[c_max_id]) # print("基準") # print(kijyu) # plt.plot(sl_cl_t[c_max_id]) # 相関する25個 # plt.plot(kijyu) # ラスト20個 # plt.show() # インスタンスの作成 sscaler = preprocessing.StandardScaler() x = sl_cl_t[c_max_id].reshape(-1,1) # print("元データsl_cl_t[c_max_id]を1×25 次元に変換") # print(x) y = sscaler.fit_transform(x) # print("sl_cl_t[c_max_id]標準偏差値") # print(y) # 基準 sl_cl_t[-1]の標準偏差 s と平均値 m s = np.std(sl_cl_t[-1]) # print("標準偏差 s = ", s) m = np.mean(sl_cl_t[-1]) # print("平均値 m = ", m) w = y * s + m """ print("予測値 w") print(w) plt.plot(w) # 相関する25個 plt.plot(kijyu) # ラスト20個 plt.show() """ # 追加相関③ Date_99 = Date[-99:] print(Date_99) xDate = [] xD = [] for i, key in enumerate(Date_99): if(i % 10 == 0): e4 = str(key)[4:10] e6 = e4.replace("/0", "/") e8 = e6.lstrip("/") xDate.append(e8) xD.append(i) xDate.append(lastday[1][4]) xD.append(i + 5) #5日間の予測日の追加 # print(xDate) # print(xD) Idx_99 = Idx[-99:] - Idx[-99] # print(Idx_99) Open_99 = Open[-99:] High_99 = High[-99:] Low_99 = Low[-99:] Close_99 = Close[-99:] ohlc = zip( Idx_99, Open_99, High_99, Low_99, Close_99) fig = plt.figure( figsize=(8.34, 5.56)) ax = fig.add_subplot(1,1,1) ax.grid() candlestick_ohlc( ax, ohlc, width=0.5, alpha = 1, colorup='r', colordown='g') plt.xticks(xD, xDate) plt.title('AUS$ / JPY chart') plt.xlabel('Date') plt.ylabel('Yen') plt.plot(Idx_25, w) # plt.show() plt.savefig( '/home/yamada/public_html/manep-img/mane_chart_dsc.png') # データ保存 w_5 = np.round(w[-5:], 3) # 3桁まで表示 # print(w_5) cor_max100 = np.round(cor_max * 100, 3) w_5 = np.append(w_5, cor_max100) # print(w_5) w_5 = pd.DataFrame(w_5) # print(w_5) lastday_me = np.append(lastday[0], '信頼度(%)') lastday_pd = pd.DataFrame(lastday_me) # print(lastday_pd) df_concat = pd.concat([lastday_pd, w_5], axis = 1) # print(df_concat) df_concat.to_csv( '/home/yamada/public_html/manep-img/mane_chart_dsc.csv', header=False, index=False) # yamada@yama:~$ python3 public_html/dsc-7.py
ここまでで、さくら VPS 相関係数豪ドル/円予測ファイル dsc-7.py が作成できました。
引き続き、このファイルの保存と動作確認をしていきます。