AIとファイナンス

AIとファイナンスの架け橋、それがこのブログの目指すところです。兼業投資家向けに、Pythonを駆使して株やFXの分析を「自分で」行えるようになるための情報を提供します。ニューラルネットワークを活用した市場予測から、実証済みの金融理論まで、全てのコードを公開し、誰もが活用できるように!是非色々なコードで遊んでみてください!

【米国ETF】2024/3/13 保有残高【NISA】

今週の運用状況も公開していこうと思います。現在Side Fireを目指して活動中です。


週間サマリー: 今週は買い増し等の大きな動きはありませんでした。円安のおかげもあり1000万円という節目を超えれていたのでここ数日のドル円の影響をどう受けているか気になります。ちなみに買い増しやポートフォリオの自動管理方法はこのブログ内で自家製のリバランスプログラムを紹介しているのでみなさん是非ご覧くださいね!さらに追加の資金投入は先日な買付日/積み立て日についてシミュレーションをした結果もご紹介していますのでご参考にしてください。

昨日の米国市場では、ダウ・ジョーンズ工業平均はわずかに上昇して0.10%プラスの39,043.32ポイントで終了しました。一方で、S&P 500は0.19%マイナスの5,165.31ポイント、ナスダック総合指数は0.54%下落して16,177.77ポイントで取引を終えています​​​​。

特にナスダックの下落が目立っています。この下落には、大手テクノロジー企業の株価が影響していると考えられます。具体的には、NvidiaやTeslaなどの株価が下落し、テクノロジー株全体を引き下げる形となりました​​。

また、原油価格は2.63%上昇し、79.60ドルで取引を終了しました。金価格も上昇し、0.61%プラスの2,179.40ドルで取引が行われました​​。一般的に原油価格の上昇は、エネルギーコストの上昇を意味し、これは物価水準の上昇につながります。金価格の上昇も同様に、物価上昇への懸念から安全資産への投資として見られることが多いです。この間のCPIの発表でもインフレはまだまだ収まっていなさそうな雰囲気でしたよね。当面の間は物価の上昇はおさまらない、という見通しで間違いはなさそうですね。

2024/3/13 取引残高

米国ETF $54,616.40 (¥8,061,380 @147.60)

投資信託 ¥2,110,876

現金 ¥0

2024/3/13 米国ETF

2024/3/13 投資信託

2024/3/13 資産推移

ぜひクリックお願いします!

参考サイト

U.S. Stock Market Headlines | Breaking Stock Market News | Reuters

Latest Stock Market News (yahoo.com)

 

 

【Python】積立投資の最適日はいつ?全世界株式(オルカン)とS&P500で検証する資産形成の秘訣【積立NISA】

こんにちは、みなさん!今日は、投資の世界でよく議論されるテーマの一つ、「毎月何日に積み立てるのが最も良いのか」という質問に焦点を当てたいと思います。私たちの日常生活において、定期的な積立投資は賢明な財産形成戦略として広く認識されています。しかし、具体的にどのタイミングで市場に参入するべきかは、なかなか難しい問題です。

このブログでは、Pythonとyfinanceライブラリを使って、実際にデータを分析し、この疑問に答えてみたいと思います。分析の対象とするのは、「S&P500」と「全世界株式(オルカン)」です。S&P500とオルカンのどっちが投資として優れているか過去の記事で分析してみましたが、特定の日付で積み立てた場合、どちらかの優位性が逆転したりするのでしょうか?過去10年分の日足データを用いて、毎月特定の日に$1000分の購入を行った場合のポートフォリオの最終的な価値を比較します。

さらに、この分析を通じて、積立日の選択が投資成績にどの程度影響を与えるのかを明らかにします。投資は未来を予測するものではありませんが、過去のデータから学び、より良い決定を下すための洞察を得ることができます。それでは、早速Pythonコードを見てみましょう!いつも通り最下部にコードへのリンクを貼っています!

Pythonコードとその解説

まずは、必要なライブラリをインストールし、インポートするところから始めます。

# ライブラリのインポート
import yfinance as yf
import pandas as pd
import matplotlib.pyplot as plt

