Spaces:
Sleeping
Sleeping
| 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("""<strong>優秀なファンドマネージャーのKPI(重要業績評価指標)</strong>は、そのパフォーマンスを測定し、投資家の期待に応えるための指標として活用されます。以下に、具体的なKPIについて詳しく説明します:<br /><br /> | |
| 1. ポートフォリオのリターン | |
| 年間リターン: ファンドのパフォーマンスを年間でどれだけ向上させたかを評価します。 | |
| リスク調整後リターン(シャープレシオなど): リスクを取った分に対してどれだけ効率的にリターンを生んだか。<br /> | |
| 2. ベンチマークとの比較 | |
| ベンチマークインデックス(例: S&P500やTOPIX)を超えたパフォーマンスがあるかどうか。 | |
| アルファ: ベンチマークを上回る超過リターンを測定。<br /> | |
| 3. リスク管理 | |
| ボラティリティ: ポートフォリオの価格変動の安定性を測定。 | |
| 最大ドローダウン: ポートフォリオがどれだけ急落したかを把握。<br /> | |
| 4. 資金流入と流出 | |
| 資金流入量: 新規投資家から集めた資金額。 | |
| 資金流出量: 既存投資家の資金引き上げ率。<br /> | |
| 5. 費用対効果 | |
| 経費率: ファンドの運営にかかる総費用が投資家に与える影響を分析。<br /> | |
| 6. ポートフォリオの構成・分散 | |
| アセットアロケーション: 投資先の地域やセクターの多様性。 | |
| 分散投資: リスクを軽減するための適切な銘柄選択。<br /> | |
| 7. 投資家とのコミュニケーション | |
| 投資家に対する透明性と情報提供の頻度。<br /> | |
| 8. 定期的なレポートや説明会の実施。<br /> | |
| これらのKPIを総合的に分析し、運用手腕を評価することで、優秀なファンドマネージャーの力量が分かります。 | |
| <br /><br /><strong>High Performer</strong><br /> | |
| High Performer 抽出の基準例<br /> | |
| ✨年間リターンが10%以上<br /> | |
| ✨リスク調整後リターンが5%以上<br /> | |
| ✨アルファが1%以上<br /> | |
| ✨ボラティリティが20%以下<br /> | |
| ✨最大ドローダウンが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("""<!DOCTYPE html> | |
| <html lang="ja"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>投資指標の説明</title> | |
| <style> | |
| body { | |
| font-family: Arial, sans-serif; | |
| line-height: 1.6; | |
| margin: 20px; | |
| } | |
| h1, h2 { | |
| color: #2E86C1; | |
| } | |
| p { | |
| margin: 10px 0; | |
| } | |
| ul { | |
| margin: 10px 20px; | |
| } | |
| li { | |
| margin-bottom: 5px; | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <h1>投資指標の概要</h1> | |
| <h2>ドローダウン (Drawdown)</h2> | |
| <p>ドローダウンは、資産価値が最大から最小までどれだけ減少したかを示す指標です。投資のリスクを評価する重要な指標であり、ドローダウンが小さいほど安定した運用とみなされます。</p> | |
| <ul> | |
| <li>例: 資産価値が1,000万円から800万円に下がった場合、ドローダウン率は20%。</li> | |
| <li>「最悪の場合どれだけの損失を出す可能性があるか」を示します。</li> | |
| </ul> | |
| <h2>アルファ (Alpha)</h2> | |
| <p>アルファは市場全体(ベンチマーク)をどれだけ上回ったかを示す指標で、ファンドマネージャーの運用手腕を評価するのに使われます。</p> | |
| <ul> | |
| <li>アルファ = ポートフォリオのリターン - [無リスク利率 + ベンチマークリターン × ベータ値]</li> | |
| <li>アルファがプラスの場合、運用が市場を上回っていることを意味します。</li> | |
| </ul> | |
| <h2>年間リターン (Annual Return)</h2> | |
| <p>年間リターンは、1年間でどれだけの利益を生み出したかを示す指標です。</p> | |
| <ul> | |
| <li>計算式: 年間リターン (%) = [(期末の資産価値 - 期初の資産価値) / 期初の資産価値] × 100</li> | |
| <li>投資パフォーマンスを評価する際の基本的な指標。</li> | |
| </ul> | |
| <h2>リスク調整後リターン (Risk-Adjusted Return)</h2> | |
| <p>リスク調整後リターンは、リスクを考慮してリターンの質を評価する指標です。主な指標にはシャープレシオとトレイナーレシオがあります。</p> | |
| <ul> | |
| <li>シャープレシオ: ポートフォリオのリターン − 無リスク資産のリターン ÷ ポートフォリオの標準偏差</li> | |
| <li>トレイナーレシオ: ポートフォリオのリターン − 無リスク資産のリターン ÷ ベータ値</li> | |
| </ul> | |
| <h2>ボラティリティ (Volatility)</h2> | |
| <p>ボラティリティは資産の価格変動の大きさを表す指標で、リスクの尺度として使われます。</p> | |
| <ul> | |
| <li>価格の標準偏差を基に計算されます。</li> | |
| <li>ボラティリティが高いほどリスクが高く、低いほど安定していると評価されます。</li> | |
| </ul> | |
| <ul> | |
| <li>S&P500とTopixの計算方法</li> | |
| <li>S&P500は、時価総額加重平均指数を使用しています。これは、大企業がインデックスに与える影響が大きくなる仕組みです。 | |
| 計算式: | |
| S&P500 = frac{sum text{各企業の時価総額}}{text{基準時の時価総額}} times 100 | |
| 各企業の時価総額は「株価 × 発行済み株式数」で求められます。 | |
| 基準時の時価総額は固定された値で、比較を容易にします。 | |
| 特徴: | |
| 米国のトップ500社が対象。 | |
| 大企業の動向がインデックスに強く影響。 | |
| TOPIX(東京証券取引所株価指数)の計算方法 | |
| TOPIXも同様に、時価総額加重平均指数を使用しますが、日本市場全体を対象としています。 | |
| 計算式: | |
| Topix = ∑各企業の時価総額/基準時の時価総額×100 | |
| 各企業の時価総額 = 株価 x 発行済み株式数。 | |
| 基準時の時価総額は1968年の市場時価総額。 | |
| 特徴: | |
| 東京証券取引所に上場しているすべての銘柄が対象。 | |
| 市場全体の動きを反映。 | |
| 両インデックスとも時価総額加重方式を採用し、大企業が与える影響が大きいですが、S&P500は米国市場、TOPIXは日本市場を示す指標として利用されます。 | |
| </ul> | |
| </body> | |
| </html> | |
| """) | |
| with gr.Column(scale=8): | |
| interface.render() | |
| # Launch the app | |
| app.launch() | |
| # Launch Gradio app | |
| #interface.launch() | |