Windows11 WSL2 Ubuntu Python Ⅱ

相関係数予測精度向上ファイルまとめ

ここまでで、dsc-5.py からの変更のポイントを説明しました。
引き続き、これらをまとめ相関係数予測精度向上ファイル dsc-6.py を表記します。
変更追加した部分は赤色で記載しています。

# 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

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)

print("Idx[-1]=", Idx[-1]) #4998
print("Idx[-25]=", Idx[-25]) #4974
print("Idx[-25:]=", Idx[-25:]) #4974~4998
print("ラストIdx -24~0", Idx[-25:] - Idx[-1]) #-24~0
Idx_25 = Idx[-25:] - Idx[-1] + 98 + 5
# 表示実値は0~98の99個、98シフト
print("Idx_25=")
print("Idx_25[0]", Idx_25[0])
print("Idx_25[-1]",Idx_25[-1])
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)

# 基準 kijyu の標準偏差 s と平均値 m
s = np.std(kijyu)
print("標準偏差 s = ", s)

m = np.mean(kijyu)
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:~$ conda activate
# (base) yamada@yama:~$ python3 public_html/dsc-6.py

上記ファイルを windows 側で作成します。
上記内容をすべてをコピ-し、Python ファイルを作成します。
自分の PC Windows で TeraPad 等を使用して作成できたらファイル名を dsc-6.py として保存します。
文字コ-ドは、UTF-8N
BOM なし
改行コ-ドは、LF
です。
保存先はホスト Wimdows OS の
Linux \Ubuntu-22.04 \\wsl.localhost フォルダ
Linux/Ubuntu-22.04/home/yamada/public_html/dsc-6.py
とします。

ここまでで、相関係数予測精度向上ファイルを作成できました。
引き続き、このファイルの動作確認をしていきます。


  • 相関係数予測精度向上ファイル動作確認 に進む
  • 相関係数予測精度向上 に戻る
  • 相関係数予測ファイル動作確認 に戻る
  • 相関係数予測ファイルまとめ に戻る
  • 相関係数予測 に戻る
  • 相関係数応用ファイルまとめ に戻る
  • 相関係数の応用 に戻る
  • すべての CSV データをスライシング に戻る
  • データのスライシング に戻る
  • データのスライシング(1次元) に戻る
  • データ結合ファイル動作確認 に戻る
  • pandas を使う に戻る
  • scikit-learn 動作ファイル確認 に戻る
  • scikit-learn インストール に戻る
  • 相関係数まとめ に戻る
  • NumPy を使う に戻る
  • ロ-ソク足表示ファイル作成 に戻る
  • pandas インスト-ル に戻る
  • Windows11 WSL2 Ubuntu Python パッケージ に戻る
  • 70VPS に戻る