このコードブロックでは、データ分析と視覚化に必要なyfinancepandasmatplotlibライブラリをインポートしています。

次に、S&P500(記号:SPY)と全世界株式(オルカン、記号を仮にACWIとします)の過去20年分の日足データをダウンロードします。

# S&P500と全世界株式(オルカン)のデータをダウンロード
sp500 = yf.download('SPY', start='2014-01-01', end='2024-01-01')
world_stocks = yf.download('ACWI', start='2014-01-01', end='2024-01-01')

私たちの分析を深めるために、今回は毎月の積立日を1日から31日まで変えながら、それぞれの最終ポートフォリオ価値を計算してみました。ここで重要なのは、特定の日が存在しない場合(例えば、2月29日以降や、30日、31日)、その月の最終営業日に積立を行うようにプログラムを調整した点です。

def simulate_investment_improved(data, start_year=2014, end_year=2024):

    results = {}
    for day in range(1, 32):
        investment = 1000  # 毎月の投資額
        shares_owned = 0  # 所有株数

        for year in range(start_year, end_year):
            for month in range(1, 13):
                # 月の開始日を設定
                start_date = pd.Timestamp(year=year, month=month, day=1)
                # 月の終了日を設定
                end_date = start_date + pd.offsets.MonthEnd(1)

                # 指定日を生成
                try:
                    if day > start_date.days_in_month:
                        target_date = end_date  # 月の最終日
                    else:
                        target_date = pd.Timestamp(year=year, month=month, day=day)
                except ValueError:
                    # 存在しない日(例:2月30日)の場合、月の最終日を使用
                    target_date = end_date

                # 価格データを取得し、株を購入
                try:
                    price_on_day = data.at[target_date.strftime('%Y-%m-%d'), 'Open']
                    shares_bought = investment / price_on_day
                    shares_owned += shares_bought
                except KeyError:
                    # 指定日が休市の場合はスキップするか、次の営業日にシフトするロジックを追加(省略)
                    continue

        final_value = shares_owned * data.iloc[-1]['Open']
        results[day] = final_value
   
    return results
# S&P500と全世界株式(オルカン)に対する改良版シミュレーションの実行
results_sp500_improved = simulate_investment_improved(sp500)
results_world_stocks_improved = simulate_investment_improved(world_stocks)


# 結果の視覚化
plt.figure(figsize=(15, 7))
plt.plot(list(results_sp500_improved.keys()), list(results_sp500_improved.values()), label='S&P500')
plt.plot(list(results_world_stocks_improved.keys()), list(results_world_stocks_improved.values()), label='All Country')
plt.title('Final Value of Portfolio')
plt.xlabel('Date')
plt.ylabel('Portfolio Value ($)')
plt.legend()
plt.grid(True)
plt.xticks(range(1, 32))
plt.show()

結果

この分析から得られる洞察として、直近10年で見れば25日積み立てた場合極端に、それこそ15%も最終的な利益に開きがあるのが見て取れます。逆に毎月6日から15日に積み立てるのが最も効率がいいということがわかりますね!

これは例えば日本では25日に給料日が集中し、みんなの積立日として集中しているからなんでしょうか。アメリカの場合1日と15日の月2回給料がある会社も多いらしく、やはり給料をもらって即積立、というのは得策ではなさそうです。

投資戦略を考える上で、このような分析は非常に価値があります。毎月の積立日を決める際に、ただ盲目的に日を選ぶのではなく、データに基づいた意思決定を行うことが、長期的な財産形成において重要な鍵となるわけですね!

 

colab.research.google.com

 

 

 

【米国ETF】2024/3/6 保有残高【NISA】

今週の運用状況も公開していこうと思います。現在Side Fireを目指して活動中です。


週間サマリー: 今週は買い増し等の大きな動きはありませんでした。資産自体は買い増しのおかげでついに1000万円を超えることができました!その一方で円安の恩恵を受けているだけ、という見方もできるので浮かれている場合でもないです。ちなみに買い増しやポートフォリオの自動管理方法はこのブログ内で自家製のリバランスプログラムを紹介しているのでみなさん是非ご覧くださいね!

