TradingAgents/test.py

185 lines
5.8 KiB
Python

from tradingagents.graph.trading_graph import TradingAgentsGraph
from tradingagents.default_config import DEFAULT_CONFIG
from dotenv import load_dotenv
# Load environment variables from .env file
load_dotenv()
def json_to_markdown(json_file_path: str) -> str:
"""
Convert trading analysis JSON file to formatted markdown string.
Args:
json_file_path (str): Path to the JSON file containing trading analysis data
Returns:
str: Formatted markdown string
"""
import json
import os
# Check if file exists
if not os.path.exists(json_file_path):
return f"# Error\nFile not found: {json_file_path}"
try:
with open(json_file_path, 'r', encoding='utf-8') as f:
data = json.load(f)
except json.JSONDecodeError as e:
return f"# Error\nInvalid JSON file: {e}"
except Exception as e:
return f"# Error\nError reading file: {e}"
# Get the main date key (assuming it's the first key)
date_key = list(data.keys())[0]
trading_data = data[date_key]
# Start building markdown
markdown = []
# Header
markdown.append(f"# Trading Analysis Report - {date_key}")
markdown.append("")
# Basic Information
markdown.append("## Basic Information")
markdown.append("")
markdown.append(f"**Company:** {trading_data.get('company_of_interest', 'N/A')}")
markdown.append(f"**Trade Date:** {trading_data.get('trade_date', 'N/A')}")
markdown.append("")
# Market Report
markdown.append("## Market Analysis Report")
markdown.append("")
market_report = trading_data.get("market_report", "")
if market_report:
markdown.append(market_report)
else:
markdown.append("*No market report available*")
markdown.append("")
# Sentiment Report
markdown.append("## Sentiment Analysis")
markdown.append("")
sentiment_report = trading_data.get("sentiment_report", "")
if sentiment_report:
markdown.append(sentiment_report)
else:
markdown.append("*No sentiment report available*")
markdown.append("")
# News Report
markdown.append("## News Analysis")
markdown.append("")
news_report = trading_data.get("news_report", "")
if news_report:
markdown.append(news_report)
else:
markdown.append("*No news report available*")
markdown.append("")
# Fundamentals Report
markdown.append("## Fundamentals Analysis")
markdown.append("")
fundamentals_report = trading_data.get("fundamentals_report", "")
if fundamentals_report:
markdown.append(fundamentals_report)
else:
markdown.append("*No fundamentals report available*")
markdown.append("")
# Investment Decision
markdown.append("## Investment Decision")
markdown.append("")
investment_decision = trading_data.get("trader_investment_decision", "")
if investment_decision:
markdown.append(investment_decision)
else:
markdown.append("*No investment decision available*")
markdown.append("")
# Investment Plan
markdown.append("## Investment Plan")
markdown.append("")
investment_plan = trading_data.get("investment_plan", "")
if investment_plan:
markdown.append(investment_plan)
else:
markdown.append("*No investment plan available*")
markdown.append("")
# Final Trade Decision
markdown.append("## Final Trade Decision")
markdown.append("")
final_decision = trading_data.get("final_trade_decision", "")
if final_decision:
markdown.append(final_decision)
else:
markdown.append("*No final trade decision available*")
markdown.append("")
# Debate States
if "investment_debate_state" in trading_data:
markdown.append("## Investment Debate Analysis")
markdown.append("")
debate_state = trading_data["investment_debate_state"]
if "judge_decision" in debate_state:
markdown.append("### Judge Decision")
markdown.append("")
markdown.append(debate_state["judge_decision"])
markdown.append("")
if "risk_debate_state" in trading_data:
markdown.append("## Risk Management Debate")
markdown.append("")
risk_state = trading_data["risk_debate_state"]
if "judge_decision" in risk_state:
markdown.append("### Risk Judge Decision")
markdown.append("")
markdown.append(risk_state["judge_decision"])
markdown.append("")
return "\n".join(markdown)
# Example usage:
if __name__ == "__main__":
# Create a custom config
config = DEFAULT_CONFIG.copy()
config["deep_think_llm"] = "gpt-4.1-nano" # Use a different model
config["quick_think_llm"] = "gpt-4.1-nano" # Use a different model
config["max_debate_rounds"] = 1 # Increase debate rounds
config["online_tools"] = True # Use online tools or cached data
# Initialize with custom config
ta = TradingAgentsGraph(debug=False, config=config)
# forward propagate
Ticker = "BTC"
Date = "2024-05-11"
_, decision = ta.propagate(Ticker, Date)
print("--------------------------------")
print(decision)
print("--------------------------------")
path = f"eval_results/{Ticker}/TradingAgentsStrategy_logs/full_states_log_{Date}.json"
# Convert the JSON file to markdown
markdown_content = json_to_markdown(path)
# Print the markdown content
print("=" * 80)
print("MARKDOWN OUTPUT:")
print("=" * 80)
print(markdown_content)
# Optionally save to file
markdown_file = f"eval_results/{Ticker}/TradingAgentsStrategy_logs/report_{Date}.md"
with open(markdown_file, 'w', encoding='utf-8') as f:
f.write(markdown_content)
# print(f"\nMarkdown report saved to: {markdown_file}")