コスパ志向のエンジニアブログ

趣味 システムトレード

google pixel6a Microsoft 購入 Authenticator

のりかえ(MNP)1円販売が再開されているみたいで、前から欲しかった”google pixel6a”を購入しました。

初期の感想はとても気に入りました。 若干重いがサイズ感が素晴らしい。

最初はノジマで9800円で検討していましたが、「半年以内に解約すると今後契約できなくる」と圧力をかけてこられ契約するきをなくしました。そもそも、契約の自由に反するのではないかと。。。

そこで、A社では1円だが2年後に返却パターン、S社にいくと端末が1円返却なしだったのでS社にしました。 プラン指定ではありますが、翌月から変更できます。因みにキャリアは未だに高い(1GBで3000円ほど)2か月ぐらい使用して解約することにします。

スマホを買い替えると面倒なのがAuthenticatorなど2段階認証移行。 Googleは簡単、エクスポートでQRコードを読み込むだけ、Microsoft AuthenticatorはMicrosoftアカウントにバックアップして新しい端末でログインする、という手間があり、しかもうまく同期できなかったので一旦アンインストールしました。

authyは既存のバックアップパスワード設定後入力するだけでした。

Numpyだけで重回帰分析 機械学習 株価予測

scikit-learnを使えば簡単ですが最初はどのようになっているか、Numpyだけで重回帰分析も勉強になります。

説明変数は過去n日の対数リターンを使います。

データの読み込み

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split

import yfinance as yf

code = '2432.T'
df = yf.download(code, start="2010-12-20", end="2023-02-03")
Date Open High Low Close Adj Close Volume
2023-01-27 00:00:00+09:00 1808.0 1813.0 1794.0 1796.0 1796.0 302400
2023-01-30 00:00:00+09:00 1793.0 1806.0 1791.0 1799.0 1799.0 341400
2023-01-31 00:00:00+09:00 1797.0 1821.0 1797.0 1818.0 1818.0 410100
2023-02-01 00:00:00+09:00 1819.0 1827.0 1801.0 1802.0 1802.0 367000
2023-02-02 00:00:00+09:00 1797.0 1803.0 1786.0 1789.0 1789.0 363500

ベースラインの作成、学習

def prepare_lags(_data):
  '''ラグ計算'''

  #入力として使用する日数(ラグというらしい)
  lags = 5
  cols = []
  for lag in range(1, lags + 1):
      col = f'lag_{lag}'
      _data[col] = _data['returns'].shift(lag)
      cols.append(col)
  _data.dropna(inplace=True)
  return _data, cols


def fit(_data):
  '''Numpyのlinalg.lstsqで重回帰分析'''

  return np.linalg.lstsq(_data[cols],
                                    _data['returns'],
                                    rcond=None)[0]

#対数リターン
df['returns'] = np.log(df['Adj Close'] / df['Adj Close'].shift(1))
#欠損値の行を削除
df.dropna(inplace=True)
# 学習、検証分割
train, test = train_test_split(df, train_size=0.7, shuffle=False)

data, cols = prepare_lags(train)
#係数生成
reg = fit(data)
print(reg)
array([ 0.06145026, -0.02996533,  0.00528902,  0.00780436,  0.01727923])

予測

np.dot: 内積

np.sign: 引数にnumpy.ndarrayを指定する。負の値は-1、正の値は1、0は0となるnumpy.ndarrayが返される。

# 予測
data['prediction'] = np.dot(data[cols], reg)
data['prediction_sign'] = np.sign(data['prediction'])

対数リターンと予測値を表示、線形回帰では予測値と大きくズレている

方向性が重要

data[['returns', 'prediction']].iloc[lags:].plot(figsize=(15, 6))

正解率

hits = np.sign(data['returns'] *  data['prediction']).value_counts()
hits.values[0] / sum(hits)
0.5067178502879078

バックテスト

#予測ポジションとリターンをかけて収益率を計算
data['strategy'] = data['prediction_sign'] * data['returns']
# 株価と戦略のグロスパフォーマンスをプロット
data[['returns', 'strategy']].cumsum().apply(np.exp).plot(figsize=(10, 6))
# 株価と戦略のグロスパフォーマンスを算出
data[['returns', 'strategy']].sum().apply(np.exp)
returns     0.845186
strategy    2.931524
dtype: float64

テストデータで検証

data, cols = prepare_lags(test)
data['prediction'] = np.dot(data[cols], reg)
data['prediction_sign'] = np.sign(data['prediction'])
hits = np.sign(data['returns'] *  data['prediction']).value_counts()
print('ヒット率: ', hits.values[0] / sum(hits))

data['strategy'] = data['prediction_sign'] * data['returns']
data[['returns', 'strategy']].cumsum().apply(np.exp).plot(figsize=(10, 6))
data[['returns', 'strategy']].sum().apply(np.exp)
ヒット率: 0.5092378752886836
returns     0.850081
strategy    2.575374
dtype: float64

まとめ

かなり勉強になるのでおすすめです。

日経マネー 2021年 11 月号の結果

日経マネー 2021年 11 月号では上方修正について記載されています。 第一四半期で上方修正した銘柄は中間決済でも約半数が上方修正するそうです。

2021年10月~本日2023年1月23日までをプロットしてみました。

狙い目1 上期のみ上方修正

狙い目2 通期も同額上方修正

狙い目3 修正後も高進捗率

こちらは直後に跳ねた銘柄が少しありますね。

richmanbtcさんのチュートリアルをやってみた 機械学習

一年ぐらい前に読んで、やってみたかったんですが1年手付かずで実装遅れた colabで動いたからdocker使ってない

手法はATR*0.5に指値、当時はそれだけで、なぜか右肩上がりなので機械学習不要?

現状は横ばい

ソースの解読に有益な記事があり助かりました。

richmanbtcさんのチュートリアルをじっくり読んでみた|黒枝|note

勉強メモ(python機械学習で仮想通貨bot作成)|opecry|note

久しぶりのEA作成

最近は機械学習の勉強とpythonbot開発をやっていたので、mqlであまり作ってませんでした。

気になるロジックがあったので作成してみたら以外と良かった。 シストレだとmqlの方が簡単なんでMT4、MT5は楽です。

1万通貨、USDJPY、1ポジ(ナンピン無し) リスクリターン率:13.9

結果はこちら mt4バックテスト結果

ドル円と日米金利差の相関

ネットで情報が少なかったので調べてみました。

日米金利差とメディアが騒ぎすぎじゃないかと思う。 ドル円だけではなくポンド、ユーロに対してもドル高だし、為替はそんな単純ではないだろう。 2020-8頃に金利差はかなり低いがドル円は安くはない

過去10年の相関係数は0.65とやや相関あり

買ってよかった物 4選 5000円以下 2022

インフルエンサーの見ると、たいてい高額で手が出せない。
自分は1万円以上する物は滅多に買わない、と言うより買えない。

掛け布団カバー シングル グッドデザイン賞 TEIJIN ツイル織り ひもなし

綿100%で冬は温かさが増す。このおかげで今の所、毛布無し羽毛布団一枚で十分です。付け替えも簡単
item.rakuten.co.jp

ダイソー マルチスライサー

千切りキャベツが簡単にできて、めっちゃおいしい
ホルダーが付いてないのでケガには注意
マルチスライサー | 【公式】DAISO(ダイソー)ネットストア

リストストラップ

デッドリフト、懸垂が格段にやりやすい。今まで使わなかったのが勿体無い


フリマアプリなどを活用すれば定価より割安で購入できます。