今日の米国市場は、全体としてプラスの動きを見せました。主要な指数は以下の通りです:

  • ダウ・ジョーンズ工業平均は、0.28%上昇し、38,770.41ポイントへ!
  • ナスダック総合指数は、1.30%の上昇で16,240.17ポイント!
  • S&P 500指数も0.91%上昇し、5,151.18ポイントです

TMX Moneyの市場活動の要約によれば、個別の銘柄ではNew York Community Bancorp Inc.が9.014%上昇し、Direxion Daily Semiconductor Bull 3X Sharesは6.294%上昇しました。一方で、Victoria's Secret & Co.は28.61%の大幅な下落を記録しました​​。NYCBの上昇は前年比で大幅に増加した2.4億ドルの純利益を報告したことに起因しています​​。また、1億ドルの資本を私的投資家から調達し、その中にはスティーブン・ムニューシン元財務長官のリバティ・ストラテジック・キャピタルからの投資も含まれていました​​。これらの要因が、NYCBの株価上昇の背後にある主要な動因と見たいです。また、SOXLの上昇は言わずもがな、半導体産業が好調なおかげですね!VSCOは売り上げ目標が市場予測に達することができなかったのが主な原因です。

2024/2/28 取引残高

米国ETF $54,453.19 (¥8,065,334.54 @148.12)

投資信託 ¥2,141,888

現金 ¥0

2024/3/7 米国ETF

2024/3/7 投資信託

2024/3/7 資産推移

クリックお願いします!

参考サイト

New York Community Bancorp, Inc. (NYCB) Stock Price, News, Quote & History - Yahoo Finance

Victoria's Secret & Co. (VSCO) Stock Price, News, Quote & History - Yahoo Finance

TMX Money | Dow Jones, NYSE, Nasdaq | US Stock Market Summary Today | US Stock Market Movers, Activity and Commodities (USD)

 

【Python】S&P500 vs オルカン:あなたのポートフォリオに最適なのはどっち?【投資】

こんにちは、AIとファイナンスに興味のある皆さん!今日は、投資家の間でよく議論されるテーマ、「S&P500とオルカン(全世界株式)、どちらに投資するべきか」について、PythonとYfinanceを使って探求してみましょう。過去にはシャープ比率を使ってこの比較を行い、S&P500が優位であることを見てきましたが、今回は異なる評価軸を用いてさらに深く掘り下げます。

投資判断を下すにあたり、リターンだけでなくリスクも考慮することが重要です。そこで、以下の評価軸を用いて両者を比較してみます。

  1. 年平均リターン:長期的なパフォーマンスを評価します。
  2. ボラティリティ標準偏差:価格変動の大きさを測り、リスクを評価します。
  3. 最大ドローダウン:最大の価格下落を測り、潜在的なリスクを評価します。

これらの指標を用いることで、単にリターンが高いだけでなく、そのリターンを得るためにどれだけのリスクを負ったのかを理解することができます。では、Pythonコードを使ってこれらの指標を計算し、可視化してみましょう。最下部にコードへのリンクを貼っていますので皆さま是非お試しください。

Pythonコードと解説

ステップ1: 必要なライブラリをインポート

!pip install yfinance
import yfinance as yf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

このステップでは、データ取得にyfinance、データ操作にpandas数値計算numpy、そして可視化にmatplotlibをインポートしています。

ステップ2: データのダウンロード

# S&P500(例:SPY)と全世界株式(例:VT)のティッカーシンボルを定義
symbols = ["SPY", "VT"]

# 過去10年分の日次データをダウンロード
data = yf.download(symbols, start="2013-01-01", end="2023-01-01")["Adj Close"]

ここでは、yf.download関数を使用して、S&P500を代表するETFSPY」と全世界株式を代表するETF「VT」の過去10年間の調整後終値をダウンロードしています。

ステップ3: 年平均リターン、ボラティリティ、最大ドローダウンの計算

# 年平均リターン
annual_returns = data.pct_change().mean() * 252

