さくら 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 が作成できました。
引き続き、このファイルの保存と動作確認をしていきます。


  • さくら VPS 相関係数豪ドル/円予測ファイル保存 に進む
  • さくら VPS 相関係数豪ドル/円予測データ準備ファイル動作確認 に戻る
  • さくら VPS 相関係数豪ドル/円予測 に戻る
  • 70VPS に戻る