用語集

用語の説明と参照
項目内容
Clef / Jev-Omni画面を見て、次の操作を選ぶAI。
追加学習(ファインチューニング・LoRA)操作例でAIを学び直させること。LoRAは、調整用の重みを加えて学習する方法。
軽量化(量子化・NVFP4)計算に使う数値を短い形式で表し、AIの容量を減らすこと。NVFP4は4ビットの形式。
DSH(DeepSeek Harness)文章の指示を受けて画面を操作するアプリ。
QwenAlibabaが開発するOSSのAIモデル群。この構成では指示を受け持ち、Clefが画面上の操作候補を判定する。
UTM検証用のmacOSを動かす仮想環境。
画面情報(DOM / AX)入力欄やボタンの役割、位置、現在値。DOMはWebページ、AXはOSから読む。
バックテスト過去のデータで売買の手順を試し、成績を確かめること。
BF16 / FP8計算に使う数値の形式。BF16は16ビット、FP8は8ビット。
MLP / attentionAIの計算部分。MLPは情報を変換し、attentionは情報どうしの関係を扱う。
OCO二つの注文条件を組み合わせ、一方が成立すると他方を取り消す注文。
IFD / IFDOCOIFDは最初の注文の成立後に次の注文を出す方法。IFDOCOは、その次の注文にOCOを使う方法。
SOR複数の市場の価格を比べ、注文先を自動で選ぶ仕組み。

用語の参照: Qwen · LoRA · NVFP4 · 注文方法 · IFDOCO · SOR

Clefは、画面の情報と画像から、用意した操作候補を判定できるモデルです。注文条件を渡し、その条件どおりに模擬画面へ入力できるかを確かめました。

loFT合同会社では、業務システムへのAI組み込みに向けて、ローカルLLMの活用を検証しています。今回はClefに操作例をLoRAで追加学習させ、NVIDIA Model Optimizer(ModelOpt)を使ってNVFP4へ量子化しました。模擬の注文フォームを題材に、入力内容の確認と人への引き継ぎまでを検証しました。

重みの容量は54.97 GBから23.16 GBへ減り、模擬画面での判断337/337、全項目一致と人への引き継ぎ24/24を維持しました。

画像・音・動画を扱うomniモデルを使ったAIシステムの開発も進めています。画像を使った品質評価の改善や、音を使った評価を対象にしています。動画では、フレームレートやフレームの抽出間隔も含め、入力と評価方法を整備しています。前回のJev-OmniとClefの検証では、画像・音声・動画などを入力した選択肢判定を扱いました。

こうした開発では、自社のAI基盤を使います。学習データの整備から、モデルの追加学習・軽量化、既存システムへの接続、専用MCPの開発、PoC(概念実証)、ネイティブ/Webアプリ開発まで一貫して行います。ローカルLLMの導入や評価システムの開発についてもご相談いただけます。

画面を見て、次の操作を選ぶ

注文条件と画面の情報をAIに渡します。Clefが操作候補を判定し、操作用のアプリが入力します。そのつど画面を読み直し、入力値を確かめます。入力後は、パスワードを入れる前に人へ引き継ぎます。

  1. 注文条件を伝える — 文章で指示
  2. 画面を読む — 文字・位置・画像
  3. 操作を選ぶ — Clefが候補を判定
  4. 入力値を確かめる — 画面を読み直す
学習の設定

学習用データは、架空の注文条件と模擬画面を組み合わせて作成しました。画面の状態ごとに操作候補を用意し、正しい操作をルールで付けています。条件が不足したときに入力を保留する例や、入力完了後に人へ引き継ぐ例も含めました。

文章を扱う部分にLoRAを適用し、画像を読む部分と操作を判定する部分は固定しました。ClefとJev-Omniは、それぞれ学習・軽量化しました。

学習と軽量化の結果

評価した構成では、Webページの情報(DOM)と画像を入力に使います。正解を含む操作候補を用意した模擬画面で、337回の判断と30件の注文条件を評価しました。条件が有効なものは24件、不備があるものは6件です。