volatility = data.pct_change().std() * np.sqrt(252)

# 最大ドローダウン
rolling_max = data.cummax()
daily_drawdown = data/rolling_max - 1.0
max_drawdown = daily_drawdown.cummin().min()

# 結果を表示
print(f"年平均リターン:\n{annual_returns}\n")
print(f"ボラティリティ:\n{volatility}\n")
print(f"最大ドローダウン:\n{max_drawdown}\n")

このコードブロックでは、pct_changeメソッドを使って日次リターンを計算し、年平均リターンとボラティリティを求めています。最大ドローダウンは、現在の最大値からの下落率を計算し、その最小値を取得することで求めます。

ステップ4: 結果の可視化

# 指標ごとにグラフを作成
fig, axes = plt.subplots(3, 1, figsize=(10, 15))

# 年平均リターン
annual_returns.plot.bar(ax=axes[0], title="Annual Return")

volatility.plot.bar(ax=axes[1], title="Volatility")

# 最大ドローダウン
max_drawdown.plot.bar(ax=axes[2], title="Max Drawdown")

plt.tight_layout()
plt.show()

最後に、計算した指標を棒グラフで可視化しています。これにより、S&P500とオルカンのリターン、リスクを直感的に比較することができます。

結果

まとめ

S&P500とオルカン(全世界株式)、どちらに投資するのがいいのかは一概には言えませんが、今回紹介した指標を用いることで、自分のリスク許容度や投資目標に合わせた選択が可能になります。実際に今回の結果では年平均リターンではS&P500に軍配が上がり、ボラティリティと最大ドローダウンはほぼ同じです。これはつまりリスクはあまり変わらないがリターンではS&P500が勝るので投資としても(今回採用した指標で比較すると)優れている、という結果になります。

今回はPythonとYfinanceを活用することで、これらの分析を手軽に行えることもお分かりいただけたかと思います。投資は自分自身で情報を得て、自分に合った判断を下すことが重要です。この記事が、皆さんの投資判断の一助となれば幸いです。

 

 

クリックもお願いします!

colab.research.google.com

ai-and-finance.net

【米国株】財務データをグラフで見る方法:米国株の純利益を比較してみよう【Python】

皆さん、こんにちは!前回は、Yfinanceを使って米国株の財務データを手に入れる方法をご紹介しましたが、今回はそのデータをどう活用するか、さらに一歩踏み込んでみましょう。具体的には、アップル(AAPL)、マイクロソフト(MSFT)、アマゾン(AMZN)の三大巨頭の純利益をグラフで比較してみます。これにより、数字だけの表を見るよりも直感的に企業の業績を理解することができるようになります。

PythonとMatplotlibを使った簡単なステップで、皆さんもデータビジュアライゼーションのマスターになることができますよ!最下部にはコードを書いたColab Notebookへのリンクを貼っていますので是非試してみてください。

ステップ1: 必要な準備をしよう

まずは、グラフを描画するために必要なmatplotlibライブラリをインストールしておきましょう。そして、前回取得した財務データを利用できるように、yfinanceも準備しておきます。

!pip install yfinance
import yfinance as yf

!pip install matplotlib
import matplotlib.pyplot as plt

ステップ2: 純利益のデータを集めよう

各企業の純利益は、その企業の損益計算書から取得できます。ここでは、Yfinanceを使ってAAPL、MSFT、AMZNの損益計算書から純利益のデータを抽出します。このデータは、企業の実際の収益力を示す重要な指標です。

# マイクロソフトのティッカーを設定
aapl_ticker = yf.Ticker("AAPL")
# マイクロソフトのティッカーを設定
msft_ticker = yf.Ticker("MSFT")
# アマゾンのティッカーを設定
amzn_ticker = yf.Ticker("AMZN")
# 各企業の純利益データを取得
aapl_net_income = aapl_ticker.financials.loc["Net Income"]
msft_net_income = msft_ticker.financials.loc["Net Income"]
amzn_net_income = amzn_ticker.financials.loc["Net Income"]

ステップ3: 比較グラフを描こう

