parent
6944a3281b
commit
eb413d350a
@ -1,54 +0,0 @@
|
||||
from swarms import Agent, CronJob
|
||||
from loguru import logger
|
||||
|
||||
|
||||
# Example usage
|
||||
if __name__ == "__main__":
|
||||
# Initialize the agent
|
||||
agent = Agent(
|
||||
agent_name="Quantitative-Trading-Agent",
|
||||
agent_description="Advanced quantitative trading and algorithmic analysis agent",
|
||||
system_prompt="""You are an expert quantitative trading agent with deep expertise in:
|
||||
- Algorithmic trading strategies and implementation
|
||||
- Statistical arbitrage and market making
|
||||
- Risk management and portfolio optimization
|
||||
- High-frequency trading systems
|
||||
- Market microstructure analysis
|
||||
- Quantitative research methodologies
|
||||
- Financial mathematics and stochastic processes
|
||||
- Machine learning applications in trading
|
||||
|
||||
Your core responsibilities include:
|
||||
1. Developing and backtesting trading strategies
|
||||
2. Analyzing market data and identifying alpha opportunities
|
||||
3. Implementing risk management frameworks
|
||||
4. Optimizing portfolio allocations
|
||||
5. Conducting quantitative research
|
||||
6. Monitoring market microstructure
|
||||
7. Evaluating trading system performance
|
||||
|
||||
You maintain strict adherence to:
|
||||
- Mathematical rigor in all analyses
|
||||
- Statistical significance in strategy development
|
||||
- Risk-adjusted return optimization
|
||||
- Market impact minimization
|
||||
- Regulatory compliance
|
||||
- Transaction cost analysis
|
||||
- Performance attribution
|
||||
|
||||
You communicate in precise, technical terms while maintaining clarity for stakeholders.""",
|
||||
max_loops=1,
|
||||
model_name="gpt-4.1",
|
||||
dynamic_temperature_enabled=True,
|
||||
output_type="str-all-except-first",
|
||||
streaming_on=True,
|
||||
print_on=True,
|
||||
telemetry_enable=False,
|
||||
)
|
||||
|
||||
# Example 1: Basic usage with just a task
|
||||
logger.info("Starting example cron job")
|
||||
cron_job = CronJob(agent=agent, interval="10seconds")
|
||||
cron_job.run(
|
||||
task="What are the best top 3 etfs for gold coverage?"
|
||||
)
|
@ -0,0 +1,247 @@
|
||||
from loguru import logger
|
||||
import yfinance as yf
|
||||
import json
|
||||
|
||||
|
||||
def get_figma_stock_data(stock: str) -> str:
|
||||
"""
|
||||
Fetches comprehensive stock data for Figma (FIG) using Yahoo Finance.
|
||||
|
||||
Returns:
|
||||
Dict[str, Any]: A dictionary containing comprehensive Figma stock data including:
|
||||
- Current price and market data
|
||||
- Company information
|
||||
- Financial metrics
|
||||
- Historical data summary
|
||||
- Trading statistics
|
||||
|
||||
Raises:
|
||||
Exception: If there's an error fetching the data from Yahoo Finance
|
||||
"""
|
||||
try:
|
||||
# Initialize Figma stock ticker
|
||||
figma = yf.Ticker(stock)
|
||||
|
||||
# Get current stock info
|
||||
info = figma.info
|
||||
|
||||
# Get recent historical data (last 30 days)
|
||||
hist = figma.history(period="30d")
|
||||
|
||||
# Get real-time fast info
|
||||
fast_info = figma.fast_info
|
||||
|
||||
# Compile comprehensive data
|
||||
figma_data = {
|
||||
"company_info": {
|
||||
"name": info.get("longName", "Figma Inc."),
|
||||
"symbol": "FIG",
|
||||
"sector": info.get("sector", "N/A"),
|
||||
"industry": info.get("industry", "N/A"),
|
||||
"website": info.get("website", "N/A"),
|
||||
"description": info.get("longBusinessSummary", "N/A"),
|
||||
},
|
||||
"current_market_data": {
|
||||
"current_price": info.get("currentPrice", "N/A"),
|
||||
"previous_close": info.get("previousClose", "N/A"),
|
||||
"open": info.get("open", "N/A"),
|
||||
"day_low": info.get("dayLow", "N/A"),
|
||||
"day_high": info.get("dayHigh", "N/A"),
|
||||
"volume": info.get("volume", "N/A"),
|
||||
"market_cap": info.get("marketCap", "N/A"),
|
||||
"price_change": (
|
||||
info.get("currentPrice", 0)
|
||||
- info.get("previousClose", 0)
|
||||
if info.get("currentPrice")
|
||||
and info.get("previousClose")
|
||||
else "N/A"
|
||||
),
|
||||
"price_change_percent": info.get(
|
||||
"regularMarketChangePercent", "N/A"
|
||||
),
|
||||
},
|
||||
"financial_metrics": {
|
||||
"pe_ratio": info.get("trailingPE", "N/A"),
|
||||
"forward_pe": info.get("forwardPE", "N/A"),
|
||||
"price_to_book": info.get("priceToBook", "N/A"),
|
||||
"price_to_sales": info.get(
|
||||
"priceToSalesTrailing12Months", "N/A"
|
||||
),
|
||||
"enterprise_value": info.get(
|
||||
"enterpriseValue", "N/A"
|
||||
),
|
||||
"beta": info.get("beta", "N/A"),
|
||||
"dividend_yield": info.get("dividendYield", "N/A"),
|
||||
"payout_ratio": info.get("payoutRatio", "N/A"),
|
||||
},
|
||||
"trading_statistics": {
|
||||
"fifty_day_average": info.get(
|
||||
"fiftyDayAverage", "N/A"
|
||||
),
|
||||
"two_hundred_day_average": info.get(
|
||||
"twoHundredDayAverage", "N/A"
|
||||
),
|
||||
"fifty_two_week_low": info.get(
|
||||
"fiftyTwoWeekLow", "N/A"
|
||||
),
|
||||
"fifty_two_week_high": info.get(
|
||||
"fiftyTwoWeekHigh", "N/A"
|
||||
),
|
||||
"shares_outstanding": info.get(
|
||||
"sharesOutstanding", "N/A"
|
||||
),
|
||||
"float_shares": info.get("floatShares", "N/A"),
|
||||
"shares_short": info.get("sharesShort", "N/A"),
|
||||
"short_ratio": info.get("shortRatio", "N/A"),
|
||||
},
|
||||
"recent_performance": {
|
||||
"last_30_days": {
|
||||
"start_price": (
|
||||
hist.iloc[0]["Close"]
|
||||
if not hist.empty
|
||||
else "N/A"
|
||||
),
|
||||
"end_price": (
|
||||
hist.iloc[-1]["Close"]
|
||||
if not hist.empty
|
||||
else "N/A"
|
||||
),
|
||||
"total_return": (
|
||||
(
|
||||
hist.iloc[-1]["Close"]
|
||||
- hist.iloc[0]["Close"]
|
||||
)
|
||||
/ hist.iloc[0]["Close"]
|
||||
* 100
|
||||
if not hist.empty
|
||||
else "N/A"
|
||||
),
|
||||
"highest_price": (
|
||||
hist["High"].max()
|
||||
if not hist.empty
|
||||
else "N/A"
|
||||
),
|
||||
"lowest_price": (
|
||||
hist["Low"].min() if not hist.empty else "N/A"
|
||||
),
|
||||
"average_volume": (
|
||||
hist["Volume"].mean()
|
||||
if not hist.empty
|
||||
else "N/A"
|
||||
),
|
||||
}
|
||||
},
|
||||
"real_time_data": {
|
||||
"last_price": (
|
||||
fast_info.last_price
|
||||
if hasattr(fast_info, "last_price")
|
||||
else "N/A"
|
||||
),
|
||||
"last_volume": (
|
||||
fast_info.last_volume
|
||||
if hasattr(fast_info, "last_volume")
|
||||
else "N/A"
|
||||
),
|
||||
"bid": (
|
||||
fast_info.bid
|
||||
if hasattr(fast_info, "bid")
|
||||
else "N/A"
|
||||
),
|
||||
"ask": (
|
||||
fast_info.ask
|
||||
if hasattr(fast_info, "ask")
|
||||
else "N/A"
|
||||
),
|
||||
"bid_size": (
|
||||
fast_info.bid_size
|
||||
if hasattr(fast_info, "bid_size")
|
||||
else "N/A"
|
||||
),
|
||||
"ask_size": (
|
||||
fast_info.ask_size
|
||||
if hasattr(fast_info, "ask_size")
|
||||
else "N/A"
|
||||
),
|
||||
},
|
||||
}
|
||||
|
||||
logger.info("Successfully fetched Figma (FIG) stock data")
|
||||
return json.dumps(figma_data, indent=4)
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Error fetching Figma stock data: {e}")
|
||||
raise Exception(f"Failed to fetch Figma stock data: {e}")
|
||||
|
||||
|
||||
# # Example usage
|
||||
# # Initialize the quantitative trading agent
|
||||
# agent = Agent(
|
||||
# agent_name="Quantitative-Trading-Agent",
|
||||
# agent_description="Advanced quantitative trading and algorithmic analysis agent specializing in stock analysis and trading strategies",
|
||||
# system_prompt=f"""You are an expert quantitative trading agent with deep expertise in:
|
||||
# - Algorithmic trading strategies and implementation
|
||||
# - Statistical arbitrage and market making
|
||||
# - Risk management and portfolio optimization
|
||||
# - High-frequency trading systems
|
||||
# - Market microstructure analysis
|
||||
# - Quantitative research methodologies
|
||||
# - Financial mathematics and stochastic processes
|
||||
# - Machine learning applications in trading
|
||||
# - Technical analysis and chart patterns
|
||||
# - Fundamental analysis and valuation models
|
||||
# - Options trading and derivatives
|
||||
# - Market sentiment analysis
|
||||
|
||||
# Your core responsibilities include:
|
||||
# 1. Developing and backtesting trading strategies
|
||||
# 2. Analyzing market data and identifying alpha opportunities
|
||||
# 3. Implementing risk management frameworks
|
||||
# 4. Optimizing portfolio allocations
|
||||
# 5. Conducting quantitative research
|
||||
# 6. Monitoring market microstructure
|
||||
# 7. Evaluating trading system performance
|
||||
# 8. Performing comprehensive stock analysis
|
||||
# 9. Generating trading signals and recommendations
|
||||
# 10. Risk assessment and position sizing
|
||||
|
||||
# When analyzing stocks, you should:
|
||||
# - Evaluate technical indicators and chart patterns
|
||||
# - Assess fundamental metrics and valuation ratios
|
||||
# - Analyze market sentiment and momentum
|
||||
# - Consider macroeconomic factors
|
||||
# - Provide risk-adjusted return projections
|
||||
# - Suggest optimal entry/exit points
|
||||
# - Calculate position sizing recommendations
|
||||
# - Identify potential catalysts and risks
|
||||
|
||||
# You maintain strict adherence to:
|
||||
# - Mathematical rigor in all analyses
|
||||
# - Statistical significance in strategy development
|
||||
# - Risk-adjusted return optimization
|
||||
# - Market impact minimization
|
||||
# - Regulatory compliance
|
||||
# - Transaction cost analysis
|
||||
# - Performance attribution
|
||||
# - Data-driven decision making
|
||||
|
||||
# You communicate in precise, technical terms while maintaining clarity for stakeholders.
|
||||
# Data: {get_figma_stock_data('FIG')}
|
||||
|
||||
# """,
|
||||
# max_loops=1,
|
||||
# model_name="gpt-4o-mini",
|
||||
# dynamic_temperature_enabled=True,
|
||||
# output_type="str-all-except-first",
|
||||
# streaming_on=True,
|
||||
# print_on=True,
|
||||
# telemetry_enable=False,
|
||||
# )
|
||||
|
||||
# # Example 1: Basic usage with just a task
|
||||
# logger.info("Starting quantitative analysis cron job for Figma (FIG)")
|
||||
# cron_job = CronJob(agent=agent, interval="10seconds")
|
||||
# cron_job.run(
|
||||
# task="Analyze the Figma (FIG) stock comprehensively using the available stock data. Provide a detailed quantitative analysis"
|
||||
# )
|
||||
|
||||
print(get_figma_stock_data("FIG"))
|
@ -0,0 +1,105 @@
|
||||
"""
|
||||
Example script demonstrating how to fetch Figma (FIG) stock data using swarms_tools Yahoo Finance API.
|
||||
This shows the alternative approach using the existing swarms_tools package.
|
||||
"""
|
||||
|
||||
from swarms import Agent
|
||||
from swarms.prompts.finance_agent_sys_prompt import (
|
||||
FINANCIAL_AGENT_SYS_PROMPT,
|
||||
)
|
||||
from swarms_tools import yahoo_finance_api
|
||||
from loguru import logger
|
||||
import json
|
||||
|
||||
|
||||
def get_figma_data_with_swarms_tools():
|
||||
"""
|
||||
Fetches Figma stock data using the swarms_tools Yahoo Finance API.
|
||||
|
||||
Returns:
|
||||
dict: Figma stock data from swarms_tools
|
||||
"""
|
||||
try:
|
||||
logger.info("Fetching Figma stock data using swarms_tools...")
|
||||
figma_data = yahoo_finance_api(["FIG"])
|
||||
return figma_data
|
||||
except Exception as e:
|
||||
logger.error(f"Error fetching data with swarms_tools: {e}")
|
||||
raise
|
||||
|
||||
|
||||
def analyze_figma_with_agent():
|
||||
"""
|
||||
Uses a Swarms agent to analyze Figma stock data.
|
||||
"""
|
||||
try:
|
||||
# Initialize the agent with Yahoo Finance tool
|
||||
agent = Agent(
|
||||
agent_name="Figma-Analysis-Agent",
|
||||
agent_description="Specialized agent for analyzing Figma stock data",
|
||||
system_prompt=FINANCIAL_AGENT_SYS_PROMPT,
|
||||
max_loops=1,
|
||||
model_name="gpt-4o-mini",
|
||||
tools=[yahoo_finance_api],
|
||||
dynamic_temperature_enabled=True,
|
||||
)
|
||||
|
||||
# Ask the agent to analyze Figma
|
||||
analysis = agent.run(
|
||||
"Analyze the current stock data for Figma (FIG) and provide insights on its performance, valuation metrics, and recent trends."
|
||||
)
|
||||
|
||||
return analysis
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Error in agent analysis: {e}")
|
||||
raise
|
||||
|
||||
|
||||
def main():
|
||||
"""
|
||||
Main function to demonstrate different approaches for Figma stock data.
|
||||
"""
|
||||
logger.info("Starting Figma stock analysis with swarms_tools")
|
||||
|
||||
try:
|
||||
# Method 1: Direct API call
|
||||
print("\n" + "=" * 60)
|
||||
print("METHOD 1: Direct swarms_tools API call")
|
||||
print("=" * 60)
|
||||
|
||||
figma_data = get_figma_data_with_swarms_tools()
|
||||
print("Raw data from swarms_tools:")
|
||||
print(json.dumps(figma_data, indent=2, default=str))
|
||||
|
||||
# Method 2: Agent-based analysis
|
||||
print("\n" + "=" * 60)
|
||||
print("METHOD 2: Agent-based analysis")
|
||||
print("=" * 60)
|
||||
|
||||
analysis = analyze_figma_with_agent()
|
||||
print("Agent analysis:")
|
||||
print(analysis)
|
||||
|
||||
# Method 3: Comparison with custom function
|
||||
print("\n" + "=" * 60)
|
||||
print("METHOD 3: Comparison with custom function")
|
||||
print("=" * 60)
|
||||
|
||||
from cron_job_examples.cron_job_example import (
|
||||
get_figma_stock_data_simple,
|
||||
)
|
||||
|
||||
custom_data = get_figma_stock_data_simple()
|
||||
print("Custom function output:")
|
||||
print(custom_data)
|
||||
|
||||
logger.info("All methods completed successfully!")
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Error in main function: {e}")
|
||||
print(f"Error: {e}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
@ -0,0 +1,79 @@
|
||||
"""
|
||||
Example script demonstrating how to fetch Figma (FIG) stock data using Yahoo Finance.
|
||||
"""
|
||||
|
||||
from cron_job_examples.cron_job_example import (
|
||||
get_figma_stock_data,
|
||||
get_figma_stock_data_simple,
|
||||
)
|
||||
from loguru import logger
|
||||
import json
|
||||
|
||||
|
||||
def main():
|
||||
"""
|
||||
Main function to demonstrate Figma stock data fetching.
|
||||
"""
|
||||
logger.info("Starting Figma stock data demonstration")
|
||||
|
||||
try:
|
||||
# Example 1: Get comprehensive data as dictionary
|
||||
logger.info("Fetching comprehensive Figma stock data...")
|
||||
figma_data = get_figma_stock_data()
|
||||
|
||||
# Print the data in a structured format
|
||||
print("\n" + "=" * 50)
|
||||
print("COMPREHENSIVE FIGMA STOCK DATA")
|
||||
print("=" * 50)
|
||||
print(json.dumps(figma_data, indent=2, default=str))
|
||||
|
||||
# Example 2: Get simple formatted data
|
||||
logger.info("Fetching simple formatted Figma stock data...")
|
||||
simple_data = get_figma_stock_data_simple()
|
||||
|
||||
print("\n" + "=" * 50)
|
||||
print("SIMPLE FORMATTED FIGMA STOCK DATA")
|
||||
print("=" * 50)
|
||||
print(simple_data)
|
||||
|
||||
# Example 3: Access specific data points
|
||||
logger.info("Accessing specific data points...")
|
||||
|
||||
current_price = figma_data["current_market_data"][
|
||||
"current_price"
|
||||
]
|
||||
market_cap = figma_data["current_market_data"]["market_cap"]
|
||||
pe_ratio = figma_data["financial_metrics"]["pe_ratio"]
|
||||
|
||||
print("\nKey Metrics:")
|
||||
print(f"Current Price: ${current_price}")
|
||||
print(f"Market Cap: ${market_cap:,}")
|
||||
print(f"P/E Ratio: {pe_ratio}")
|
||||
|
||||
# Example 4: Check if stock is performing well
|
||||
price_change = figma_data["current_market_data"][
|
||||
"price_change"
|
||||
]
|
||||
if isinstance(price_change, (int, float)):
|
||||
if price_change > 0:
|
||||
print(
|
||||
f"\n📈 Figma stock is up ${price_change:.2f} today!"
|
||||
)
|
||||
elif price_change < 0:
|
||||
print(
|
||||
f"\n📉 Figma stock is down ${abs(price_change):.2f} today."
|
||||
)
|
||||
else:
|
||||
print("\n➡️ Figma stock is unchanged today.")
|
||||
|
||||
logger.info(
|
||||
"Figma stock data demonstration completed successfully!"
|
||||
)
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Error in main function: {e}")
|
||||
print(f"Error: {e}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
@ -0,0 +1,257 @@
|
||||
from swarms import Agent, CronJob
|
||||
from loguru import logger
|
||||
import requests
|
||||
import json
|
||||
from datetime import datetime
|
||||
|
||||
|
||||
def get_solana_price() -> str:
|
||||
"""
|
||||
Fetches comprehensive Solana (SOL) price data using CoinGecko API.
|
||||
|
||||
Returns:
|
||||
str: A JSON formatted string containing Solana's current price and market data including:
|
||||
- Current price in USD
|
||||
- Market cap
|
||||
- 24h volume
|
||||
- 24h price change
|
||||
- Last updated timestamp
|
||||
|
||||
Raises:
|
||||
Exception: If there's an error fetching the data from CoinGecko API
|
||||
"""
|
||||
try:
|
||||
# CoinGecko API endpoint for simple price data
|
||||
url = "https://api.coingecko.com/api/v3/simple/price"
|
||||
params = {
|
||||
"ids": "solana", # Solana's CoinGecko ID
|
||||
"vs_currencies": "usd",
|
||||
"include_market_cap": True,
|
||||
"include_24hr_vol": True,
|
||||
"include_24hr_change": True,
|
||||
"include_last_updated_at": True,
|
||||
}
|
||||
|
||||
# Make API request with timeout
|
||||
response = requests.get(url, params=params, timeout=10)
|
||||
response.raise_for_status()
|
||||
|
||||
# Parse response data
|
||||
data = response.json()
|
||||
|
||||
if "solana" not in data:
|
||||
raise Exception("Solana data not found in API response")
|
||||
|
||||
solana_data = data["solana"]
|
||||
|
||||
# Compile comprehensive data
|
||||
solana_info = {
|
||||
"timestamp": datetime.now().isoformat(),
|
||||
"coin_info": {
|
||||
"name": "Solana",
|
||||
"symbol": "SOL",
|
||||
"coin_id": "solana",
|
||||
},
|
||||
"price_data": {
|
||||
"current_price_usd": solana_data.get("usd", "N/A"),
|
||||
"market_cap_usd": solana_data.get(
|
||||
"usd_market_cap", "N/A"
|
||||
),
|
||||
"volume_24h_usd": solana_data.get(
|
||||
"usd_24h_vol", "N/A"
|
||||
),
|
||||
"price_change_24h_percent": solana_data.get(
|
||||
"usd_24h_change", "N/A"
|
||||
),
|
||||
"last_updated_at": solana_data.get(
|
||||
"last_updated_at", "N/A"
|
||||
),
|
||||
},
|
||||
"formatted_data": {
|
||||
"price_formatted": (
|
||||
f"${solana_data.get('usd', 'N/A'):,.2f}"
|
||||
if solana_data.get("usd")
|
||||
else "N/A"
|
||||
),
|
||||
"market_cap_formatted": (
|
||||
f"${solana_data.get('usd_market_cap', 'N/A'):,.0f}"
|
||||
if solana_data.get("usd_market_cap")
|
||||
else "N/A"
|
||||
),
|
||||
"volume_formatted": (
|
||||
f"${solana_data.get('usd_24h_vol', 'N/A'):,.0f}"
|
||||
if solana_data.get("usd_24h_vol")
|
||||
else "N/A"
|
||||
),
|
||||
"change_formatted": (
|
||||
f"{solana_data.get('usd_24h_change', 'N/A'):+.2f}%"
|
||||
if solana_data.get("usd_24h_change") is not None
|
||||
else "N/A"
|
||||
),
|
||||
},
|
||||
}
|
||||
|
||||
logger.info(
|
||||
f"Successfully fetched Solana price: ${solana_data.get('usd', 'N/A')}"
|
||||
)
|
||||
return json.dumps(solana_info, indent=4)
|
||||
|
||||
except requests.RequestException as e:
|
||||
error_msg = f"API request failed: {e}"
|
||||
logger.error(error_msg)
|
||||
return json.dumps(
|
||||
{
|
||||
"error": error_msg,
|
||||
"timestamp": datetime.now().isoformat(),
|
||||
"status": "failed",
|
||||
},
|
||||
indent=4,
|
||||
)
|
||||
except Exception as e:
|
||||
error_msg = f"Error fetching Solana price data: {e}"
|
||||
logger.error(error_msg)
|
||||
return json.dumps(
|
||||
{
|
||||
"error": error_msg,
|
||||
"timestamp": datetime.now().isoformat(),
|
||||
"status": "failed",
|
||||
},
|
||||
indent=4,
|
||||
)
|
||||
|
||||
|
||||
def analyze_solana_data(data: str) -> str:
|
||||
"""
|
||||
Analyzes Solana price data and provides insights.
|
||||
|
||||
Args:
|
||||
data (str): JSON string containing Solana price data
|
||||
|
||||
Returns:
|
||||
str: Analysis and insights about the current Solana market data
|
||||
"""
|
||||
try:
|
||||
# Parse the data
|
||||
solana_data = json.loads(data)
|
||||
|
||||
if "error" in solana_data:
|
||||
return f"❌ Error in data: {solana_data['error']}"
|
||||
|
||||
price_data = solana_data.get("price_data", {})
|
||||
formatted_data = solana_data.get("formatted_data", {})
|
||||
|
||||
# Extract key metrics
|
||||
current_price = price_data.get("current_price_usd")
|
||||
price_change = price_data.get("price_change_24h_percent")
|
||||
volume_24h = price_data.get("volume_24h_usd")
|
||||
market_cap = price_data.get("market_cap_usd")
|
||||
|
||||
# Generate analysis
|
||||
analysis = f"""
|
||||
🔍 **Solana (SOL) Market Analysis** - {solana_data.get('timestamp', 'N/A')}
|
||||
|
||||
💰 **Current Price**: {formatted_data.get('price_formatted', 'N/A')}
|
||||
📊 **24h Change**: {formatted_data.get('change_formatted', 'N/A')}
|
||||
💎 **Market Cap**: {formatted_data.get('market_cap_formatted', 'N/A')}
|
||||
📈 **24h Volume**: {formatted_data.get('volume_formatted', 'N/A')}
|
||||
|
||||
"""
|
||||
|
||||
# Add sentiment analysis based on price change
|
||||
if price_change is not None:
|
||||
if price_change > 5:
|
||||
analysis += "🚀 **Sentiment**: Strongly Bullish - Significant positive momentum\n"
|
||||
elif price_change > 1:
|
||||
analysis += "📈 **Sentiment**: Bullish - Positive price action\n"
|
||||
elif price_change > -1:
|
||||
analysis += (
|
||||
"➡️ **Sentiment**: Neutral - Sideways movement\n"
|
||||
)
|
||||
elif price_change > -5:
|
||||
analysis += "📉 **Sentiment**: Bearish - Negative price action\n"
|
||||
else:
|
||||
analysis += "🔻 **Sentiment**: Strongly Bearish - Significant decline\n"
|
||||
|
||||
# Add volume analysis
|
||||
if volume_24h and market_cap:
|
||||
try:
|
||||
volume_market_cap_ratio = (
|
||||
volume_24h / market_cap
|
||||
) * 100
|
||||
if volume_market_cap_ratio > 10:
|
||||
analysis += "🔥 **Volume**: High trading activity - Strong market interest\n"
|
||||
elif volume_market_cap_ratio > 5:
|
||||
analysis += (
|
||||
"📊 **Volume**: Moderate trading activity\n"
|
||||
)
|
||||
else:
|
||||
analysis += "😴 **Volume**: Low trading activity - Limited market movement\n"
|
||||
except (TypeError, ZeroDivisionError):
|
||||
analysis += "📊 **Volume**: Unable to calculate volume/market cap ratio\n"
|
||||
|
||||
analysis += f"\n⏰ **Last Updated**: {price_data.get('last_updated_at', 'N/A')}"
|
||||
|
||||
return analysis
|
||||
|
||||
except json.JSONDecodeError as e:
|
||||
return f"❌ Error parsing data: {e}"
|
||||
except Exception as e:
|
||||
return f"❌ Error analyzing data: {e}"
|
||||
|
||||
|
||||
# Initialize the Solana analysis agent
|
||||
agent = Agent(
|
||||
agent_name="Solana-Price-Analyzer",
|
||||
agent_description="Specialized agent for analyzing Solana (SOL) cryptocurrency price data and market trends",
|
||||
system_prompt=f"""You are an expert cryptocurrency analyst specializing in Solana (SOL) analysis. Your expertise includes:
|
||||
|
||||
- Technical analysis and chart patterns
|
||||
- Market sentiment analysis
|
||||
- Volume and liquidity analysis
|
||||
- Price action interpretation
|
||||
- Market cap and valuation metrics
|
||||
- Cryptocurrency market dynamics
|
||||
- DeFi ecosystem analysis
|
||||
- Blockchain technology trends
|
||||
|
||||
When analyzing Solana data, you should:
|
||||
- Evaluate price movements and trends
|
||||
- Assess market sentiment and momentum
|
||||
- Consider volume and liquidity factors
|
||||
- Analyze market cap positioning
|
||||
- Provide actionable insights
|
||||
- Identify potential catalysts or risks
|
||||
- Consider broader market context
|
||||
|
||||
You communicate clearly and provide practical analysis that helps users understand Solana's current market position and potential future movements.
|
||||
|
||||
Current Solana Data: {get_solana_price()}
|
||||
""",
|
||||
max_loops=1,
|
||||
model_name="gpt-4o-mini",
|
||||
dynamic_temperature_enabled=True,
|
||||
output_type="str-all-except-first",
|
||||
streaming_on=False, # need to fix this bug where streaming is working but makes copies of the border when you scroll on the terminal
|
||||
print_on=True,
|
||||
telemetry_enable=False,
|
||||
)
|
||||
|
||||
|
||||
def main():
|
||||
"""
|
||||
Main function to run the Solana price tracking cron job.
|
||||
"""
|
||||
logger.info("🚀 Starting Solana price tracking cron job")
|
||||
logger.info("📊 Fetching Solana price every 10 seconds...")
|
||||
|
||||
# Create cron job that runs every 10 seconds
|
||||
cron_job = CronJob(agent=agent, interval="30seconds")
|
||||
|
||||
# Run the cron job with analysis task
|
||||
cron_job.run(
|
||||
task="Analyze the current Solana (SOL) price data comprehensively. Provide detailed market analysis including price trends, volume analysis, market sentiment, and actionable insights. Format your response clearly with emojis and structured sections."
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
@ -1,16 +1,32 @@
|
||||
from swarms.structs.heavy_swarm import HeavySwarm
|
||||
from swarms import HeavySwarm
|
||||
|
||||
|
||||
swarm = HeavySwarm(
|
||||
worker_model_name="claude-3-5-sonnet-20240620",
|
||||
show_dashboard=True,
|
||||
question_agent_model_name="gpt-4.1",
|
||||
loops_per_agent=1,
|
||||
)
|
||||
def main():
|
||||
"""
|
||||
Run a HeavySwarm query to find the best 3 gold ETFs.
|
||||
|
||||
This function initializes a HeavySwarm instance and queries it to provide
|
||||
the top 3 gold exchange-traded funds (ETFs), requesting clear, structured results.
|
||||
"""
|
||||
swarm = HeavySwarm(
|
||||
name="Gold ETF Research Team",
|
||||
description="A team of agents that research the best gold ETFs",
|
||||
worker_model_name="claude-sonnet-4-latest",
|
||||
show_dashboard=True,
|
||||
question_agent_model_name="gpt-4.1",
|
||||
loops_per_agent=1,
|
||||
)
|
||||
|
||||
out = swarm.run(
|
||||
"Provide 3 publicly traded biotech companies that are currently trading below their cash value. For each company identified, provide available data or projections for the next 6 months, including any relevant financial metrics, upcoming catalysts, or events that could impact valuation. Present your findings in a clear, structured format. Be very specific and provide their ticker symbol, name, and the current price, cash value, and the percentage difference between the two."
|
||||
)
|
||||
prompt = (
|
||||
"Find the best 3 gold ETFs. For each ETF, provide the ticker symbol, "
|
||||
"full name, current price, expense ratio, assets under management, and "
|
||||
"a brief explanation of why it is considered among the best. Present the information "
|
||||
"in a clear, structured format suitable for investors."
|
||||
)
|
||||
|
||||
print(out)
|
||||
out = swarm.run(prompt)
|
||||
print(out)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
@ -0,0 +1,34 @@
|
||||
from swarms import HeavySwarm
|
||||
|
||||
|
||||
def main():
|
||||
"""
|
||||
Run a HeavySwarm query to find the best and most promising treatments for diabetes.
|
||||
|
||||
This function initializes a HeavySwarm instance and queries it to provide
|
||||
the top current and theoretical treatments for diabetes, requesting clear,
|
||||
structured, and evidence-based results suitable for medical research or clinical review.
|
||||
"""
|
||||
swarm = HeavySwarm(
|
||||
name="Diabetes Treatment Research Team",
|
||||
description="A team of agents that research the best and most promising treatments for diabetes, including theoretical approaches.",
|
||||
worker_model_name="claude-sonnet-4-20250514",
|
||||
show_dashboard=True,
|
||||
question_agent_model_name="gpt-4.1",
|
||||
loops_per_agent=1,
|
||||
)
|
||||
|
||||
prompt = (
|
||||
"Identify the best and most promising treatments for diabetes, including both current standard therapies and theoretical or experimental approaches. "
|
||||
"For each treatment, provide: the treatment name, type (e.g., medication, lifestyle intervention, device, gene therapy, etc.), "
|
||||
"mechanism of action, current stage of research or approval status, key clinical evidence or rationale, "
|
||||
"potential benefits and risks, and a brief summary of why it is considered promising. "
|
||||
"Present the information in a clear, structured format suitable for medical professionals or researchers."
|
||||
)
|
||||
|
||||
out = swarm.run(prompt)
|
||||
print(out)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Loading…
Reference in new issue