注文は指値、成行、逆指値、OCO、IFD、IFDOCOの6種類です。一つずつの判断と、操作を続けて入力を終える試験を分けて集計しました。

Clefの状態正解と一致した判断全項目一致・人への引き継ぎ
追加学習前(BF16)定量スコアなし定量スコアなし
1回目の学習後(BF16)322/337(95.5%)16/24(66.7%)
2回目の学習後(BF16)337/337(100%)24/24(100%)
軽量化後(NVFP4)337/337(100%)24/24(100%)

1回目は保存レコードの画面情報と画像、2回目と軽量化後はブラウザーDOMと画像で評価しています。学習と入力形式の両方を変えた比較です。追加学習前の定量スコアはありません。当時はDSHのセッションログで、途中停止など、うまく動かない挙動を確認していました。

軽量化後の構成では、不備のある6件は入力を保留しました。全30件の操作記録がそろい、停止位置を越える試行・実行はともに0件でした。

操作候補には正解を含めています。学習用と評価用の分割の間で、注文や不備のテンプレートが重なっています。同じ注文の途中で行う判断にも相関があるため、337回の判断は337件の独立した注文ではありません。この結果は、未知の画面での性能を示すものではありません。

軽量化前後のモデル容量

構成重みの容量元の容量に対する比率
2回目の学習後(BF16)54.97 GB100%
軽量化後(NVFP4・混合精度)23.16 GB42.1%

重みの容量を31.81 GB、57.9%削減しました。元の約42%の容量で、上記の模擬画面試験では判断337/337、全項目一致・人への引き継ぎ24/24を維持しました。

保存済みのテンソル情報から集計した容量です。モデル本体と最終判定ヘッドを含み、1 GB=10億バイトで表しています。実行時のVRAM使用量ではありません。

軽量化したClefの準備後、1件ずつ送った336回の問い合わせでは、待ち時間の中央値は0.978秒でした。95%は約1.227秒以内に返りました。準備後の直列HTTP問い合わせの時間で、注文全体の操作時間やBF16との速度比較ではありません。

詳しい設定

2回目の学習では、同じ操作例から「画面情報と画像」「画像中心」の2種類の入力を作り、学習の重みを50:50にしました。

軽量化後はMLPにNVFP4、attentionにFP8、画像の読取りと最終判定にBF16を使いました。配信方法で候補番号が異なるため、選んだ操作の内容で比べました。

推論の実行記録

ClefとQwenのリクエスト時刻、実行時間、client/backendの記録を一覧表示したMLflowの推論トレース画面。
MLflowで確認する推論ログ。ClefとQwenのリクエスト時刻、実行時間、client/backendの記録を表示しています。画像を開くと拡大できます。

学習データの例

ML Foundryへ移設した「注文フォーム学習データ v3」の学習用データから5件を抜粋しました。注文条件・現在の画面・操作候補と、学習用の教師ラベルを並べています。

すべて架空の注文条件と模擬画面を使った合成データです。order-forms-v3 / trainからの抜粋で、教師ラベルは学習用の答えです。モデルの予測結果ではありません。データセット名は掲載用の別名です。

掲載画像は証券会社名を白く塗りつぶしています。JSON内の画像パスとSHA-256は加工前の元画像の記録で、掲載PNGのものではありません。

01. 数量を入力する
入力に使う模擬画面:数量を入力する
入力に使う模擬画面。画像を開くと拡大できます。

AIへの入力

項目内容
注文条件(要約)架空銘柄1000を現物買い。100株、指値1,200.50円、当日中。SOR・ポイントは使わない。
画面の状態銘柄別の通常注文画面。銘柄と市場は設定済みで、数量欄は未入力。

操作候補

  • option_00: 数量に「100」を入力する
  • option_01: 数量に「200」を入力する
  • option_02: 人へ引き継ぐ
  • option_03: 入力を保留する

教師ラベル · option_00

数量に「100」を入力する

  {
  "kind": "SET",
  "field": "input_quantity",
  "value": "100",
  "tab": "normal"
}
  

出典レコード: sbi-train-normal_limit-57afea5d1dee-step-04

