前回のエントリーではGoogle Opalの基本的な使い方を解説した。次はデータを処理させる。ChatGPTは有料サービスに誘導するために分析機能のリソースが限られているがGoogle Geminiはリソースがかなり潤沢だ。しかしながらかなりクセがあり基本レポートの出力にかなり苦労した。
目次
今回やりたかったこと
プログラムは、入出金がないことを前提に株式ポートフォリオの毎日の評価額の変化をフィードしてその期間の利率を計算するというもの。さらにポートフォリオの評価額のグラフを出し、さらにS&P500(ベンチマーク)と比較する。このときにTWRという評価手法を使っている。本来ならばここに入出金データを加えなければならないが今回はそこまで実装しなかった。計算が複雑になりすぎるとAIの処理能力を越えてしまうようだ。
今回はGoogle Opalの使い方については解説しない。詳しく知りたい人は別のページを作ったので参考にしていただきたい。
初心者が行き詰まったポイント
そもそもエラー処理がない
そもそもエラー処理がないため、曖昧な処理でGeminiが止まってもそれを知らせることができない。わからないことがあり処理を止めた場合にはインターフェイスに出力するように指示しなければならない。
Pythonが理解できる日付にしなければならない
GeminiはPythonのプログラムを書かせようとする。このためデータの日付形式がPythonの形式に変更する必要がある。ただそもそもプログラムを知らない人が作っているのだからこれに気がつくのに長い時間がかかった。
またデータの形式とその意味について適切に定義してやらなければならない。CSVデータがDate(日付)、Portfolio、S&Pでありその意味が何であるかを教えてやらなければならないのだ。
- The code should read the provided CSV
valuation_data, parsing the ‘Date’, ‘Portfolio’, and ‘S&P’ columns, ensuring the ‘Date’ column (in YYYY/MM/DD format) is converted to an appropriate Python-processable format.
気を利かせてデータをでっち上げないようにクギを刺す
次にGEMINIは指示が明確でないと処理が止まる。しかし「気を利かせて」データをでっち上げてしまうこともある。このため「データをでっち上げず与えられたものだけを使え」と指示しなければならなかった。ひどい場合には架空のポートフォリオを返してくる。
これを防ぐためにS&P500のデータをOpalに作らせようとした。Pythonのyfinanceという仕組みを使うのが一般的だそうだが、Opalが許していないのかプランの制約なのかはわからないがこれができなかった。ここでエラーになってしまう。このためデータはあらかじめユーザーが準備する必要があった。
- Your task is to generate Python code that strictly uses the ‘Portfolio’ and ‘S&P’ values from the provided CSV data for all valuation calculations and avoids generating any virtual or hypothetical portfolio data.
今回初めて知ったのだが、GoogleSheetsにはその日の株価を出力する関数とS&P500などのインデックスの値を参照して返す関数がある。しかし出力が不安定なことがあるようでN/A値が出ることがあるようだ。このため一度GoogleSheetsから直接出力するのではなく一度CSVで出力しデータクリーニングしたほうがいいようだ。
- Using the
convert_start_dateandconvert_end_date, calculate the Time-Weighted Return (TWR) for both the portfolio and the S&P500, perform a comparative analysis,
グラフを描かせるのは簡単なのだが簡単すぎてどう指示していいかわからない
グラフをプロットさせるためのデータを取り出す処理は次のようになる。
- and extract the relevant data as a JSON array for a line graph, ensuring ‘Date’ is recognized as time-series data for the X-axis, ‘Portfolio’ for the first Y-axis, and ‘S&P’ for the second Y-axis.
グラフを描けという指示は次の通り。
- Finally, output the calculated TWRs, the performance analysis, and the graph data as a structured text.


コメントを残す