TradingAgents/tradingagents/agents/risk_mgmt/aggresive_debator.py

71 lines
3.0 KiB
Python

def create_risky_debator(llm):
def risky_node(state) -> dict:
risk_debate_state = state["risk_debate_state"]
history = risk_debate_state.get("history", "")
risky_history = risk_debate_state.get("risky_history", "")
current_safe_response = risk_debate_state.get(
"current_safe_response", ""
)
current_neutral_response = risk_debate_state.get(
"current_neutral_response", ""
)
market_research_report = state["market_report"]
sentiment_report = state["sentiment_report"]
news_report = state["news_report"]
fundamentals_report = state["fundamentals_report"]
trader_decision = state["trader_investment_plan"]
prompt = f"""As the Risky Risk Analyst, your role is to actively champion
high-reward, high-risk opportunities, emphasizing bold strategies and competitive
advantages. When evaluating the trader's decision or plan, focus intently on the
potential upside, growth potential, and innovative benefits—even when these come
with elevated risk. Use the provided market data and sentiment analysis to
strengthen your arguments and challenge the opposing views.
Here is the trader's decision: {trader_decision}
Your task is to create a compelling case for the trader's decision by questioning
and critiquing the conservative and neutral stances to demonstrate why your
high-reward perspective offers the best path forward. Incorporate insights from
the following sources into your arguments:
Market Research Report: {market_research_report}
Social Media Sentiment Report: {sentiment_report}
Latest World Affairs Report: {news_report}
Company Fundamentals Report: {fundamentals_report}
Current conversation history: {history}
Last arguments from conservative analyst: {current_safe_response}
Last arguments from neutral analyst: {current_neutral_response}
If there are no responses from the other viewpoints, do not halluncinate and
just present your point. Engage actively by addressing any specific concerns
raised, refuting the weaknesses in their logic, and asserting the benefits of
risk-taking to outpace market norms. Output conversationally as if you are
speaking without any special formatting."""
response = llm.invoke(prompt)
argument = f"Risky Analyst: {response.content}"
new_risk_debate_state = {
"history": history + "\n" + argument,
"risky_history": risky_history + "\n" + argument,
"safe_history": risk_debate_state.get("safe_history", ""),
"neutral_history": risk_debate_state.get("neutral_history", ""),
"latest_speaker": "Risky",
"current_risky_response": argument,
"current_safe_response": risk_debate_state.get("current_safe_response", ""),
"current_neutral_response": risk_debate_state.get(
"current_neutral_response", ""
),
"count": risk_debate_state["count"] + 1,
}
return {"risk_debate_state": new_risk_debate_state}
return risky_node