02. OCOの価格条件を入力する
入力に使う模擬画面:OCOの価格条件を入力する
入力に使う模擬画面。画像を開くと拡大できます。

AIへの入力

項目内容
注文条件(要約)架空銘柄1030を100株現物買い。指値1,200円、1,220円以上なら1,230円の指値へ。いずれも当日中。
画面の状態OCOタブで数量100と注文1の指値1,200円を入力済み。訂正条件の価格欄は未入力。

操作候補

  • option_00: 数量に「100」を入力する
  • option_01: 人へ引き継ぐ
  • option_02: OCOの訂正条件価格に「1220」を入力する
  • option_03: 入力を保留する
  • option_04: OCOの訂正条件価格に「1」を入力する

教師ラベル · option_02

OCOの訂正条件価格に「1220」を入力する

  {
  "kind": "SET",
  "field": "oco2_input_trigger_price",
  "value": "1220",
  "tab": "oco"
}
  

出典レコード: sbi-train-oco-9707d3b94b9d-step-08

03. IFDの売却価格を入力する
入力に使う模擬画面:IFDの売却価格を入力する
入力に使う模擬画面。画像を開くと拡大できます。

AIへの入力

項目内容
注文条件(要約)架空銘柄1040を100株、1,200円で買い、その注文が成立したら1,250円で売る。いずれも当日中。
画面の状態IFDタブで最初の注文価格1,200円などを入力済み。次の売り注文の価格欄は未入力。

操作候補

  • option_00: 人へ引き継ぐ
  • option_01: 数量に「100」を入力する
  • option_02: IFDの売却価格に「1」を入力する
  • option_03: IFDの売却価格に「1250」を入力する
  • option_04: 入力を保留する

教師ラベル · option_03

IFDの売却価格に「1250」を入力する

  {
  "kind": "SET",
  "field": "done_input_price",
  "value": "1250",
  "tab": "ifd"
}
  

出典レコード: sbi-train-ifd-7b0094b34c69-step-12

04. 入力を終えて人へ引き継ぐ
入力に使う模擬画面:入力を終えて人へ引き継ぐ
入力に使う模擬画面。画像を開くと拡大できます。

AIへの入力

項目内容
注文条件(要約)架空銘柄1050を100株、1,200円で買う。成立後は1,250円で売るか、1,150円以下なら1,140円の指値で売る。いずれも当日中。
画面の状態IFDOCOの入力項目がそろった状態。パスワード入力や注文確定へ進む前に、人へ引き継ぐ。

操作候補

  • option_00: 入力を保留する
  • option_01: 数量に「100」を入力する
  • option_02: 人へ引き継ぐ

教師ラベル · option_02

人へ引き継ぐ

  {
  "kind": "HANDOFF",
  "field": null,
  "value": null,
  "tab": "ifdoco"
}
  

出典レコード: sbi-train-ifdoco-1d6aa9d327b7-step-16

05. 数量がなければ入力を保留する
入力に使う模擬画面:数量がなければ入力を保留する
入力に使う模擬画面。画像を開くと拡大できます。

AIへの入力

項目内容
注文条件(要約)架空銘柄1000を指値1,200.50円で現物買い。当日中。株数の指定がない。
画面の状態通常注文の初期画面。条件に数量が含まれていないため、入力を始めない。

操作候補

  • option_00: 入力を保留する
  • option_01: 銘柄コードに「9999」を入力する
  • option_02: 人へ引き継ぐ

教師ラベル · option_00

入力を保留する

  {
  "kind": "NO_ACTION",
  "field": null,
  "value": null,
  "tab": "normal"
}
  

出典レコード: sbi-train-normal_limit-fba79fff7f57-step-00

5件の元レコードをJSONで見る

指示どおりに入力する

DSHに注文条件を文章で渡し、模擬画面に入力させました。次の2例では、入力後に画面を別に読み取り、各項目が指示と一致することを確かめました。

通常注文

指示した条件

架空銘柄0001を東証で現物買い。200株、指値1234.5円、当日中、条件なし。SOR・ポイントを使わない。

