import mysql.connector
import os
from dotenv import load_dotenv
import gradio as gr
import cohere
from decimal import Decimal
# Load environment variables
load_dotenv(verbose=True)
# Function to fetch top high performers
#def get_top_high_performers(html: str):
def get_top_high_performers(html: str, limit: str):
results = [{'manager_name': '加藤 圭介', 'annual_return': Decimal('11.40'), 'risk_adjusted_return': Decimal('6.40'), 'alpha': Decimal('1.60'), 'volatility': Decimal('13.50'), 'max_drawdown': Decimal('8.70'), 'customer_feedback': '信頼性の高さ', 'behavior_patterns': '計画性のある進行', 'score': Decimal('-2.80')}, {'manager_name': '鈴木 花子', 'annual_return': Decimal('13.20'), 'risk_adjusted_return': Decimal('7.50'), 'alpha': Decimal('1.66'), 'volatility': Decimal('18.80'), 'max_drawdown': Decimal('9.00'), 'customer_feedback': '積極的な姿勢', 'behavior_patterns': 'データドリブンアプローチ', 'score': Decimal('-5.44')}, {'manager_name': '中村 亮介', 'annual_return': Decimal('12.20'), 'risk_adjusted_return': Decimal('5.80'), 'alpha': Decimal('1.50'), 'volatility': Decimal('18.40'), 'max_drawdown': Decimal('8.10'), 'customer_feedback': '高度なプレゼン力', 'behavior_patterns': '結果志向の行動', 'score': Decimal('-7.00')}, {'manager_name': '田中 美咲', 'annual_return': Decimal('12.30'), 'risk_adjusted_return': Decimal('5.90'), 'alpha': Decimal('1.40'), 'volatility': Decimal('18.30'), 'max_drawdown': Decimal('9.10'), 'customer_feedback': 'ポジティブな思考', 'behavior_patterns': '戦略的な計画性', 'score': Decimal('-7.80')}, {'manager_name': '小林 彩香', 'annual_return': Decimal('11.90'), 'risk_adjusted_return': Decimal('6.10'), 'alpha': Decimal('1.20'), 'volatility': Decimal('18.80'), 'max_drawdown': Decimal('8.50'), 'customer_feedback': '優れたチームリーダー', 'behavior_patterns': '創造的な提案力', 'score': Decimal('-8.10')}]
# Format the results for Gradio output
formatted_results = [
f"{i+1}. Manager: {row['manager_name']}, Score: {row['score']:.2f}\n"
f"Customer Feedback: {row['customer_feedback']}\n"
f"Behavior Patterns: {row['behavior_patterns']}\n"
f"Annual Return: {row['annual_return']}%, Risk-Adjusted Return: {row['risk_adjusted_return']}%, "
f"Alpha: {row['alpha']}, Volatility: {row['volatility']}%, Max Drawdown: {row['max_drawdown']}%\n"
for i, row in enumerate(results)
]
tmp = "\n\n".join(formatted_results)
co = cohere.ClientV2(api_key=os.environ.get("COHERE_API_KEY"))
res = co.chat(
model="command-a-03-2025",
messages=[
{
"role": "user",
"content": tmp+"はパフォーマンスの高いファンド・マネージャのデータです。このデータを参考にしてファンド・マネージャの育成ガイドラインを策定してください。 必ず、日本語で答えてください。",
}
],
)
final = res.message.content[0].text
return "\n\n".join(formatted_results),final
# Define Gradio interface
interface = gr.Interface(
fn=get_top_high_performers,
inputs=[gr.HTML("""優秀なファンドマネージャーのKPI(重要業績評価指標)は、そのパフォーマンスを測定し、投資家の期待に応えるための指標として活用されます。以下に、具体的なKPIについて詳しく説明します:
1. ポートフォリオのリターン
年間リターン: ファンドのパフォーマンスを年間でどれだけ向上させたかを評価します。
リスク調整後リターン(シャープレシオなど): リスクを取った分に対してどれだけ効率的にリターンを生んだか。
2. ベンチマークとの比較
ベンチマークインデックス(例: S&P500やTOPIX)を超えたパフォーマンスがあるかどうか。
アルファ: ベンチマークを上回る超過リターンを測定。
3. リスク管理
ボラティリティ: ポートフォリオの価格変動の安定性を測定。
最大ドローダウン: ポートフォリオがどれだけ急落したかを把握。
4. 資金流入と流出
資金流入量: 新規投資家から集めた資金額。
資金流出量: 既存投資家の資金引き上げ率。
5. 費用対効果
経費率: ファンドの運営にかかる総費用が投資家に与える影響を分析。
6. ポートフォリオの構成・分散
アセットアロケーション: 投資先の地域やセクターの多様性。
分散投資: リスクを軽減するための適切な銘柄選択。
7. 投資家とのコミュニケーション
投資家に対する透明性と情報提供の頻度。
8. 定期的なレポートや説明会の実施。
これらのKPIを総合的に分析し、運用手腕を評価することで、優秀なファンドマネージャーの力量が分かります。
High Performer
High Performer 抽出の基準例
✨年間リターンが10%以上
✨リスク調整後リターンが5%以上
✨アルファが1%以上
✨ボラティリティが20%以下
✨最大ドローダウンが10%以下
"""),gr.Textbox(label="件数",info="",value="5")],
outputs=[gr.Textbox(label="結果",show_copy_button=True,info="Show records where the annual return is 10% or more, the risk-adjusted return is at least 5%, the alpha (excess return) is greater than or equal to 1, the volatility is no more than 20%, and the maximum drawdown is 10% or less. Then, sort these records in score descending order.\n年間リターンが10%以上、リスク調整後リターンが5%以上、アルファ(超過リターン)が1以上であり、ボラティリティが20%以下、最大ドローダウンが10%以下のレコードを選択します。その後、計算されたスコアを基準に降順で並び替えます。"),gr.Textbox(label="教育ガイドライン",info="""
High Performerとは、優れた業績を上げるファンドマネージャーのことを指します!!
✨ 特に、以下のような基準を満たしていることが重要です:
高いリターン:年間リターンが安定して高く、投資家に大きな利益をもたらします。
リスク管理能力:ボラティリティ(価格変動)や最大ドローダウンが低く、リスクを抑えながら運用しています。
ベンチマーク超過リターン:市場の指標(例: S&P500など)を上回るアルファ(超過リターン)を達成。
顧客との信頼関係:顧客からのフィードバックが良好で、透明性や適切なコミュニケーションを維持。
行動習慣と戦略:継続的な学習や市場の動向を分析するなど、優れた投資戦略を展開。
例えば、あるHigh Performerの行動として、「地政学的イベントを監視して意思決定を行う」や「歴史的トレンドに基づいた投資方針を確立する」などがあります。💡
このような特徴を持つファンドマネージャーは投資家から信頼され、資金運用の成功を導く鍵となる存在です。
score = (annual_return + risk_adjusted_return + alpha - volatility - max_drawdown)""")],
title="Top High Performers",
submit_btn="実行",
clear_btn="クリア",
description="""Displays the top 5 high-performing fund managers based on calculated score.\n計算されたスコアに基づいて、パフォーマンスの高いファンドマネージャー上位5名を表示します。"""
)
# Add a sidebar for additional context or features
with gr.Blocks() as app:
with gr.Row():
#with gr.Column(scale=4):
with gr.Sidebar(open=False):
gr.HTML("""
ドローダウンは、資産価値が最大から最小までどれだけ減少したかを示す指標です。投資のリスクを評価する重要な指標であり、ドローダウンが小さいほど安定した運用とみなされます。
アルファは市場全体(ベンチマーク)をどれだけ上回ったかを示す指標で、ファンドマネージャーの運用手腕を評価するのに使われます。
年間リターンは、1年間でどれだけの利益を生み出したかを示す指標です。
リスク調整後リターンは、リスクを考慮してリターンの質を評価する指標です。主な指標にはシャープレシオとトレイナーレシオがあります。
ボラティリティは資産の価格変動の大きさを表す指標で、リスクの尺度として使われます。