最後に、取得した純利益のデータをもとに、年度ごとの比較グラフを作成します。このグラフを見れば、一目でどの企業がより良い業績を上げているのか、その変動がどのように年度ごとに異なるのかがわかります。グラフの作成には、matplotlibライブラリを使用し、棒グラフで視覚的に比較します。

# 年度をX軸のラベルとして取得
years = aapl_net_income.index.year

# データをプロット
plt.figure(figsize=(10, 6))
plt.bar(years - 0.2, aapl_net_income.values.flatten(), width=0.2, label='AAPL', color='r')
plt.bar(years, msft_net_income.values.flatten(), width=0.2, label='MSFT', color='g')
plt.bar(years + 0.2, amzn_net_income.values.flatten(), width=0.2, label='AMZN', color='b')

# グラフのタイトルと軸ラベルを設定
plt.title('Net Income per FY')
plt.xlabel('Fiscal Year')
plt.ylabel('Net Income (USD)')
plt.xticks(years)  # X軸に年度を表示
plt.legend()  # 凡例を表示

# グラフを表示
plt.show()

結果

このプロセスを通じてデータを視覚化することで、より深い洞察を得ることができます。グラフはデータを理解しやすくするだけでなく、プレゼンテーションやレポートで使用する際にも非常に効果的です。

さあ、皆さんもこれらのステップを試して、自分だけの分析を始めてみませんか?投資の世界は数字で溢れていますが、それらを上手くナビゲートする方法を知ることが、賢い投資家への第一歩です。次回は、さらに異なる指標で企業を比較する方法や、他の可視化ツールを使ったテクニックを紹介しますので、お楽しみに!

投資は情報から始まります。適切なデータとツールを使って、あなたの投資をより有益なものにしましょう。では、また次回お会いしましょう!

是非クリックお願いします。

colab.research.google.com

 

 

【米国株】Yfinanceで米国株の財務データをスクレイピングする方法【Python】

こんにちは、投資とテクノロジーに興味のある皆さん!今日は、PythonとYfinanceライブラリを使用して、米国株の財務データを簡単にダウンロードする方法を紹介します。財務データと言えば、貸借対照表(バランスシート)、損益計算書(プロフィットアンドロス)、キャッシュフロー計算書が心臓部。これらのデータを手に入れることができれば、企業の健全性を分析したり、より賢い投資判断を下すことができます。

では、なぜYfinanceなのか?簡単です、無料でありながら強力で、多くの財務情報に簡単にアクセスできるからです。今回は、アップル(AAPL)のデータを例に取り上げ、実際にどのようにこれらの情報を取得するのか、一緒に見ていきましょう。

さあ、Pythonのコードを見てみましょう!最下部にコードへのリンクを貼っていますのでぜひ試してみてください!

Pythonコードと解説

まずは、必要なライブラリをインストールして、インポートしましょう。

!pip install yfinance
import yfinance as yf

ここでyfinanceをインストールし、yfとしてインポートします。これが全ての始まりです。次に、特定の銘柄のデータをダウンロードします。今回は「AAPL」を例にします。

ticker = yf.Ticker("AAPL")

yf.Tickerメソッドを使用して、AAPLのティッカーオブジェクトを作成します。これにより、AAPLに関連する様々なデータへアクセスできるようになります。

さて、ここからが本題です。貸借対照表(バランスシート)、損益計算書(プロフィットアンドロス)、キャッシュフロー計算書を取得しましょう。

# バランスシートの取得
balance_sheet = ticker.balance_sheet

# 損益計算書の取得
profit_loss = ticker.financials

# キャッシュフロー計算書の取得
cash_flow = ticker.cashflow

各メソッド(balance_sheet、financials、cashflow)を呼び出すことで、それぞれの財務データをPandasのDataFrame形式で取得できます。これらのデータを分析することで、企業の財務健全性や業績の良し悪しを判断するのに役立ちます。

実際にバランスシートを見てみましょう!

結果

このように年ごとに財務諸表がしっかりダウンロードできているのがわかりましたね!

