見出し画像

Google ColabでAI株価分析 [勝率91.36%]

商品紹介:
割安株を効率的に見つけるAIを開発しました。2つのAIがファンダメンタルズに基づき、1年後に上昇する可能性が高い企業を選出し、最低75.58%の確率で損失を回避できる結果が出ました。リスクはありますが、このAIで堅実な投資が可能です。

このAIでの分析結果だとまだ大量の企業が選出されてしまい選択が面倒です、なので新たにコードを追加しました。
コードでは、選出条件を3パターンに分けました。

  1.  時価総額が8000億円以上の大企業

  2.  予想上昇率が70%-80%の企業 

  3.  時価総額1000億円以上かつ予想上昇率が70%-80%の企業

特に3つ目の条件ならかなり優良企業を絞ることができます。

選別された優良割安企業

トップにあるのはユニバーサルエンターテインメント、パチンコメーカーですね。
これで割安の大企業を安全に選択できます。

ところで予想上昇率が70%-80%の企業が良いかというと、過去データのシミュレーションで上昇率ごとの正解率を測ったところ、なぜか予想上昇率70%-80%がもっとも勝率が高く、勝率91.36%もあったからです。

上昇率ごとの予測数、正解数、正解率

正直、根拠はありません過去データのシミュレーション上の話です。なのでコードでは時価総額と上昇率の範囲を設定できるようにしました。

コピペ用コード

import pandas as pd
import yfinance as yf
# CSVファイルを読み込み
data = pd.read_csv('予想株価set.csv')  # your_file.csv を実際のファイル名に置き換えてください



#-------------------------------------------------------------
# 時価総額と予想上昇率の設定
market_cap_threshold_1 = 8000 * 10**8  # 8000億円
market_cap_threshold_2 = 1000 * 10**8  # 1000億円
increase_rate_min = 70  # 予想上昇率の最小値(%)
increase_rate_max = 80  # 予想上昇率の最大値(%)
#-------------------------------------------------------------



market_cap_results = []
increase_rate_results = []
combined_results = []
for index, row in data.iterrows():
    code = row['企業コード']
    stock = yf.Ticker(code)
    try:
        info = stock.info     
        if info is None:
            continue       
        market_cap = info.get('marketCap')       
        if market_cap is None:
            continue
        if market_cap >= market_cap_threshold_1:
            market_cap_results.append(row)
        if increase_rate_min <= row['1年後予想上昇率(%)'] <= increase_rate_max:
            increase_rate_results.append(row)
        if market_cap >= market_cap_threshold_2 and increase_rate_min <= row['1年後予想上昇率(%)'] <= increase_rate_max:
            combined_results.append(row)
    except Exception as e:
        continue
def print_formatted_results(results, title):
    header = ["企業コード", "現在の株価", "理論株価", "1年後予想株価", "1年後予想上昇率(%)"]
    print(f"\n{title}:")
    print("{:<10} {:>5} {:>8} {:>15} {:>16}".format(*header))
    for _, row in results.iterrows():
        print("{:<10} {:>12.2f} {:>15.2f} {:>18.2f} {:>20.2f}".format(row['企業コード'], row['現在の株価'], row['理論株価'], row['1年後予想株価'], row['1年後予想上昇率(%)']))

market_cap_df = pd.DataFrame(market_cap_results)
if not market_cap_df.empty:
    print_formatted_results(market_cap_df, f"時価総額が{market_cap_threshold_1 / 10**8}億円以上の企業")
else:
    print(f"\n時価総額が{market_cap_threshold_1 / 10**8}億円以上の企業: 該当企業なし")

increase_rate_df = pd.DataFrame(increase_rate_results)
if not increase_rate_df.empty:
    print_formatted_results(increase_rate_df, f"予想上昇率が{increase_rate_min}%-{increase_rate_max}%の企業")
else:
    print(f"\n予想上昇率が{increase_rate_min}%-{increase_rate_max}%の企業: 該当企業なし")

combined_df = pd.DataFrame(combined_results)
if not combined_df.empty:
    print_formatted_results(combined_df, f"時価総額{market_cap_threshold_2 / 10**8}億円以上かつ予想上昇率が{increase_rate_min}%-{increase_rate_max}%の企業")
else:
    print(f"\n時価総額{market_cap_threshold_2 / 10**8}億円以上かつ予想上昇率が{increase_rate_min}%-{increase_rate_max}%の企業: 該当企業なし")


※最終判断は自己責任でお願いします。

この記事が気に入ったらサポートをしてみませんか?