別の読み取りで入力値を確認

項目内容
銘柄・取引0001 / 東証 / 現物買い
数量200株
指値1234.5円
有効期間・条件当日中 / 条件なし
SOR・ポイント使わない

OCO注文

指示した条件

架空銘柄0004を現物売り。500株、指値3580円、3320円以下で3310円へ訂正。当日中、SORを使わない。

別の読み取りで入力値を確認

項目内容
銘柄・取引0004 / 現物売り
数量500株
注文1の指値3580円
訂正の条件3320円以下
訂正後の指値3310円
有効期間・SOR当日中 / SORを使わない

会話を戻した後の変更

別の会話でOCO注文を入力し、元の会話に戻ると、同じ画面で数量だけ500株から600株へ変更できました。

この操作確認は30回の判断、29回の入力でした。Clefへの画像付き問い合わせは59回でした。

操作の設定

依頼はQwen Flash Nextのlow設定、画面の判定はClef NVFP4が担当しました。ブラウザーとアプリの両方の操作経路で、同じBraveを使いました。

映像は、10月15日に収録した別の実行です。数量200が入力済みの時点から、指値価格・当日中・ポイント不使用の設定を映しています。価格条件欄は「選択」のままです。

操作映像

収録:2026年10月15日。35.8秒、無音、等速。画面と操作記録を上下に並べた抜粋です。 MP4を直接開く

もう一つのモデルでの結果

Jev-Omni(BF16)に入力する文へ画面の用語説明を加えると、判断の一致は270/337から322/337に、入力完了と人への引き継ぎは2/24から18/24に増えました。別の18件の条件確認では、10/18から9/18でした。

軽量化は、改善前のモデルで別に比べました。337回の判断のうち、BF16は257回、NVFP4は250回が正解でした。変換したモデルは、保存後に読み直して動作を確認しました。

検証の範囲

操作環境の検証にはUTM上のmacOSを使いました。画面の役割・位置・現在値を画像と照らし合わせ、確認できた対象を操作します。

ブラウザー5件とアプリ5件を交互に操作する試験は、10月15日時点で検証中です。上の337回の判断と30件の評価は、この10件の試験やネイティブアプリのAX操作を検証したものではありません。証券会社の実画面での操作や発注も評価に含めていません。

操作環境について

DSHとUTMを組み合わせた構成からCua Spacesも試し、画面情報の扱いや判断モデルとの接続を手元で調整しやすいUTMへ戻しました。

画面情報の取得に失敗したときもClefに診断を求めます。入力の許可は別に判定し、対象を確認できたときに操作を進めます。

評価データ

Clefの判断と注文入力の評価を保存したデータです。

評価データ(JSON)

公開ファイルの一覧と出典 · SHA-256

以下は、代表個人で進めている株式データ分析の研究です。

売買戦略の比較(バックテスト)

下の画像は、過去の株価データで6つの売買戦略を比べたバックテストの途中結果です。成績・売買記録・損益の推移を一つの画面で確認します。実取引の損益を示す画面ではありません。

リアルタイムで取り込んだ株価を基に、数分間隔でトレードレコードを生成する仕組みです。入力・指標データをワークステーションに常駐させ、ホットロードで更新しながら、LightGBM、CatBoost、Kumo-series、Chronos-2、TimesFMなど複数の手法やモデルを用いて解析します。

想定している自動化では、Familiaのエージェントがトレードレコードをプルして取得し、その内容に沿って注文画面の入力・設定を進めます。最後は人がパスワードを入力して発注ボタンを押す流れです。

注文画面の入力・設定などの操作には、10月15日時点で1件あたり約50秒かかっていました。Qwen3.8のファインチューニングで、この操作時間をさらに短縮できるか検討しています。スキャルピングは想定しておらず、画面操作は1分以内を実務上の目安としています。

6つの売買戦略の成績表、売買記録、途中評価の損益グラフ。各戦略の状態はincomplete。
2026年9月9日〜10月9日の20営業日。6戦略すべての状態が incomplete の途中評価です。画像を開くと拡大できます。

参照