これで、Yfinanceを使用して、重要な財務データを簡単に取得する方法をマスターしました。この情報をもとに、より賢い投資判断を下していきましょう。

投資はリスクを伴いますが、適切な情報を持っていれば、そのリスクを大きく減らすことができます。PythonとYfinanceを武器に、賢い投資家になりましょう!

皆さんの投資旅が実り多いものになりますように。次回も、テクノロジーを活用した投資のヒントをお届けします。お楽しみに!

 

よければクリックお願いします。

 

colab.research.google.com

 

 

 

 

【Colab 入門】Google Colaboratory とは?使い方とメリットを徹底解説!【Python】

こんにちは!AIとファイナンスの世界に足を踏み入れたばかりの皆さん、そしてすでにその道を進んでいる皆さんにも、今日はとっておきのツールをご紹介します。その名も「Google Colaboratory」、通称「Colab」です。この記事を読むことで、Colabが何であるか、そしてどのようにして私たちの研究やプロジェクトに役立てることができるのかを解説していきます。また最後に実際のColabノートブックへのリンクも貼っていますのでご自由にお使いください!

Google Colaboratoryとは?

Google Colabは、ブラウザ上でPythonコードを書き、実行することができる無料の研究ツールです。Google Driveと密接に連携しており、ドキュメントやスプレッドシートと同じように、プロジェクトを保存したり共有したりすることができます。これが意味するのは、高価なハードウェアを持っていなくても、AIの研究や開発を始めることができるということです!

使い方

使い方はとてもシンプルです。Googleアカウントにログインし、Colabのウェブサイトにアクセスするだけ。そこから新しいノートブックを作成し、Pythonコードを書き始めることができます。今回は、基本的なPythonコードの書き方と実行方法をいくつか紹介します。

メリット
  • アクセスが簡単: ブラウザがあればどこからでもアクセス可能で環境構築がほぼ不要。
  • 無料: パソコンさえあれば大丈夫!
  • 共有が容易: Googleドライブを通じて共有することができます。
  • 強力なリソース: Googleのコンピューティングリソースを利用でき実行結果がすぐ帰ってくる。

さて、それでは実際の画面を見てみましょう。

まずは新しいノートブックを開きます

コードブロックにプログラムを入力したら実行

非常にわかりやすく、直感的な操作が可能です。

以下にいくつか使えそうなコードを書いていますので皆さまも試してみてください。

Pythonコード例と解説

例1: Hello World

# これは最も基本的なPythonのプログラムです。
print("Hello, World!")

このコードブロックは、プログラミングの世界への一歩としてよく用いられる「Hello, World!」を出力します。print関数を使用して、文字列をコンソールに表示させています。

例2: 簡単な計算

# 二つの数値の足し算
a = 5
b = 3
print("a + b =", a + b)

ここでは、二つの変数abに数値を代入し、それらを足し算しています。このような基本的な算術演算は、データ分析やAIモデルの構築においても頻繁に使われます。

例3: リストとループ

# リストの要素をループで出力
fruits = ["apple", "banana", "cherry"]
for fruit in fruits: print(fruit)

このコードは、リストfruits内の各要素を一つずつ取り出し、それを出力しています。forループを使用することで、リストや配列内のデータに対して繰り返し処理を行うことができます。

例4: 条件文

# 数値の比較と条件分岐
number = 7
if number > 5: print("The number is greater than 5")
else: print("The number is 5 or less")

このコードは、リストfruits内の各要素を一つずつ取り出し、それを出力しています。

ここでは、if文を使って数値の比較と条件分岐を行っています。プログラミングにおいて条件分岐は、異なる条件に基づいて異なるアクションを取る際に重要です。

さて、これらをまとめて実行することも可能です。

コードを一括で実行

 

このノートブックのリンクは以下の通りです。

皆様もこちらからアクセスして試してみてください。

colab.research.google.com

またこれが使えるようになったら次はいろいろと株価や為替のデータをダウンロードして遊んでみたいですよね!ぜひこちらの記事もご覧ください!

ai-and-finance.net

 

 

 

参考サイト

colab.google