From ea4ee9176b91292a62002fdc68e650053e953b0d Mon Sep 17 00:00:00 2001 From: Youssef Aitousarrah Date: Tue, 9 Dec 2025 23:16:53 -0800 Subject: [PATCH] Update --- cli/main.py | 202 +- tests/test_discovery_twitter.py | 177 - tools_testing.ipynb | 4837 ++++++++++++++++- .../agents/analysts/fundamentals_analyst.py | 63 +- .../agents/analysts/market_analyst.py | 103 +- tradingagents/agents/analysts/news_analyst.py | 60 +- .../agents/analysts/social_media_analyst.py | 50 +- .../agents/managers/research_manager.py | 134 +- tradingagents/agents/managers/risk_manager.py | 146 +- .../agents/researchers/bear_researcher.py | 81 +- .../agents/researchers/bull_researcher.py | 82 +- .../agents/risk_mgmt/aggresive_debator.py | 87 +- .../agents/risk_mgmt/conservative_debator.py | 99 +- .../agents/risk_mgmt/neutral_debator.py | 97 +- tradingagents/agents/trader/trader.py | 93 +- tradingagents/agents/utils/agent_states.py | 1 + .../agents/utils/historical_memory_builder.py | 648 ++- tradingagents/agents/utils/memory.py | 220 +- .../dataflows/alpha_vantage_analysts.py | 176 + .../dataflows/alpha_vantage_volume.py | 162 + tradingagents/dataflows/finviz_scraper.py | 222 + tradingagents/dataflows/openai.py | 12 +- tradingagents/dataflows/reddit_api.py | 2 +- tradingagents/dataflows/tradier_api.py | 177 + tradingagents/dataflows/y_finance.py | 271 +- tradingagents/default_config.py | 24 +- tradingagents/graph/discovery_graph.py | 372 +- tradingagents/graph/trading_graph.py | 8 +- tradingagents/schemas/__init__.py | 4 + tradingagents/schemas/llm_outputs.py | 19 + tradingagents/tools/registry.py | 108 +- 31 files changed, 8231 insertions(+), 506 deletions(-) delete mode 100644 tests/test_discovery_twitter.py create mode 100644 tradingagents/dataflows/alpha_vantage_analysts.py create mode 100644 tradingagents/dataflows/alpha_vantage_volume.py create mode 100644 tradingagents/dataflows/finviz_scraper.py create mode 100644 tradingagents/dataflows/tradier_api.py diff --git a/cli/main.py b/cli/main.py index 4d6e2e97..11d1fa6f 100644 --- a/cli/main.py +++ b/cli/main.py @@ -836,6 +836,18 @@ def run_discovery_analysis(selections): # Set config globally for route_to_vendor set_config(config) + + # Generate run timestamp + import datetime + run_timestamp = datetime.datetime.now().strftime("%H_%M_%S") + + # Create results directory with run timestamp + results_dir = Path(config["results_dir"]) / "discovery" / selections["analysis_date"] / f"run_{run_timestamp}" + results_dir.mkdir(parents=True, exist_ok=True) + + # Add results dir to config so graph can use it for logging + config["discovery_run_dir"] = str(results_dir) + console.print(f"[dim]Using {config['llm_provider'].upper()} - Shallow: {config['quick_think_llm']}, Deep: {config['deep_think_llm']}[/dim]") # Initialize Discovery Graph (LLMs initialized internally like TradingAgentsGraph) @@ -849,13 +861,10 @@ def run_discovery_analysis(selections): "tickers": [], "filtered_tickers": [], "opportunities": [], + "tool_logs": [], "status": "start" }) - # Create results directory - results_dir = Path(config["results_dir"]) / "discovery" / selections["analysis_date"] - results_dir.mkdir(parents=True, exist_ok=True) - # Save discovery results final_ranking = result.get("final_ranking", "No ranking available") final_ranking_text = extract_text_from_content(final_ranking) @@ -1046,7 +1055,7 @@ def run_trading_analysis(selections): ) # Create result directory - results_dir = Path(config["results_dir"]) / selections["ticker"] / selections["analysis_date"] + results_dir = Path(config["results_dir"]) / "trading" / selections["analysis_date"] / selections["ticker"] results_dir.mkdir(parents=True, exist_ok=True) report_dir = results_dir / "reports" report_dir.mkdir(parents=True, exist_ok=True) @@ -1394,6 +1403,189 @@ def run_trading_analysis(selections): update_display(layout) +@app.command() +def build_memories( + start_date: str = typer.Option( + "2023-01-01", + "--start-date", + "-s", + help="Start date for scanning high movers (YYYY-MM-DD)" + ), + end_date: str = typer.Option( + "2024-12-01", + "--end-date", + "-e", + help="End date for scanning high movers (YYYY-MM-DD)" + ), + tickers: str = typer.Option( + None, + "--tickers", + "-t", + help="Comma-separated list of tickers to scan (overrides --use-alpha-vantage)" + ), + use_alpha_vantage: bool = typer.Option( + False, + "--use-alpha-vantage", + "-a", + help="Use Alpha Vantage top gainers/losers to get ticker list" + ), + av_limit: int = typer.Option( + 20, + "--av-limit", + help="Number of tickers to get from each Alpha Vantage category (gainers/losers)" + ), + min_move_pct: float = typer.Option( + 15.0, + "--min-move", + "-m", + help="Minimum percentage move to qualify as high mover" + ), + analysis_windows: str = typer.Option( + "7,30", + "--windows", + "-w", + help="Comma-separated list of days before move to analyze (e.g., '7,30')" + ), + max_samples: int = typer.Option( + 20, + "--max-samples", + help="Maximum number of high movers to analyze (reduces runtime)" + ), + sample_strategy: str = typer.Option( + "diverse", + "--strategy", + help="Sampling strategy: diverse, largest, recent, or random" + ), +): + """ + Build historical memories from high movers. + + This command: + 1. Scans for stocks with significant moves (>15% in 5 days by default) + 2. Runs retrospective trading analyses at T-7 and T-30 days before the move + 3. Stores situations, outcomes, and agent correctness in ChromaDB + 4. Creates a memory bank for future trading decisions + + Examples: + # Use Alpha Vantage top movers + python cli/main.py build-memories --use-alpha-vantage + + # Use specific tickers + python cli/main.py build-memories --tickers "AAPL,NVDA,TSLA" + + # Customize date range and parameters + python cli/main.py build-memories --use-alpha-vantage --start-date 2023-01-01 --min-move 20.0 + """ + console.print("\n[bold cyan]═══════════════════════════════════════════════════════[/bold cyan]") + console.print("[bold cyan] TRADINGAGENTS MEMORY BUILDER[/bold cyan]") + console.print("[bold cyan]═══════════════════════════════════════════════════════[/bold cyan]\n") + + # Determine ticker source + if use_alpha_vantage and not tickers: + console.print("[bold yellow]📡 Using Alpha Vantage to fetch top movers...[/bold yellow]") + try: + from tradingagents.agents.utils.historical_memory_builder import HistoricalMemoryBuilder + builder_temp = HistoricalMemoryBuilder(DEFAULT_CONFIG) + ticker_list = builder_temp.get_tickers_from_alpha_vantage(limit=av_limit) + + if not ticker_list: + console.print("\n[bold red]❌ No tickers found from Alpha Vantage. Please check your API key or try --tickers instead.[/bold red]\n") + raise typer.Exit(code=1) + except Exception as e: + console.print(f"\n[bold red]❌ Error fetching from Alpha Vantage: {e}[/bold red]") + console.print("[yellow]Please use --tickers to specify tickers manually.[/yellow]\n") + raise typer.Exit(code=1) + elif tickers: + ticker_list = [t.strip().upper() for t in tickers.split(",")] + console.print(f"[bold]Using {len(ticker_list)} specified tickers[/bold]") + else: + # Default tickers if neither option specified + default_tickers = "AAPL,MSFT,GOOGL,NVDA,TSLA,META,AMZN,AMD,NFLX,DIS" + ticker_list = [t.strip().upper() for t in default_tickers.split(",")] + console.print(f"[bold yellow]No ticker source specified. Using default list.[/bold yellow]") + console.print(f"[dim]Tip: Use --use-alpha-vantage for dynamic ticker discovery or --tickers for custom list[/dim]") + + window_list = [int(w.strip()) for w in analysis_windows.split(",")] + + console.print(f"\n[bold]Configuration:[/bold]") + console.print(f" Ticker Source: {'Alpha Vantage' if use_alpha_vantage else 'Manual/Default'}") + console.print(f" Date Range: {start_date} to {end_date}") + console.print(f" Tickers: {len(ticker_list)} stocks") + console.print(f" Min Move: {min_move_pct}%") + console.print(f" Max Samples: {max_samples}") + console.print(f" Sampling Strategy: {sample_strategy}") + console.print(f" Analysis Windows: {window_list} days before move") + console.print() + + try: + # Import here to avoid circular imports + from tradingagents.agents.utils.historical_memory_builder import HistoricalMemoryBuilder + + # Create builder + builder = HistoricalMemoryBuilder(DEFAULT_CONFIG) + + # Build memories + memories = builder.build_memories_from_high_movers( + tickers=ticker_list, + start_date=start_date, + end_date=end_date, + min_move_pct=min_move_pct, + analysis_windows=window_list, + max_samples=max_samples, + sample_strategy=sample_strategy + ) + + if not memories: + console.print("\n[bold yellow]⚠️ No memories created. Try adjusting parameters.[/bold yellow]\n") + return + + # Display summary table + console.print("\n[bold green]✅ Memory building complete![/bold green]\n") + + table = Table(title="Memory Bank Summary", box=box.ROUNDED) + table.add_column("Agent Type", style="cyan", no_wrap=True) + table.add_column("Total Memories", justify="right", style="magenta") + table.add_column("Accuracy Rate", justify="right", style="green") + table.add_column("Avg Move %", justify="right", style="yellow") + + for agent_type, memory in memories.items(): + stats = memory.get_statistics() + table.add_row( + agent_type.upper(), + str(stats['total_memories']), + f"{stats['accuracy_rate']:.1f}%", + f"{stats['avg_move_pct']:.1f}%" + ) + + console.print(table) + console.print() + + # Test memory retrieval + console.print("[bold]Testing Memory Retrieval:[/bold]") + test_situation = """ + Strong earnings beat with positive sentiment and bullish technical indicators. + Volume spike detected. Analyst upgrades present. News sentiment is positive. + """ + + console.print(f" Query: '{test_situation.strip()[:100]}...'\n") + + for agent_type, memory in list(memories.items())[:2]: # Test first 2 agents + results = memory.get_memories(test_situation, n_matches=1) + if results: + console.print(f" [cyan]{agent_type.upper()}[/cyan]: Found {len(results)} relevant memory") + console.print(f" Similarity: {results[0]['similarity_score']:.2f}") + + console.print("\n[bold green]🎉 Memory bank ready for use![/bold green]") + console.print("\n[dim]Note: These memories will be used automatically in future trading analyses when memory is enabled in config.[/dim]\n") + + except Exception as e: + console.print(f"\n[bold red]❌ Error building memories:[/bold red]") + console.print(f"[red]{str(e)}[/red]\n") + import traceback + console.print(f"[dim]{traceback.format_exc()}[/dim]") + raise typer.Exit(code=1) + + @app.command() def analyze(): run_analysis() diff --git a/tests/test_discovery_twitter.py b/tests/test_discovery_twitter.py deleted file mode 100644 index c9140daf..00000000 --- a/tests/test_discovery_twitter.py +++ /dev/null @@ -1,177 +0,0 @@ -""" -Test Twitter integration in Discovery Graph. - -This test verifies that the scanner_node correctly processes Twitter data -and adds candidates with source="twitter_sentiment". -""" - -import pytest -from unittest.mock import patch, MagicMock -from tradingagents.graph.discovery_graph import DiscoveryGraph -from tradingagents.agents.utils.agent_states import DiscoveryState - - -@pytest.fixture -def mock_config(): - """Mock configuration for DiscoveryGraph.""" - return { - "llm_provider": "openai", - "deep_think_llm": "gpt-4", - "quick_think_llm": "gpt-3.5-turbo", - "backend_url": "https://api.openai.com/v1", - "discovery": { - "reddit_trending_limit": 15, - "market_movers_limit": 10, - "max_candidates_to_analyze": 10, - "news_lookback_days": 7, - "final_recommendations": 3 - } - } - - -@pytest.fixture -def discovery_graph(mock_config): - """Create a DiscoveryGraph instance with mocked config.""" - with patch('langchain_openai.ChatOpenAI'): - graph = DiscoveryGraph(config=mock_config) - return graph - - -def test_scanner_node_twitter_integration(discovery_graph): - """Test that scanner_node processes Twitter data correctly.""" - - # Mock the execute_tool function - with patch('tradingagents.graph.discovery_graph.execute_tool') as mock_execute_tool: - # Mock Twitter response - fake_tweets = """ - Tweet 1: $AAPL is looking strong! Great earnings report. - Tweet 2: Watching $TSLA closely, could be a good entry point. - Tweet 3: $NVDA continues to dominate AI chip market. - """ - - # Mock LLM response for ticker extraction - mock_llm_response = MagicMock() - mock_llm_response.content = "AAPL, TSLA, NVDA" - - # Setup mock returns - def execute_tool_side_effect(tool_name, **kwargs): - if tool_name == "get_tweets": - return fake_tweets - elif tool_name == "validate_ticker": - # All tickers are valid - return True - elif tool_name == "get_trending_tickers": - return "Reddit trending: GME, AMC" - elif tool_name == "get_market_movers": - return "Gainers: MSFT, Losers: META" - return "" - - mock_execute_tool.side_effect = execute_tool_side_effect - - # Mock the LLM - discovery_graph.quick_thinking_llm.invoke = MagicMock(return_value=mock_llm_response) - - # Run scanner_node - initial_state = DiscoveryState() - result = discovery_graph.scanner_node(initial_state) - - # Verify results - assert "candidate_metadata" in result - candidates = result["candidate_metadata"] - - # Check that Twitter candidates were added - twitter_candidates = [c for c in candidates if c["source"] == "twitter_sentiment"] - assert len(twitter_candidates) > 0, "No Twitter candidates found" - - # Verify Twitter tickers are present - twitter_tickers = [c["ticker"] for c in twitter_candidates] - assert "AAPL" in twitter_tickers or "TSLA" in twitter_tickers or "NVDA" in twitter_tickers - - # Verify execute_tool was called with correct parameters - mock_execute_tool.assert_any_call("get_tweets", query="stocks to watch", count=20) - - print(f"✅ Test passed! Found {len(twitter_candidates)} Twitter candidates: {twitter_tickers}") - - -def test_scanner_node_twitter_validation(discovery_graph): - """Test that invalid tickers are filtered out.""" - - with patch('tradingagents.graph.discovery_graph.execute_tool') as mock_execute_tool: - # Mock Twitter response with invalid tickers - fake_tweets = "Check out $AAPL and $INVALID and $BTC" - - # Mock LLM response - mock_llm_response = MagicMock() - mock_llm_response.content = "AAPL, INVALID, BTC" - - # Setup mock returns - only AAPL is valid - def execute_tool_side_effect(tool_name, **kwargs): - if tool_name == "get_tweets": - return fake_tweets - elif tool_name == "validate_ticker": - symbol = kwargs.get("symbol", "") - return symbol == "AAPL" # Only AAPL is valid - elif tool_name == "get_trending_tickers": - return "" - elif tool_name == "get_market_movers": - return "" - return "" - - mock_execute_tool.side_effect = execute_tool_side_effect - discovery_graph.quick_thinking_llm.invoke = MagicMock(return_value=mock_llm_response) - - # Run scanner_node - initial_state = DiscoveryState() - result = discovery_graph.scanner_node(initial_state) - - # Verify only valid tickers were added - candidates = result["candidate_metadata"] - twitter_candidates = [c for c in candidates if c["source"] == "twitter_sentiment"] - twitter_tickers = [c["ticker"] for c in twitter_candidates] - - assert "AAPL" in twitter_tickers, "Valid ticker AAPL should be present" - assert "INVALID" not in twitter_tickers, "Invalid ticker should be filtered out" - assert "BTC" not in twitter_tickers, "Crypto ticker should be filtered out" - - print(f"✅ Validation test passed! Only valid tickers: {twitter_tickers}") - - -def test_scanner_node_twitter_error_handling(discovery_graph): - """Test that scanner_node handles Twitter API errors gracefully.""" - - with patch('tradingagents.graph.discovery_graph.execute_tool') as mock_execute_tool: - # Mock Twitter to raise an error - def execute_tool_side_effect(tool_name, **kwargs): - if tool_name == "get_tweets": - raise Exception("Twitter API rate limit exceeded") - elif tool_name == "get_trending_tickers": - return "GME, AMC" - elif tool_name == "get_market_movers": - return "Gainers: MSFT" - return "" - - mock_execute_tool.side_effect = execute_tool_side_effect - - # Mock LLM for Reddit - mock_llm_response = MagicMock() - mock_llm_response.content = "GME, AMC, MSFT" - discovery_graph.quick_thinking_llm.invoke = MagicMock(return_value=mock_llm_response) - - # Run scanner_node - should not crash - initial_state = DiscoveryState() - result = discovery_graph.scanner_node(initial_state) - - # Should still have candidates from other sources - assert "candidate_metadata" in result - candidates = result["candidate_metadata"] - assert len(candidates) > 0, "Should have candidates from other sources" - - # Should not have Twitter candidates - twitter_candidates = [c for c in candidates if c["source"] == "twitter_sentiment"] - assert len(twitter_candidates) == 0, "Should have no Twitter candidates due to error" - - print("✅ Error handling test passed! Graph continues despite Twitter error") - - -if __name__ == "__main__": - pytest.main([__file__, "-v"]) diff --git a/tools_testing.ipynb b/tools_testing.ipynb index af918d24..8862d49f 100644 --- a/tools_testing.ipynb +++ b/tools_testing.ipynb @@ -13,7 +13,7 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 2, "metadata": {}, "outputs": [ { @@ -768,6 +768,4841 @@ "get_alpha_vantage_insider_transactions(symbol=\"AAPL\", curr_date=\"2025-12-02\")" ] }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "from langchain_google_genai import ChatGoogleGenerativeAI\n", + "import os\n", + "# Explicitly pass Google API key from environment\n", + "google_api_key = os.getenv(\"GOOGLE_API_KEY\")\n", + "llm = ChatGoogleGenerativeAI(model=\"gemini-2.5-flash\", google_api_key=google_api_key)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "AIMessage(content=\"Hello! I'm doing very well, thank you for asking.\\n\\nHow are you today?\", additional_kwargs={}, response_metadata={'prompt_feedback': {'block_reason': 0, 'safety_ratings': []}, 'finish_reason': 'STOP', 'model_name': 'gemini-2.5-flash', 'safety_ratings': [], 'grounding_metadata': {}, 'model_provider': 'google_genai'}, id='lc_run--db022674-f158-4d86-ba88-a837d1adf0bf-0', usage_metadata={'input_tokens': 7, 'output_tokens': 91, 'total_tokens': 98, 'input_token_details': {'cache_read': 0}, 'output_token_details': {'reasoning': 71}})" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "llm.invoke(\"Hello, how are you?\")" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "from tradingagents.tools.executor import execute_tool\n", + "from openai import OpenAI" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "=== OPENAI ===\n", + "Error fetching global news from OpenAI: \n", + "\n", + " \n", + " \n", + " Error 404 (Not Found)!!1\n", + " \n", + " \n", + "

404. That’s an error.\n", + "

The requested URL /v1/responses was not found on this server. That’s all we know.\n", + "\n", + "=== ALPHA_VANTAGE ===\n", + "{\n", + " \"items\": \"50\",\n", + " \"sentiment_score_definition\": \"x <= -0.35: Bearish; -0.35 < x <= -0.15: Somewhat-Bearish; -0.15 < x < 0.15: Neutral; 0.15 <= x < 0.35: Somewhat_Bullish; x >= 0.35: Bullish\",\n", + " \"relevance_score_definition\": \"0 < x <= 1, with a higher score indicating higher relevance.\",\n", + " \"feed\": [\n", + " {\n", + " \"title\": \" Woman wanted by FBI for allegedly defrauding Banc of California\",\n", + " \"url\": \"https://abc7.com/post/woman-wanted-fbi-allegedly-defrauding-banc-california/18261416/\",\n", + " \"time_published\": \"20251208T050955\",\n", + " \"authors\": [\n", + " \"NULL\"\n", + " ],\n", + " \"summary\": \" The FBI is searching for Mary Carole McDonnell, a 73-year-old woman accused of defrauding Banc of California out of nearly $15 million, and potentially other financial institutions for over $15 million, by falsely claiming to be an heir to the McDonnell Aircraft Family. She was charged with bank fraud and aggravated identity theft in 2018. McDonnell, who has ties to Los Angeles and Montgomery, Alabama, is believed to be in Dubai, United Arab Emirates.\",\n", + " \"banner_image\": \" NULL\",\n", + " \"source\": \"ABC7 Los Angeles\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"ABC7 Los Angeles\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.913436\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.626753\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.001,\n", + " \"overall_sentiment_label\": \"Neutral\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"BANC\",\n", + " \"relevance_score\": \"0.979016\",\n", + " \"ticker_sentiment_score\": \"0.001000\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Franklin Covey expands hiring to build leadership expertise\",\n", + " \"url\": \"https://tradersunion.com/news/market-voices/show/1033212-franklin-covey-hiring-leaders/\",\n", + " \"time_published\": \"20251208T024038\",\n", + " \"authors\": [\n", + " \"Iryna Sazhynska\"\n", + " ],\n", + " \"summary\": \" Franklin Covey, a global leader in performance improvement, is actively expanding its workforce to find passionate individuals who can help transform organizations by building better leaders. The company is seeking candidates keen on making a positive impact and contributing to organizational growth through leadership training and consulting. This strategic hiring push aligns with Franklin Covey's commitment to cultivating high-performing teams and equipping professionals for leadership success worldwide.\",\n", + " \"banner_image\": \" https://files.tradersunion.com/images/twitter-news/franklincovey/franklincovey_01.jpg\",\n", + " \"source\": \"Traders Union\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"Traders Union\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.739202\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.635732\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.444716,\n", + " \"overall_sentiment_label\": \"Bullish\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"FC\",\n", + " \"relevance_score\": \"0.979300\",\n", + " \"ticker_sentiment_score\": \"0.400026\",\n", + " \"ticker_sentiment_label\": \"Bullish\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Campbell’s Soup Scandal: VP Fired Over 3D-Printed Meat Claims in Leaked Audio\",\n", + " \"url\": \"https://inews.zoombangla.com/campbells-soup-scandal-vp-fired-over-3d-printed-meat-claims-in-leaked-audiosfdfgafdfd/\",\n", + " \"time_published\": \"20251208T015935\",\n", + " \"authors\": [\n", + " \"Md. Akash\"\n", + " ],\n", + " \"summary\": \" Campbell Soup Company fired an IT Vice President after a leaked audio recording surfaced where he falsely claimed the company's chicken soup contained \\\"3D-printed\\\" and \\\"bioengineered\\\" meat. The audio, which also included racially insensitive comments, originated from a lawsuit filed by a former employee. Campbell's swiftly denied the allegations, stating their chicken comes from USDA-approved suppliers, and terminated the VP to address the public relations crisis and maintain consumer trust regarding their traditional brand image.\",\n", + " \"banner_image\": \" https://inews.zoombangla.com/wp-content/uploads/2025/11/Campbells_63220.avif\",\n", + " \"source\": \"Zoom Bangla News\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"Zoom Bangla News\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"retail_wholesale\",\n", + " \"relevance_score\": \"0.874190\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.777779\"\n", + " },\n", + " {\n", + " \"topic\": \"technology\",\n", + " \"relevance_score\": \"0.814753\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.602072\"\n", + " },\n", + " {\n", + " \"topic\": \"life_sciences\",\n", + " \"relevance_score\": \"0.575851\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.001,\n", + " \"overall_sentiment_label\": \"Neutral\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"CPB\",\n", + " \"relevance_score\": \"0.970065\",\n", + " \"ticker_sentiment_score\": \"0.001000\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Edison International (EIX): Valuation Check After Sharp Share Price Drop on Wildfire Liability Fears\",\n", + " \"url\": \"https://simplywall.st/stocks/us/utilities/nyse-eix/edison-international/news/edison-international-eix-valuation-check-after-sharp-share-p\",\n", + " \"time_published\": \"20251208T010840\",\n", + " \"authors\": [\n", + " \"Simply Wall St\"\n", + " ],\n", + " \"summary\": \" Edison International (EIX) is experiencing renewed interest due to a significant share price drop stemming from new wildfire liability concerns related to the Eaton Fire. Despite a recent dip, the stock has shown positive returns over three months and five years, indicating long-term investor confidence. Analysts suggest EIX is undervalued, with a fair value estimate significantly above its current trading price, attributing potential upside to policy-driven electrification and regulatory protections, though wildfire liabilities remain a key risk.\",\n", + " \"banner_image\": \" NULL\",\n", + " \"source\": \"Simply Wall Street\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"Simply Wall Street\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.905660\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.720701\"\n", + " },\n", + " {\n", + " \"topic\": \"energy_transportation\",\n", + " \"relevance_score\": \"0.601422\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.613663\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.138761,\n", + " \"overall_sentiment_label\": \"Neutral\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"EIX\",\n", + " \"relevance_score\": \"0.989393\",\n", + " \"ticker_sentiment_score\": \"0.126980\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \"Applied Materials (AMAT) Stock: 8 Things to Know Before the Market Opens on December 8, 2025\",\n", + " \"url\": \"https://ts2.tech/en/applied-materials-amat-stock-8-things-to-know-before-the-market-opens-on-december-8-2025/\",\n", + " \"time_published\": \"20251208T000753\",\n", + " \"authors\": [\n", + " \"Khadija Saeed\"\n", + " ],\n", + " \"summary\": \"Ahead of market open on December 8, 2025, Applied Materials (AMAT) is a closely watched semiconductor stock trading near all-time highs due to an AI-driven rally. While analyst ratings are generally bullish, valuation concerns and the impact of U.S. export controls on China revenue present challenges. The article details recent financial performance, institutional movements, analyst forecasts, and technical indicators for AMAT.\",\n", + " \"banner_image\": null,\n", + " \"source\": \"ts2.tech\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"ts2.tech\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.901482\"\n", + " },\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.907013\"\n", + " },\n", + " {\n", + " \"topic\": \"technology\",\n", + " \"relevance_score\": \"0.832593\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.613447\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.604491\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.12211,\n", + " \"overall_sentiment_label\": \"Neutral\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"AMAT\",\n", + " \"relevance_score\": \"0.976443\",\n", + " \"ticker_sentiment_score\": \"0.104965\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " },\n", + " {\n", + " \"ticker\": \"INTC\",\n", + " \"relevance_score\": \"0.643601\",\n", + " \"ticker_sentiment_score\": \"0.116449\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " },\n", + " {\n", + " \"ticker\": \"MU\",\n", + " \"relevance_score\": \"0.620804\",\n", + " \"ticker_sentiment_score\": \"0.109298\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \"(AVIG) Volatility Zones as Tactical Triggers\",\n", + " \"url\": \"https://news.stocktradersdaily.com/news_release/91/AVIG_Volatility_Zones_as_Tactical_Triggers_120725111802_1765167482.html\",\n", + " \"time_published\": \"20251207T231800\",\n", + " \"authors\": [\n", + " \"Luke Campbell\"\n", + " ],\n", + " \"summary\": \"This article analyzes Avantis Core Fixed Income Etf (NASDAQ: AVIG), indicating a neutral sentiment with resistance being tested. It presents distinct trading strategies—Position, Momentum Breakout, and Risk Hedging—along with multi-timeframe signal analysis, and highlights an exceptional 3.6:1 risk-reward short setup. The analysis offers specific entry and target zones with corresponding stop losses for each strategy.\",\n", + " \"banner_image\": \"https://news.stocktradersdaily.com/media/681254_AVIG_graph.jpg\",\n", + " \"source\": \"Stock Traders Daily\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"Stock Traders Daily\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.944762\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.630428\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.649060\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.036146,\n", + " \"overall_sentiment_label\": \"Neutral\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"AVIG\",\n", + " \"relevance_score\": \"0.319319\",\n", + " \"ticker_sentiment_score\": \"0.030281\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Pomerantz LLP Issues Important Reminder to Investors in CarMax, Inc. of Class Action Lawsuit – KMX\",\n", + " \"url\": \"https://fox2now.com/business/press-releases/accesswire/1099092/pomerantz-llp-issues-important-reminder-to-investors-in-carmax-inc-of-class-action-lawsuit-kmx\",\n", + " \"time_published\": \"20251207T230932\",\n", + " \"authors\": [\n", + " \"NULL\"\n", + " ],\n", + " \"summary\": \" Pomerantz LLP has filed a class action lawsuit against CarMax, Inc. (NYSE: KMX) on behalf of investors. The lawsuit alleges securities fraud and unlawful business practices by CarMax and its officers after the company reported disappointing Q2 2026 financial results, causing a significant drop in stock price. Investors who purchased CarMax securities during the Class Period have until January 2, 2026, to apply to be Lead Plaintiff.\",\n", + " \"banner_image\": \" https://i0.wp.com/fox2now.com/wp-content/uploads/sites/14/2025/12/6936407fe68014.23144887.jpeg?w=2000&ssl=1\",\n", + " \"source\": \"FOX 2\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"FOX 2\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.927411\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.812717\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.710619\"\n", + " },\n", + " {\n", + " \"topic\": \"retail_wholesale\",\n", + " \"relevance_score\": \"0.642428\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.600744\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.037103,\n", + " \"overall_sentiment_label\": \"Neutral\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"KMX\",\n", + " \"relevance_score\": \"0.301063\",\n", + " \"ticker_sentiment_score\": \"0.034013\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Is Synchrony (SYF) Quietly Deepening Its Smart-Home Credit Edge With The METUS Financing Renewal?\",\n", + " \"url\": \"https://simplywall.st/stocks/us/diversified-financials/nyse-syf/synchrony-financial/news/is-synchrony-syf-quietly-deepening-its-smart-home-credit-edg\",\n", + " \"time_published\": \"20251207T222946\",\n", + " \"authors\": [\n", + " \"Sasha Jovanovic\"\n", + " ],\n", + " \"summary\": \" Synchrony (SYF) has renewed its multi-year financing partnership with Mitsubishi Electric Trane HVAC US (METUS), extending a decade-long collaboration that provides promotional financing for HVAC system upgrades. This renewal highlights Synchrony’s role in enabling smart, energy-efficient home financing and strengthens its ties with METUS’s contractor network. While the partnership modestly supports embedded finance growth, investors should also consider risks like elevated payment rates and muted loan receivable growth, alongside Synchrony's capital deployment strategies.\",\n", + " \"banner_image\": \" NULL\",\n", + " \"source\": \"Simply Wall Street\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"Simply Wall Street\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.949195\"\n", + " },\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.816915\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.731824\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.602960\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.124948,\n", + " \"overall_sentiment_label\": \"Neutral\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"SYF\",\n", + " \"relevance_score\": \"0.985361\",\n", + " \"ticker_sentiment_score\": \"0.116164\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " },\n", + " {\n", + " \"ticker\": \"AXP\",\n", + " \"relevance_score\": \"0.613061\",\n", + " \"ticker_sentiment_score\": \"0.110803\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " },\n", + " {\n", + " \"ticker\": \"COF\",\n", + " \"relevance_score\": \"0.649293\",\n", + " \"ticker_sentiment_score\": \"0.136801\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \"(AGNCN) Risk Channels and Responsive Allocation\",\n", + " \"url\": \"https://news.stocktradersdaily.com/news_release/149/AGNCN_Risk_Channels_and_Responsive_Allocation_120725054202_1765147322.html\",\n", + " \"time_published\": \"20251207T174200\",\n", + " \"authors\": [\n", + " \"Thomas Kee\",\n", + " \"Thomas H. Kee Jr.\"\n", + " ],\n", + " \"summary\": \"This article, published by Stock Traders Daily, analyzes Agnc Investment Corp. (NASDAQ: AGNCN), highlighting a neutral sentiment across all horizons and a mid-channel oscillation pattern. It presents three AI-generated trading strategies—Position, Momentum Breakout, and Risk Hedging—along with their respective entry, target, and stop-loss parameters, emphasizing risk management. The analysis also details multi-timeframe signal analysis and offers access to real-time signals.\",\n", + " \"banner_image\": \"https://news.stocktradersdaily.com/media/681086_AGNCN_graph.jpg\",\n", + " \"source\": \"Stock Traders Daily\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"Stock Traders Daily\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.904413\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.736719\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.628180\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.038665,\n", + " \"overall_sentiment_label\": \"Neutral\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"AGNC\",\n", + " \"relevance_score\": \"0.340570\",\n", + " \"ticker_sentiment_score\": \"0.041035\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Southern Company Stock: Conflicting Cues from Analysts and Major Investors\",\n", + " \"url\": \"https://www.ad-hoc-news.de/boerse/ueberblick/southern-company-stock-conflicting-cues-from-analysts-and-major-investors/68411690\",\n", + " \"time_published\": \"20251207T170829\",\n", + " \"authors\": [\n", + " \"NULL\"\n", + " ],\n", + " \"summary\": \" Southern Company (US8425871071) faces conflicting signals: downgraded to \\\"Sell\\\" by Wall Street Zen while Norway's Norges Bank initiated a significant $1.18 billion position. Despite a technical downtrend and a revenue miss, the company exceeded EPS expectations and is projected for future revenue and EPS growth. The broader analyst consensus remains \\\"Hold\\\" with an average price target implying significant upside, leaving investors to weigh the analyst downgrade against major institutional buying interest.\",\n", + " \"banner_image\": \" NULL\",\n", + " \"source\": \"AD HOC NEWS\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"AD HOC NEWS\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.920533\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.818308\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.728126\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.628752\"\n", + " },\n", + " {\n", + " \"topic\": \"energy_transportation\",\n", + " \"relevance_score\": \"0.619931\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.032642,\n", + " \"overall_sentiment_label\": \"Neutral\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"SO\",\n", + " \"relevance_score\": \"0.981068\",\n", + " \"ticker_sentiment_score\": \"0.047634\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" BBWI ALERT: Ongoing Investigation Into Bath & Body Works, Inc. - Contact Levi & Korsinsky\",\n", + " \"url\": \"https://fox2now.com/business/press-releases/accesswire/1115333/bbwi-alert-ongoing-investigation-into-bath-body-works-inc-contact-levi-korsinsky\",\n", + " \"time_published\": \"20251207T165349\",\n", + " \"authors\": [\n", + " \"NULL\"\n", + " ],\n", + " \"summary\": \" Levi & Korsinsky has initiated an investigation into Bath & Body Works, Inc. (NYSE: BBWI) following a significant drop in its stock price. This comes after the company reported third-quarter fiscal 2025 results that fell below expectations and revised its full-year guidance downwards, citing a challenging consumer environment and unsuccessful strategic efforts. Investors who have suffered losses are encouraged to contact Levi & Korsinsky for more information regarding potential violations of federal securities laws.\",\n", + " \"banner_image\": \" https://nxstrib.com/wp-content/uploads/2022/10/ANW_COLOR_FULL_VECTOR.png?w=300\",\n", + " \"source\": \"FOX 2\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"FOX 2\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.945287\"\n", + " },\n", + " {\n", + " \"topic\": \"retail_wholesale\",\n", + " \"relevance_score\": \"0.825694\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.733269\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.634219\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.642620\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.001,\n", + " \"overall_sentiment_label\": \"Neutral\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"BBWI\",\n", + " \"relevance_score\": \"0.986926\",\n", + " \"ticker_sentiment_score\": \"0.001000\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Trading the Move, Not the Narrative: (ACLX) Edition\",\n", + " \"url\": \"https://news.stocktradersdaily.com/news_release/90/Trading_the_Move,_Not_the_Narrative:_ACLX_Edition_120725041602_1765142162.html\",\n", + " \"time_published\": \"20251207T161600\",\n", + " \"authors\": [\n", + " \"Gy Bennar\"\n", + " ],\n", + " \"summary\": \" An analysis of Arcellx Inc. (NASDAQ: ACLX) reveals a mid-channel oscillation pattern, with weak near and mid-term sentiment contrasting a strong long-term positive outlook. The article presents an exceptional risk-reward setup targeting a 17.6% gain against 0.3% risk and outlines three distinct AI-generated trading strategies—Position, Momentum Breakout, and Risk Hedging—tailored to different risk profiles and holding periods for ACLX.\",\n", + " \"banner_image\": \" https://news.stocktradersdaily.com/media/681043_ACLX_graph.jpg\",\n", + " \"source\": \"Stock Traders Daily\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"Stock Traders Daily\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.923169\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.702140\"\n", + " },\n", + " {\n", + " \"topic\": \"life_sciences\",\n", + " \"relevance_score\": \"0.630567\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.613806\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.244967,\n", + " \"overall_sentiment_label\": \"Somewhat-Bullish\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"ACLX\",\n", + " \"relevance_score\": \"0.980982\",\n", + " \"ticker_sentiment_score\": \"0.239563\",\n", + " \"ticker_sentiment_label\": \"Somewhat-Bullish\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Bronstein, Gewirtz & Grossman, LLC Encourages The Home Depot, Inc. (HD) Investors to Inquire about Securities Investigation\",\n", + " \"url\": \"https://www.kxan.com/business/press-releases/accesswire/1114534/bronstein-gewirtz-grossman-llc-encourages-the-home-depot-inc-hd-investors-to-inquire-about-securities-investigation\",\n", + " \"time_published\": \"20251207T160811\",\n", + " \"authors\": [\n", + " \"NULL\"\n", + " ],\n", + " \"summary\": \" Bronstein, Gewirtz & Grossman, LLC is investigating potential claims on behalf of investors regarding The Home Depot, Inc. (HD) after the company missed Q3 2025 sales forecasts due to \\\"lack of storms\\\" and \\\"consumer uncertainty,\\\" which caused a 6% stock drop. The firm encourages investors who purchased Home Depot securities to inquire about the ongoing securities investigation.\",\n", + " \"banner_image\": \" https://app.accessnewswire.com/imagelibrary/7cd7536f-28aa-4884-ae9c-1a7de679eba3/1114534/image.png\",\n", + " \"source\": \"KXAN Austin\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"KXAN Austin\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.942167\"\n", + " },\n", + " {\n", + " \"topic\": \"retail_wholesale\",\n", + " \"relevance_score\": \"0.823859\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.738792\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.638007\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.631004\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.042904,\n", + " \"overall_sentiment_label\": \"Neutral\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"HD\",\n", + " \"relevance_score\": \"0.307463\",\n", + " \"ticker_sentiment_score\": \"0.048888\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Micron Technology (MU) Stock on December 7, 2025: AI Memory Supercycle, Crucial Exit, and Fresh Wall Street Forecasts\",\n", + " \"url\": \"https://ts2.tech/en/micron-technology-mu-stock-on-december-7-2025-ai-memory-supercycle-crucial-exit-and-fresh-wall-street-forecasts/\",\n", + " \"time_published\": \"20251207T150800\",\n", + " \"authors\": [\n", + " \"Khadija Saeed\"\n", + " ],\n", + " \"summary\": \" Micron Technology (MU) has experienced a significant surge in 2025, driven by the AI memory supercycle, with its stock up 170-180%. The company is strategically shifting its focus to high-bandwidth memory (HBM) and AI data centers, including exiting its consumer-focused Crucial brand to prioritize higher-margin AI products. Wall Street analysts are largely bullish, having raised price targets based on strong financial performance in fiscal 2025 and optimistic outlooks for 2026, despite some valuation concerns.\",\n", + " \"banner_image\": \" NULL\",\n", + " \"source\": \"ts2.tech\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"ts2.tech\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.936898\"\n", + " },\n", + " {\n", + " \"topic\": \"technology\",\n", + " \"relevance_score\": \"0.910902\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.809670\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.622310\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.603320\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.337496,\n", + " \"overall_sentiment_label\": \"Somewhat-Bullish\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"MU\",\n", + " \"relevance_score\": \"0.973603\",\n", + " \"ticker_sentiment_score\": \"0.491706\",\n", + " \"ticker_sentiment_label\": \"Bullish\"\n", + " },\n", + " {\n", + " \"ticker\": \"AMD\",\n", + " \"relevance_score\": \"0.725038\",\n", + " \"ticker_sentiment_score\": \"0.322423\",\n", + " \"ticker_sentiment_label\": \"Somewhat-Bullish\"\n", + " },\n", + " {\n", + " \"ticker\": \"NVDA\",\n", + " \"relevance_score\": \"0.601310\",\n", + " \"ticker_sentiment_score\": \"0.327243\",\n", + " \"ticker_sentiment_label\": \"Somewhat-Bullish\"\n", + " },\n", + " {\n", + " \"ticker\": \"GOOGL\",\n", + " \"relevance_score\": \"0.572673\",\n", + " \"ticker_sentiment_score\": \"0.250097\",\n", + " \"ticker_sentiment_label\": \"Somewhat-Bullish\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Navigating Argentina’s Market Through a Focused ETF Lens\",\n", + " \"url\": \"https://www.ad-hoc-news.de/boerse/news/ueberblick/navigating-argentina-s-market-through-a-focused-etf-lens/68411471\",\n", + " \"time_published\": \"20251207T144202\",\n", + " \"authors\": [\n", + " \"NULL\"\n", + " ],\n", + " \"summary\": \" The Global X MSCI Argentina ETF (ARGT) exhibits high volatility due to its concentrated portfolio, with MercadoLibre Inc. (MELI) and YPF SA (YPF) being major holdings. Recent developments, such as a direct flight route from Shanghai to Buenos Aires, could boost trade, but rising short interest indicates skepticism. Investors face significant single-stock and sector risks, and the ETF's future performance will depend on Argentina's macroeconomic indicators like trade balance and the Argentine peso.\",\n", + " \"banner_image\": \" NULL\",\n", + " \"source\": \"AD HOC NEWS\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"AD HOC NEWS\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.909239\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.801395\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.728531\"\n", + " },\n", + " {\n", + " \"topic\": \"energy_transportation\",\n", + " \"relevance_score\": \"0.600500\"\n", + " },\n", + " {\n", + " \"topic\": \"retail_wholesale\",\n", + " \"relevance_score\": \"0.637302\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.001,\n", + " \"overall_sentiment_label\": \"Neutral\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"ARGT\",\n", + " \"relevance_score\": \"0.982813\",\n", + " \"ticker_sentiment_score\": \"0.001000\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" How Proshares Ultra Ftse China 50 2x Shares (XPP) Affects Rotational Strategy Timing\",\n", + " \"url\": \"https://news.stocktradersdaily.com/news_release/17/How_Proshares_Ultra_Ftse_China_50_2x_Shares_XPP_Affects_Rotational_Strategy_Timing_120725023402_1765136042.html\",\n", + " \"time_published\": \"20251207T142056\",\n", + " \"authors\": [\n", + " \"Jesse F.\"\n", + " ],\n", + " \"summary\": \" An analysis of Proshares Ultra Ftse China 50 2x Shares (XPP) reveals a mid-channel oscillation pattern and divergent sentiment across various time horizons, suggesting choppy market conditions. The article identifies an exceptional 35.4:1 risk-reward setup, targeting a 10.5% gain versus 0.3% risk. It also outlines three AI-generated trading strategies—Position Trading, Momentum Breakout, and Risk Hedging—tailored for different risk profiles and holding periods, complete with entry, target, and stop-loss levels.\",\n", + " \"banner_image\": \" https://news.stocktradersdaily.com/media/680992_XPP_graph.jpg\",\n", + " \"source\": \"Stock Traders Daily\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"Stock Traders Daily\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.905053\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.635170\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.631844\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.267377,\n", + " \"overall_sentiment_label\": \"Somewhat-Bullish\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"XPP\",\n", + " \"relevance_score\": \"0.986792\",\n", + " \"ticker_sentiment_score\": \"0.263128\",\n", + " \"ticker_sentiment_label\": \"Somewhat-Bullish\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \"Assessing KeyCorp (KEY) Valuation as Activist Investor Pressures Board, Buybacks, and Leadership Changes\",\n", + " \"url\": \"https://simplywall.st/stocks/us/banks/nyse-key/keycorp/news/assessing-keycorp-key-valuation-as-activist-investor-pressur/amp\",\n", + " \"time_published\": \"20251207T141006\",\n", + " \"authors\": [\n", + " \"Simply Wall St\"\n", + " ],\n", + " \"summary\": \"Activist investor HoldCo Asset Management is pressuring KeyCorp (KEY) for aggressive buybacks, leadership changes, and a \\\"no acquisition\\\" stance, even suggesting a potential sale. Despite KeyCorp's recent share price momentum and an undervalued stock according to analysts, the company's valuation faces risks from rising nonperforming loans and higher regulatory capital demands. The article suggests that while KeyCorp looks cheap against fair value estimates, its high P/E ratio compared to peers indicates potential valuation risk if growth or activism don't fully materialize.\",\n", + " \"banner_image\": null,\n", + " \"source\": \"Simply Wall Street\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"Simply Wall Street\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.938424\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.847226\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.977816\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.616663\"\n", + " },\n", + " {\n", + " \"topic\": \"mergers_and_acquisitions\",\n", + " \"relevance_score\": \"0.731273\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.113349,\n", + " \"overall_sentiment_label\": \"Neutral\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"KEY\",\n", + " \"relevance_score\": \"0.986815\",\n", + " \"ticker_sentiment_score\": \"0.104446\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Analog Devices (ADI) Is Up 6.0% After Strong Q4 Results And Higher Capital Returns Is The Bull Case Changing?\",\n", + " \"url\": \"https://simplywall.st/stocks/us/semiconductors/nasdaq-adi/analog-devices/news/analog-devices-adi-is-up-60-after-strong-q4-results-and-high\",\n", + " \"time_published\": \"20251207T135304\",\n", + " \"authors\": [\n", + " \"Sasha Jovanovic\"\n", + " ],\n", + " \"summary\": \" Analog Devices reported strong Q4 2025 results with increased sales and net income, along with full-year sales of US$11.02 billion. The company also announced continued share repurchases and a US$0.99 quarterly dividend, signaling a balance between growth investment and shareholder returns. While the latest results and Q1 2026 guidance support a positive near-term outlook, investors are advised to consider potential risks such as inventory corrections and rising fixed costs.\",\n", + " \"banner_image\": \" NULL\",\n", + " \"source\": \"Simply Wall Street\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"Simply Wall Street\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.931938\"\n", + " },\n", + " {\n", + " \"topic\": \"technology\",\n", + " \"relevance_score\": \"0.803570\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.703923\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.624020\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.628278\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.335028,\n", + " \"overall_sentiment_label\": \"Somewhat-Bullish\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"ADI\",\n", + " \"relevance_score\": \"0.983550\",\n", + " \"ticker_sentiment_score\": \"0.746298\",\n", + " \"ticker_sentiment_label\": \"Bullish\"\n", + " },\n", + " {\n", + " \"ticker\": \"AVGO\",\n", + " \"relevance_score\": \"0.641814\",\n", + " \"ticker_sentiment_score\": \"0.148002\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " },\n", + " {\n", + " \"ticker\": \"AMD\",\n", + " \"relevance_score\": \"0.644104\",\n", + " \"ticker_sentiment_score\": \"0.142495\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Banco Bradesco SA $BBD Stock Position Decreased by Walleye Capital LLC\",\n", + " \"url\": \"https://www.marketbeat.com/instant-alerts/filing-banco-bradesco-sa-bbd-stock-position-decreased-by-walleye-capital-llc-2025-12-07/\",\n", + " \"time_published\": \"20251207T130959\",\n", + " \"authors\": [\n", + " \"MarketBeat\"\n", + " ],\n", + " \"summary\": \" Walleye Capital LLC significantly reduced its holdings in Banco Bradesco SA ($BBD) by 23.7% in Q2 2025, selling over 407,000 shares. Conversely, other institutional investors, most notably Fisher Asset Management LLC, substantially increased their stakes, indicating a mixed institutional sentiment. Despite missing quarterly EPS estimates, Banco Bradesco announced an increase in its monthly dividend.\",\n", + " \"banner_image\": \" https://www.marketbeat.com/logos/banco-bradesco-sa-logo-1200x675.png?v=20221024141153\",\n", + " \"source\": \"MarketBeat\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"MarketBeat\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.938020\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.801791\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.717061\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.613055\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.040301,\n", + " \"overall_sentiment_label\": \"Neutral\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"BBDO\",\n", + " \"relevance_score\": \"0.342201\",\n", + " \"ticker_sentiment_score\": \"0.042138\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" 9 Best Life Insurance Stocks to Buy Now\",\n", + " \"url\": \"https://www.insidermonkey.com/blog/9-best-life-insurance-stocks-to-buy-now-1655513/2\",\n", + " \"time_published\": \"20251207T124300\",\n", + " \"authors\": [\n", + " \"Fatima Gulzar\"\n", + " ],\n", + " \"summary\": \" This article, part of a larger list, highlights Principal Financial Group, Inc. (NASDAQ:PFG) as a top life insurance stock. The company is noted for its attractive long-term dividend growth potential, 16-year dividend growth streak, and strong non-GAAP EPS growth expectations. Morgan Stanley recently increased its price target for PFG to $87.\",\n", + " \"banner_image\": \" NULL\",\n", + " \"source\": \"Insider Monkey\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"Insider Monkey\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.903494\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.823035\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.810016\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.610043\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.369166,\n", + " \"overall_sentiment_label\": \"Bullish\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"PFG\",\n", + " \"relevance_score\": \"0.971679\",\n", + " \"ticker_sentiment_score\": \"0.428810\",\n", + " \"ticker_sentiment_label\": \"Bullish\"\n", + " },\n", + " {\n", + " \"ticker\": \"GL\",\n", + " \"relevance_score\": \"0.616865\",\n", + " \"ticker_sentiment_score\": \"0.334467\",\n", + " \"ticker_sentiment_label\": \"Somewhat-Bullish\"\n", + " },\n", + " {\n", + " \"ticker\": \"MET\",\n", + " \"relevance_score\": \"0.608923\",\n", + " \"ticker_sentiment_score\": \"0.324226\",\n", + " \"ticker_sentiment_label\": \"Somewhat-Bullish\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" American Express Company $AXP is Gamco Investors INC. ET AL's 5th Largest Position\",\n", + " \"url\": \"https://www.marketbeat.com/instant-alerts/filing-american-express-company-axp-is-gamco-investors-inc-et-als-5th-largest-position-2025-12-07/\",\n", + " \"time_published\": \"20251207T122340\",\n", + " \"authors\": [\n", + " \"MarketBeat\"\n", + " ],\n", + " \"summary\": \" Gamco Investors INC. ET AL reduced its stake in American Express (NYSE:AXP) by 4.0% in the second quarter, making it their 5th largest holding, valued at $150.15 million. Other institutional investors like Nordea Investment Management AB and Dempze Nancy E also adjusted their positions. American Express stock currently trades at $370.39, with a market cap of $255.14 billion, and recently reported strong quarterly earnings, beating consensus estimates.\",\n", + " \"banner_image\": \" https://www.marketbeat.com/logos/american-express-1200x675.jpg\",\n", + " \"source\": \"MarketBeat\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"MarketBeat\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.940362\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.806049\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.743931\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.607509\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.140517,\n", + " \"overall_sentiment_label\": \"Neutral\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"AXP\",\n", + " \"relevance_score\": \"0.978616\",\n", + " \"ticker_sentiment_score\": \"0.102708\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Federated Hermes Inc. Raises Holdings in The TJX Companies, Inc. $TJX\",\n", + " \"url\": \"https://www.marketbeat.com/instant-alerts/filing-federated-hermes-inc-raises-holdings-in-the-tjx-companies-inc-tjx-2025-12-07/\",\n", + " \"time_published\": \"20251207T121228\",\n", + " \"authors\": [\n", + " \"MarketBeat\"\n", + " ],\n", + " \"summary\": \" Federated Hermes Inc. increased its stake in The TJX Companies, Inc. by 4.5% during the second quarter, now owning 1,257,482 shares valued at $155.3 million. TJX Companies beat earnings expectations, reporting $1.28 EPS against an anticipated $1.22, with revenues up 7.5% year-over-year. The company maintains an average \\\"Buy\\\" rating from analysts with an average target price of $160.37, despite recent insider selling.\",\n", + " \"banner_image\": \" https://www.marketbeat.com/logos/the-tjx-companies-inc-logo-1200x675.png?v=20240102162711\",\n", + " \"source\": \"MarketBeat\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"MarketBeat\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.910938\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.824325\"\n", + " },\n", + " {\n", + " \"topic\": \"retail_wholesale\",\n", + " \"relevance_score\": \"0.710171\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.611828\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.603458\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.474713,\n", + " \"overall_sentiment_label\": \"Bullish\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"TJX\",\n", + " \"relevance_score\": \"0.986681\",\n", + " \"ticker_sentiment_score\": \"0.468853\",\n", + " \"ticker_sentiment_label\": \"Bullish\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Federated Hermes Inc. Sells 69,875 Shares of The Walt Disney Company $DIS\",\n", + " \"url\": \"https://www.marketbeat.com/instant-alerts/filing-federated-hermes-inc-sells-69875-shares-of-the-walt-disney-company-dis-2025-12-07/\",\n", + " \"time_published\": \"20251207T120851\",\n", + " \"authors\": [\n", + " \"MarketBeat\"\n", + " ],\n", + " \"summary\": \" Federated Hermes Inc. reduced its stake in The Walt Disney Company by 5.9% during the second quarter, selling nearly 70,000 shares and now holding 1.1 million shares worth $137.37 million. Analyst sentiment for Disney remains largely positive with a \\\"Moderate Buy\\\" consensus and an average price target of $134.41. The company recently reported better-than-expected quarterly EPS of $1.11 and declared a $0.75 dividend.\",\n", + " \"banner_image\": \" https://www.marketbeat.com/logos/the-walt-disney-company-logo-1200x675.png?v=20201229105326\",\n", + " \"source\": \"MarketBeat\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"MarketBeat\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.911413\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.848272\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.725782\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.621111\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.258234,\n", + " \"overall_sentiment_label\": \"Somewhat-Bullish\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"DIS\",\n", + " \"relevance_score\": \"0.975832\",\n", + " \"ticker_sentiment_score\": \"0.287412\",\n", + " \"ticker_sentiment_label\": \"Somewhat-Bullish\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Edison International $EIX Shares Bought by Jump Financial LLC\",\n", + " \"url\": \"https://www.marketbeat.com/instant-alerts/filing-edison-international-eix-shares-bought-by-jump-financial-llc-2025-12-07/\",\n", + " \"time_published\": \"20251207T120839\",\n", + " \"authors\": [\n", + " \"MarketBeat\"\n", + " ],\n", + " \"summary\": \" Jump Financial LLC significantly increased its stake in Edison International (NYSE:EIX) in Q2, boosting its holdings by 683.9% to 743,147 shares worth $38.35 million. This coincides with other large institutional investments, including Norges Bank and Vanguard, pushing institutional ownership to 88.95%. The company recently beat earnings expectations, issued strong FY2025 guidance, and offers a competitive dividend yield of 5.7%.\",\n", + " \"banner_image\": \" https://www.marketbeat.com/logos/edison-international-logo-1200x675.png?v=20240102162522\",\n", + " \"source\": \"MarketBeat\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"MarketBeat\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.907575\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.815857\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.731570\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.629107\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.407543,\n", + " \"overall_sentiment_label\": \"Bullish\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"EIX\",\n", + " \"relevance_score\": \"0.984125\",\n", + " \"ticker_sentiment_score\": \"0.430150\",\n", + " \"ticker_sentiment_label\": \"Bullish\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Lamb Weston (LW): Has the 2024 Share Price Pullback Created a Valuation Opportunity?\",\n", + " \"url\": \"https://finance.yahoo.com/news/lamb-weston-lw-2024-share-200447700.html\",\n", + " \"time_published\": \"20251207T120400\",\n", + " \"authors\": [\n", + " \"Simply Wall St\"\n", + " ],\n", + " \"summary\": \" Lamb Weston Holdings (LW) has seen its share price decline about 10% this year, despite growing annual revenue and net income, leading value investors to take a closer look. While analysts have a consensus price target suggesting potential upside, risks remain regarding sustained restaurant traffic weakness and margin pressure. The stock's current P/E ratio is higher than the US Food industry average, indicating it trades at a premium.\",\n", + " \"banner_image\": \" NULL\",\n", + " \"source\": \"Yahoo Finance\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"Yahoo Finance\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.926866\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.834296\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.742177\"\n", + " },\n", + " {\n", + " \"topic\": \"retail_wholesale\",\n", + " \"relevance_score\": \"0.613838\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.637428\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.290081,\n", + " \"overall_sentiment_label\": \"Somewhat-Bullish\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"LW\",\n", + " \"relevance_score\": \"0.989407\",\n", + " \"ticker_sentiment_score\": \"0.285743\",\n", + " \"ticker_sentiment_label\": \"Somewhat-Bullish\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Formula Growth Ltd. Takes $1.76 Million Position in AllianceBernstein Holding L.P. $AB\",\n", + " \"url\": \"https://www.marketbeat.com/instant-alerts/filing-formula-growth-ltd-takes-176-million-position-in-alliancebernstein-holding-lp-ab-2025-12-07/\",\n", + " \"time_published\": \"20251207T120353\",\n", + " \"authors\": [\n", + " \"MarketBeat\"\n", + " ],\n", + " \"summary\": \" Formula Growth Ltd. has acquired a new stake in AllianceBernstein Holding L.P. worth approximately $1.76 million. Other institutional investors have also adjusted their holdings in the asset manager. AllianceBernstein recently increased its quarterly dividend, and analysts currently rate the stock as a \\\"Hold\\\" with an average target price of $41.83.\",\n", + " \"banner_image\": \" https://www.marketbeat.com/logos/alliancebernstein-holding-lp-logo-1200x675.png?v=20240424110152\",\n", + " \"source\": \"MarketBeat\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"MarketBeat\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.912827\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.821883\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.739169\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.639440\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.16805,\n", + " \"overall_sentiment_label\": \"Somewhat-Bullish\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"AB\",\n", + " \"relevance_score\": \"0.978059\",\n", + " \"ticker_sentiment_score\": \"0.283056\",\n", + " \"ticker_sentiment_label\": \"Somewhat-Bullish\"\n", + " },\n", + " {\n", + " \"ticker\": \"MSFT\",\n", + " \"relevance_score\": \"0.644121\",\n", + " \"ticker_sentiment_score\": \"0.140096\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " },\n", + " {\n", + " \"ticker\": \"ORCL\",\n", + " \"relevance_score\": \"0.599961\",\n", + " \"ticker_sentiment_score\": \"0.140018\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Gamco Investors INC. ET AL Has $25.55 Million Stock Position in Golden Entertainment, Inc. $GDEN\",\n", + " \"url\": \"https://www.marketbeat.com/instant-alerts/filing-gamco-investors-inc-et-al-has-2555-million-stock-position-in-golden-entertainment-inc-gden-2025-12-07/\",\n", + " \"time_published\": \"20251207T120329\",\n", + " \"authors\": [\n", + " \"MarketBeat\"\n", + " ],\n", + " \"summary\": \" Gamco Investors INC. ET AL has increased its stake in Golden Entertainment, Inc. (NASDAQ:GDEN) to 868,146 shares, valued at approximately $25.55 million, representing 3.32% of the company. Despite missing recent quarterly earnings and revenue expectations, Golden Entertainment offers a quarterly dividend of $0.25, yielding around 3.6%. Institutional investors hold a significant portion of the stock, and analysts currently have a consensus \\\"Hold\\\" rating with a target price of $32.60.\",\n", + " \"banner_image\": \" https://www.marketbeat.com/logos/golden-entertainment-inc-logo-1200x675.png?v=20221130171325\",\n", + " \"source\": \"MarketBeat\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"MarketBeat\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.925934\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.829254\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.737718\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.614816\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.001,\n", + " \"overall_sentiment_label\": \"Neutral\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"GDEN\",\n", + " \"relevance_score\": \"0.971519\",\n", + " \"ticker_sentiment_score\": \"0.001000\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Gamco Investors INC. ET AL Trims Position in Bank of America Corporation $BAC\",\n", + " \"url\": \"https://www.marketbeat.com/instant-alerts/filing-gamco-investors-inc-et-al-trims-position-in-bank-of-america-corporation-bac-2025-12-07/\",\n", + " \"time_published\": \"20251207T115756\",\n", + " \"authors\": [\n", + " \"MarketBeat\"\n", + " ],\n", + " \"summary\": \" Gamco Investors INC. ET AL reduced its stake in Bank of America Corporation by 6.5% during the second quarter, selling 37,073 shares and holding 530,139 shares valued at $25.086 million. Despite this trimming by one institutional investor, other hedge funds increased their positions in BAC, and analysts generally maintain a \\\"Moderate Buy\\\" rating with a consensus price target of $57.77. The company recently reported strong quarterly earnings and declared a quarterly dividend.\",\n", + " \"banner_image\": \" https://www.marketbeat.com/logos/bank-of-america-co-logo-1200x675.jpg?v=20221020143030\",\n", + " \"source\": \"MarketBeat\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"MarketBeat\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.944618\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.839399\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.803713\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.637995\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.001,\n", + " \"overall_sentiment_label\": \"Neutral\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"BAC\",\n", + " \"relevance_score\": \"0.975940\",\n", + " \"ticker_sentiment_score\": \"0.219754\",\n", + " \"ticker_sentiment_label\": \"Somewhat-Bullish\"\n", + " },\n", + " {\n", + " \"ticker\": \"MSFT\",\n", + " \"relevance_score\": \"0.524458\",\n", + " \"ticker_sentiment_score\": \"0.001000\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Wells Fargo & Company $WFC Stock Position Decreased by Gabelli Funds LLC\",\n", + " \"url\": \"https://www.marketbeat.com/instant-alerts/filing-wells-fargo-company-wfc-stock-position-decreased-by-gabelli-funds-llc-2025-12-07/\",\n", + " \"time_published\": \"20251207T114959\",\n", + " \"authors\": [\n", + " \"MarketBeat\"\n", + " ],\n", + " \"summary\": \" Gabelli Funds LLC reduced its stake in Wells Fargo & Company ($WFC) by 9.6% in the second quarter, selling approximately 79,816 shares but still holding 750,199 shares valued at around $60.1 million. Despite this reduction, Wells Fargo reported strong quarterly earnings, beating analyst estimates with $1.73 EPS and $21.44 billion in revenue. The company also announced a quarterly dividend of $0.45 per share and maintains a consensus \\\"Moderate Buy\\\" rating from analysts with an average target price of $89.57.\",\n", + " \"banner_image\": \" https://www.marketbeat.com/logos/wells-fargo-logo-1200x675.jpg\",\n", + " \"source\": \"MarketBeat\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"MarketBeat\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.922771\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.818232\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.746124\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.627886\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.134236,\n", + " \"overall_sentiment_label\": \"Neutral\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"WFC\",\n", + " \"relevance_score\": \"0.980934\",\n", + " \"ticker_sentiment_score\": \"0.235487\",\n", + " \"ticker_sentiment_label\": \"Somewhat-Bullish\"\n", + " },\n", + " {\n", + " \"ticker\": \"BAC\",\n", + " \"relevance_score\": \"0.556185\",\n", + " \"ticker_sentiment_score\": \"0.116834\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " },\n", + " {\n", + " \"ticker\": \"JPM\",\n", + " \"relevance_score\": \"0.579787\",\n", + " \"ticker_sentiment_score\": \"0.101519\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " },\n", + " {\n", + " \"ticker\": \"MS\",\n", + " \"relevance_score\": \"0.578032\",\n", + " \"ticker_sentiment_score\": \"0.120230\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " },\n", + " {\n", + " \"ticker\": \"C\",\n", + " \"relevance_score\": \"0.573060\",\n", + " \"ticker_sentiment_score\": \"0.136719\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Marshall Wace LLP Acquires 215,472 Shares of H&R Block, Inc. $HRB\",\n", + " \"url\": \"https://www.marketbeat.com/instant-alerts/filing-marshall-wace-llp-acquires-215472-shares-of-hr-block-inc-hrb-2025-12-07/\",\n", + " \"time_published\": \"20251207T112414\",\n", + " \"authors\": [\n", + " \"MarketBeat\"\n", + " ],\n", + " \"summary\": \" Marshall Wace LLP increased its stake in H&R Block (NYSE: HRB) by 24.6%, purchasing an additional 215,472 shares, bringing its total holdings to 1,091,626 shares worth approximately $59.92 million. This investment comes as H&R Block reported beating quarterly estimates, with revenue up 5%, and announced a quarterly dividend of $0.42. Institutional investors now own about 90.14% of the company's stock, while CEO Jeffrey J. Jones II recently sold a portion of his shares.\",\n", + " \"banner_image\": \" https://www.marketbeat.com/logos/hr-block-inc-logo-1200x675.png?v=20240424110042\",\n", + " \"source\": \"MarketBeat\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"MarketBeat\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.939313\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.806906\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.642752\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.638824\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.194524,\n", + " \"overall_sentiment_label\": \"Somewhat-Bullish\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"HRB\",\n", + " \"relevance_score\": \"0.976517\",\n", + " \"ticker_sentiment_score\": \"0.192153\",\n", + " \"ticker_sentiment_label\": \"Somewhat-Bullish\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Kennedy Capital Management LLC Sells 60,976 Shares of Blue Bird Corporation $BLBD\",\n", + " \"url\": \"https://www.marketbeat.com/instant-alerts/filing-kennedy-capital-management-llc-sells-60976-shares-of-blue-bird-corporation-blbd-2025-12-07/\",\n", + " \"time_published\": \"20251207T112241\",\n", + " \"authors\": [\n", + " \"MarketBeat\"\n", + " ],\n", + " \"summary\": \" Kennedy Capital Management LLC reduced its stake in Blue Bird Corporation by 38.4%, selling 60,976 shares and ending the quarter with 97,615 shares valued at approximately $4.21 million. Despite this insider selling, Blue Bird posted a strong quarterly performance, beating analyst expectations with $1.32 EPS and revenue of $409.4 million. Analyst sentiment for Blue Bird remains largely positive, with a consensus \\\"Moderate Buy\\\" rating and a target price of $64.60.\",\n", + " \"banner_image\": \" https://www.marketbeat.com/logos/blue-bird-corporation-logo-1200x675.png\",\n", + " \"source\": \"MarketBeat\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"MarketBeat\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.946936\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.825658\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.744827\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.646120\"\n", + " },\n", + " {\n", + " \"topic\": \"energy_transportation\",\n", + " \"relevance_score\": \"0.649907\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.402327,\n", + " \"overall_sentiment_label\": \"Bullish\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"BLBD\",\n", + " \"relevance_score\": \"0.974860\",\n", + " \"ticker_sentiment_score\": \"0.442604\",\n", + " \"ticker_sentiment_label\": \"Bullish\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" First Trust Advisors LP Sells 3,923,091 Shares of Regions Financial Corporation $RF\",\n", + " \"url\": \"https://www.marketbeat.com/instant-alerts/filing-first-trust-advisors-lp-sells-3923091-shares-of-regions-financial-corporation-rf-2025-12-07/\",\n", + " \"time_published\": \"20251207T111546\",\n", + " \"authors\": [\n", + " \"MarketBeat\"\n", + " ],\n", + " \"summary\": \" First Trust Advisors LP significantly reduced its stake in Regions Financial Corporation (NYSE:RF) by selling 3,923,091 shares, decreasing its holdings by 52.4%. Despite this, other institutional investors have increased their positions in the bank. The article also provides an overview of recent analyst ratings, the company's price performance, dividend announcement, and its financial segments.\",\n", + " \"banner_image\": \" https://www.marketbeat.com/logos/regions-financial-co-logo-1200x675.jpg?v=20221103135541\",\n", + " \"source\": \"MarketBeat\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"MarketBeat\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.909081\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.830153\"\n", + " },\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.724958\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.646435\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.046997,\n", + " \"overall_sentiment_label\": \"Neutral\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"RF\",\n", + " \"relevance_score\": \"0.975973\",\n", + " \"ticker_sentiment_score\": \"0.049019\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" First Trust Advisors LP Sells 1,686,190 Shares of Fifth Third Bancorp $FITB\",\n", + " \"url\": \"https://www.marketbeat.com/instant-alerts/filing-first-trust-advisors-lp-sells-1686190-shares-of-fifth-third-bancorp-fitb-2025-12-07/\",\n", + " \"time_published\": \"20251207T111417\",\n", + " \"authors\": [\n", + " \"MarketBeat\"\n", + " ],\n", + " \"summary\": \" First Trust Advisors LP significantly reduced its stake in Fifth Third Bancorp by selling 1,686,190 shares, representing a 45.7% decrease in its holdings during the second quarter. Despite this reduction, other institutional investors like Deutsche Bank AG and Mitsubishi UFJ Asset Management Co. Ltd. increased their stakes. The article also provides details on Fifth Third Bancorp's stock performance, recent dividend increase, and analyst ratings, with a consensus of \\\"Moderate Buy.\\\"\",\n", + " \"banner_image\": \" https://www.marketbeat.com/logos/316773-1200x675.jpg\",\n", + " \"source\": \"MarketBeat\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"MarketBeat\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.935925\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.819888\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.816524\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.631853\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.051796,\n", + " \"overall_sentiment_label\": \"Neutral\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"FITB\",\n", + " \"relevance_score\": \"0.980575\",\n", + " \"ticker_sentiment_score\": \"0.094572\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Marshall Wace LLP Makes New Investment in Veralto Corporation $VLTO\",\n", + " \"url\": \"https://www.marketbeat.com/instant-alerts/filing-marshall-wace-llp-makes-new-investment-in-veralto-corporation-vlto-2025-12-07/\",\n", + " \"time_published\": \"20251207T111357\",\n", + " \"authors\": [\n", + " \"MarketBeat\"\n", + " ],\n", + " \"summary\": \" Marshall Wace LLP has acquired a new stake of 436,929 shares in Veralto Corporation (VLTO), valued at approximately $44.1 million, making it one of several institutional investors to hold significant positions in the company. Veralto recently exceeded its quarterly EPS estimates, with revenue increasing by 6.8% year-over-year, and has issued positive FY2025 guidance. The stock currently trades around $102 with a \\\"Moderate Buy\\\" consensus rating from analysts and an average price target of $115.11.\",\n", + " \"banner_image\": \" https://www.marketbeat.com/logos/veralto-co-logo-1200x675.jpg?v=20231003124839\",\n", + " \"source\": \"MarketBeat\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"MarketBeat\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.904934\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.834442\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.715901\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.612420\"\n", + " },\n", + " {\n", + " \"topic\": \"life_sciences\",\n", + " \"relevance_score\": \"0.648394\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.426638,\n", + " \"overall_sentiment_label\": \"Bullish\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"VLTO\",\n", + " \"relevance_score\": \"0.978864\",\n", + " \"ticker_sentiment_score\": \"0.426268\",\n", + " \"ticker_sentiment_label\": \"Bullish\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Marshall Wace LLP Acquires 390,821 Shares of Raymond James Financial, Inc. $RJF\",\n", + " \"url\": \"https://www.marketbeat.com/instant-alerts/filing-marshall-wace-llp-acquires-390821-shares-of-raymond-james-financial-inc-rjf-2025-12-07/\",\n", + " \"time_published\": \"20251207T111346\",\n", + " \"authors\": [\n", + " \"MarketBeat\"\n", + " ],\n", + " \"summary\": \" Marshall Wace LLP significantly increased its stake in Raymond James Financial, Inc. ($RJF) by 824.7% in Q2, purchasing 390,821 additional shares to now own a total of 438,213 shares valued at approximately $67.21 million. Raymond James Financial ($RJF) recently beat earnings expectations, reporting EPS of $3.11 against an anticipated $2.83, and has increased its quarterly dividend to $0.54 per share. Several other hedge funds have also adjusted their positions in the company, with 83.83% of the stock currently held by institutional investors.\",\n", + " \"banner_image\": \" https://www.marketbeat.com/logos/raymond-james-logo-1200x675.gif\",\n", + " \"source\": \"MarketBeat\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"MarketBeat\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.942076\"\n", + " },\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.840362\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.726201\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.637304\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.486711,\n", + " \"overall_sentiment_label\": \"Bullish\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"RJF\",\n", + " \"relevance_score\": \"0.988357\",\n", + " \"ticker_sentiment_score\": \"0.484669\",\n", + " \"ticker_sentiment_label\": \"Bullish\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Marshall Wace LLP Acquires 2,463,880 Shares of KeyCorp $KEY\",\n", + " \"url\": \"https://www.marketbeat.com/instant-alerts/filing-marshall-wace-llp-acquires-2463880-shares-of-keycorp-key-2025-12-07/\",\n", + " \"time_published\": \"20251207T111327\",\n", + " \"authors\": [\n", + " \"MarketBeat\"\n", + " ],\n", + " \"summary\": \" Marshall Wace LLP significantly increased its stake in KeyCorp by 2,258.4% in Q2, acquiring over 2.4 million shares and now holding approximately 0.23% of the company valued at $44.82 million. KeyCorp recently announced a quarterly dividend of $0.205 per share, representing a 4.3% yield, and reported strong Q3 earnings with EPS of $0.41, beating analyst expectations. While several other hedge funds also adjusted their positions, analysts generally maintain a \\\"Hold\\\" rating for KeyCorp with an average price target of $20.59.\",\n", + " \"banner_image\": \" https://www.marketbeat.com/logos/keycorp-logo-1200x675.jpg?v=20221104113123\",\n", + " \"source\": \"MarketBeat\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"MarketBeat\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.920911\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.807556\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.825036\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.639252\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.270955,\n", + " \"overall_sentiment_label\": \"Somewhat-Bullish\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"KEY\",\n", + " \"relevance_score\": \"0.975910\",\n", + " \"ticker_sentiment_score\": \"0.296884\",\n", + " \"ticker_sentiment_label\": \"Somewhat-Bullish\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Trustmark (TRMK) Stock Analysis Report | Financials & Insights\",\n", + " \"url\": \"https://kr.benzinga.com/quote/TRMK/report\",\n", + " \"time_published\": \"20251207T111017\",\n", + " \"authors\": [\n", + " \"NULL\"\n", + " ],\n", + " \"summary\": \" This report provides a comprehensive analysis of Trustmark (TRMK), detailing its financial performance, growth potential, valuation, and dividend history. The company, a bank holding company operating across several southern states, shows positive earnings growth over the past three years. Its Sharpe ratio is 0.6363 over the past five years, considered below average compared to its peers.\",\n", + " \"banner_image\": \" https://kr.benzinga.com/_next/image?url=%2Fnext-assets%2Fimages%2Fheaderbg.jpg&w=3840&q=75\",\n", + " \"source\": \"Benzinga\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"Benzinga\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.934663\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.844238\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.837560\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.634169\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.235429,\n", + " \"overall_sentiment_label\": \"Somewhat-Bullish\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"TRMK\",\n", + " \"relevance_score\": \"0.972007\",\n", + " \"ticker_sentiment_score\": \"0.269479\",\n", + " \"ticker_sentiment_label\": \"Somewhat-Bullish\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Marshall Wace LLP Sells 4,850,525 Shares of Banco Bradesco SA $BBD\",\n", + " \"url\": \"https://www.marketbeat.com/instant-alerts/filing-marshall-wace-llp-sells-4850525-shares-of-banco-bradesco-sa-bbd-2025-12-07/\",\n", + " \"time_published\": \"20251207T110959\",\n", + " \"authors\": [\n", + " \"MarketBeat\"\n", + " ],\n", + " \"summary\": \" Marshall Wace LLP has reduced its stake in Banco Bradesco SA (NYSE:BBD) by selling over 4.85 million shares, decreasing its total holding to 15,714,234 shares. This divestment occurred as Banco Bradesco's shares fell by about 8.9% after reporting quarterly earnings that missed analyst estimates. Despite the share reduction by Marshall Wace LLP, Banco Bradesco recently announced an increase in its monthly dividend, signifying a potential positive outlook for income-focused investors.\",\n", + " \"banner_image\": \" https://www.marketbeat.com/logos/banco-bradesco-sa-logo-1200x675.png?v=20221024141153\",\n", + " \"source\": \"MarketBeat\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"MarketBeat\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.906334\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.837676\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.816367\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.638469\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.115783,\n", + " \"overall_sentiment_label\": \"Neutral\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"BBDO\",\n", + " \"relevance_score\": \"0.313931\",\n", + " \"ticker_sentiment_score\": \"0.031409\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " },\n", + " {\n", + " \"ticker\": \"MSFT\",\n", + " \"relevance_score\": \"0.637845\",\n", + " \"ticker_sentiment_score\": \"0.126432\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " },\n", + " {\n", + " \"ticker\": \"ULTA\",\n", + " \"relevance_score\": \"0.647552\",\n", + " \"ticker_sentiment_score\": \"0.226234\",\n", + " \"ticker_sentiment_label\": \"Somewhat-Bullish\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Invesco Ltd. Sells 51,018 Shares of Public Storage $PSA\",\n", + " \"url\": \"https://www.marketbeat.com/instant-alerts/filing-invesco-ltd-sells-51018-shares-of-public-storage-psa-2025-12-07/\",\n", + " \"time_published\": \"20251207T110851\",\n", + " \"authors\": [\n", + " \"MarketBeat\"\n", + " ],\n", + " \"summary\": \" Invesco Ltd. has reduced its holding in Public Storage by 4.6%, selling 51,018 shares and retaining 1,065,519 shares valued at approximately $312.6 million. Public Storage has declared a quarterly dividend of $3.00, resulting in an annualized dividend of $12.00 and a 4.4% yield, despite a payout ratio of 124.6%. The company exceeded quarterly EPS estimates and provided strong FY2025 guidance, leading analysts to maintain a \\\"Moderate Buy\\\" consensus with an average target price of $320.87.\",\n", + " \"banner_image\": \" https://www.marketbeat.com/logos/public-storage-logo-1200x675.png?v=20221021145102\",\n", + " \"source\": \"MarketBeat\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"MarketBeat\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.940783\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.842556\"\n", + " },\n", + " {\n", + " \"topic\": \"real_estate\",\n", + " \"relevance_score\": \"0.726808\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.629184\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.605803\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.186911,\n", + " \"overall_sentiment_label\": \"Somewhat-Bullish\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"PSA\",\n", + " \"relevance_score\": \"0.974551\",\n", + " \"ticker_sentiment_score\": \"0.258005\",\n", + " \"ticker_sentiment_label\": \"Somewhat-Bullish\"\n", + " },\n", + " {\n", + " \"ticker\": \"IVZ\",\n", + " \"relevance_score\": \"0.624841\",\n", + " \"ticker_sentiment_score\": \"0.138030\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " },\n", + " {\n", + " \"ticker\": \"JPM\",\n", + " \"relevance_score\": \"0.563643\",\n", + " \"ticker_sentiment_score\": \"0.123882\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " },\n", + " {\n", + " \"ticker\": \"MS\",\n", + " \"relevance_score\": \"0.579949\",\n", + " \"ticker_sentiment_score\": \"0.107309\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Guggenheim Capital LLC Has $5.42 Million Holdings in S&P Global Inc. $SPGI\",\n", + " \"url\": \"https://www.marketbeat.com/instant-alerts/filing-guggenheim-capital-llc-has-542-million-holdings-in-sp-global-inc-spgi-2025-12-07/\",\n", + " \"time_published\": \"20251207T110133\",\n", + " \"authors\": [\n", + " \"MarketBeat\"\n", + " ],\n", + " \"summary\": \" Guggenheim Capital LLC reduced its stake in S&P Global Inc. ($SPGI) by 42.3% during the second quarter, now holding 10,270 shares valued at $5.42 million. Despite this reduction, other institutional investors have increased their positions in the company, and Wall Street analysts generally maintain a \\\"Buy\\\" rating with an average price target of $613.00. S&P Global also announced a quarterly dividend of $0.96 per share.\",\n", + " \"banner_image\": \" https://www.marketbeat.com/logos/samp;p-global-inc-logo-1200x675.jpg\",\n", + " \"source\": \"MarketBeat\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"MarketBeat\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.906969\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.933435\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.804068\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.645638\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.339571,\n", + " \"overall_sentiment_label\": \"Somewhat-Bullish\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"SPGI\",\n", + " \"relevance_score\": \"0.977488\",\n", + " \"ticker_sentiment_score\": \"0.307641\",\n", + " \"ticker_sentiment_label\": \"Somewhat-Bullish\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Guggenheim Capital LLC Buys 31,120 Shares of General Mills, Inc. $GIS\",\n", + " \"url\": \"https://www.marketbeat.com/instant-alerts/filing-guggenheim-capital-llc-buys-31120-shares-of-general-mills-inc-gis-2025-12-07/\",\n", + " \"time_published\": \"20251207T110105\",\n", + " \"authors\": [\n", + " \"MarketBeat\"\n", + " ],\n", + " \"summary\": \" Guggenheim Capital LLC increased its stake in General Mills, Inc. (NYSE:GIS) by 40.5% in the second quarter, bringing its total holdings to 107,887 shares valued at $5.59 million. Other institutional investors also adjusted their positions in GIS. General Mills reported earnings per share of $0.86, beating consensus estimates, and declared a quarterly dividend of $0.61 per share.\",\n", + " \"banner_image\": \" https://www.marketbeat.com/logos/general-mills-inc-logo-1200x675.jpg?v=20221021152352\",\n", + " \"source\": \"MarketBeat\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"MarketBeat\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.943853\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.842750\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.738367\"\n", + " },\n", + " {\n", + " \"topic\": \"retail_wholesale\",\n", + " \"relevance_score\": \"0.602953\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.614447\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.105265,\n", + " \"overall_sentiment_label\": \"Neutral\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"GIS\",\n", + " \"relevance_score\": \"0.980991\",\n", + " \"ticker_sentiment_score\": \"0.101527\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Danaher Corporation $DHR Shares Purchased by Guggenheim Capital LLC\",\n", + " \"url\": \"https://www.marketbeat.com/instant-alerts/filing-danaher-corporation-dhr-shares-purchased-by-guggenheim-capital-llc-2025-12-07/\",\n", + " \"time_published\": \"20251207T110056\",\n", + " \"authors\": [\n", + " \"MarketBeat\"\n", + " ],\n", + " \"summary\": \" Guggenheim Capital LLC increased its stake in Danaher Corporation (NYSE:DHR) by 25.3% in the second quarter, bringing its total holdings to 34,066 shares valued at $6,729,000. Several other institutional investors also adjusted their positions in DHR. Insider activity included sales by SVP Brian W. Ellis and Director Teri List, while analysts have a \\\"Moderate Buy\\\" consensus rating with an average target price of $245.75 for Danaher.\",\n", + " \"banner_image\": \" https://www.marketbeat.com/logos/danaher-co-logo-1200x675.png?v=20210524093152\",\n", + " \"source\": \"MarketBeat\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"MarketBeat\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.943017\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.851242\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.798210\"\n", + " },\n", + " {\n", + " \"topic\": \"life_sciences\",\n", + " \"relevance_score\": \"0.634499\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.592315\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.135029,\n", + " \"overall_sentiment_label\": \"Neutral\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"DHR\",\n", + " \"relevance_score\": \"0.986956\",\n", + " \"ticker_sentiment_score\": \"0.259589\",\n", + " \"ticker_sentiment_label\": \"Somewhat-Bullish\"\n", + " },\n", + " {\n", + " \"ticker\": \"JCI\",\n", + " \"relevance_score\": \"0.573657\",\n", + " \"ticker_sentiment_score\": \"0.033560\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Invesco Ltd. Raises Holdings in Ventas, Inc. $VTR\",\n", + " \"url\": \"https://www.marketbeat.com/instant-alerts/filing-invesco-ltd-raises-holdings-in-ventas-inc-vtr-2025-12-07/\",\n", + " \"time_published\": \"20251207T104511\",\n", + " \"authors\": [\n", + " \"MarketBeat\"\n", + " ],\n", + " \"summary\": \" Invesco Ltd. significantly increased its stake in Ventas, Inc. (NYSE:VTR) by 36.1% in Q2, now owning 1.06% of the company valued at over $303 million. Despite insider selling by CEO Peter Bulgarelli and CFO Robert Probst, analysts maintain a \\\"Moderate Buy\\\" rating with a consensus price target of $78.40, following Ventas's Q3 earnings beat and positive FY2025 guidance. The stock exhibits a market capitalization of $37.87 billion and a current dividend yield of 2.4%.\",\n", + " \"banner_image\": \" https://www.marketbeat.com/logos/ventas-inc-logo-1200x675.png\",\n", + " \"source\": \"MarketBeat\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"MarketBeat\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.932318\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.816608\"\n", + " },\n", + " {\n", + " \"topic\": \"real_estate\",\n", + " \"relevance_score\": \"0.741487\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.610665\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.617236\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.286477,\n", + " \"overall_sentiment_label\": \"Somewhat-Bullish\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"IVZ\",\n", + " \"relevance_score\": \"0.801828\",\n", + " \"ticker_sentiment_score\": \"0.261009\",\n", + " \"ticker_sentiment_label\": \"Somewhat-Bullish\"\n", + " },\n", + " {\n", + " \"ticker\": \"VTR\",\n", + " \"relevance_score\": \"0.976754\",\n", + " \"ticker_sentiment_score\": \"0.262365\",\n", + " \"ticker_sentiment_label\": \"Somewhat-Bullish\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Invesco Ltd. Cuts Holdings in Huntington Ingalls Industries, Inc. $HII\",\n", + " \"url\": \"https://www.marketbeat.com/instant-alerts/filing-invesco-ltd-cuts-holdings-in-huntington-ingalls-industries-inc-hii-2025-12-07/\",\n", + " \"time_published\": \"20251207T104507\",\n", + " \"authors\": [\n", + " \"MarketBeat\"\n", + " ],\n", + " \"summary\": \" Invesco Ltd. recently reduced its stake in Huntington Ingalls Industries (HII) by 11.3% in Q2, though institutional ownership remains high at over 90%. HII reported strong Q3 earnings, beating analyst expectations with an EPS of $3.68 and revenue of $3.19 billion, and also increased its quarterly dividend. Despite insider selling, the stock maintains an average analyst rating of \\\"Hold\\\" with an average price target of $318.57.\",\n", + " \"banner_image\": \" https://www.marketbeat.com/logos/huntington-ingalls-industries-inc-logo-1200x675.png?v=20240528162836\",\n", + " \"source\": \"MarketBeat\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"MarketBeat\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.916420\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.809464\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.742355\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.628292\"\n", + " },\n", + " {\n", + " \"topic\": \"manufacturing\",\n", + " \"relevance_score\": \"0.640481\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.001,\n", + " \"overall_sentiment_label\": \"Neutral\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"HII\",\n", + " \"relevance_score\": \"0.963701\",\n", + " \"ticker_sentiment_score\": \"0.001000\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " },\n", + " {\n", + " \"ticker\": \"IVZ\",\n", + " \"relevance_score\": \"0.894436\",\n", + " \"ticker_sentiment_score\": \"0.001000\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " },\n", + " {\n", + " \"ticker\": \"SCHW\",\n", + " \"relevance_score\": \"0.623502\",\n", + " \"ticker_sentiment_score\": \"0.082423\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Hsbc Holdings PLC Lowers Position in Park Hotels & Resorts Inc. $PK\",\n", + " \"url\": \"https://www.marketbeat.com/instant-alerts/filing-hsbc-holdings-plc-lowers-position-in-park-hotels-resorts-inc-pk-2025-12-07/\",\n", + " \"time_published\": \"20251207T104315\",\n", + " \"authors\": [\n", + " \"MarketBeat\"\n", + " ],\n", + " \"summary\": \" Hsbc Holdings PLC has reduced its stake in Park Hotels & Resorts Inc. (NYSE:PK) by 36% in the second quarter, selling 153,062 shares and decreasing its holding to 271,907 shares. This move comes as Park Hotels & Resorts reported weaker-than-expected earnings and revenue, leading to a negative P/E ratio and several analyst downgrades. Despite a 9.5% dividend yield, the consensus analyst rating is \\\"Reduce\\\" with a target price of $11.10.\",\n", + " \"banner_image\": \" https://www.marketbeat.com/logos/park-hotels-amp;-resorts-inc-logo-1200x675.png\",\n", + " \"source\": \"MarketBeat\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"MarketBeat\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.947348\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.835674\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.727899\"\n", + " },\n", + " {\n", + " \"topic\": \"real_estate\",\n", + " \"relevance_score\": \"0.636740\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.638902\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.001,\n", + " \"overall_sentiment_label\": \"Neutral\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"PK\",\n", + " \"relevance_score\": \"0.977516\",\n", + " \"ticker_sentiment_score\": \"0.001000\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Norges Bank Takes Position in Cousins Properties Incorporated $CUZ\",\n", + " \"url\": \"https://www.marketbeat.com/instant-alerts/filing-norges-bank-takes-position-in-cousins-properties-incorporated-cuz-2025-12-07/\",\n", + " \"time_published\": \"20251207T103107\",\n", + " \"authors\": [\n", + " \"MarketBeat\"\n", + " ],\n", + " \"summary\": \" Norges Bank acquired a new position in Cousins Properties Incorporated, purchasing over 1.3 million shares valued at approximately $41.35 million in the second quarter. This move positions Norges Bank with about 0.82% ownership of the real estate investment trust. Cousins Properties reported strong Q2 earnings, meeting EPS estimates and exceeding revenue forecasts, and offering a 5.2% dividend yield, contributing to a \\\"Moderate Buy\\\" analyst rating.\",\n", + " \"banner_image\": \" https://www.marketbeat.com/logos/cousins-properties-incorporated-logo-1200x675.png?v=20221117150752\",\n", + " \"source\": \"MarketBeat\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"MarketBeat\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"real_estate\",\n", + " \"relevance_score\": \"0.911949\"\n", + " },\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.901470\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.805784\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.713404\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.634038\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.046674,\n", + " \"overall_sentiment_label\": \"Neutral\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"CUZ\",\n", + " \"relevance_score\": \"0.319482\",\n", + " \"ticker_sentiment_score\": \"0.039011\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" California Public Employees Retirement System Purchases 15,587 Shares of S&P Global Inc. $SPGI\",\n", + " \"url\": \"https://www.marketbeat.com/instant-alerts/filing-california-public-employees-retirement-system-purchases-15587-shares-of-sp-global-inc-spgi-2025-12-07/\",\n", + " \"time_published\": \"20251207T102433\",\n", + " \"authors\": [\n", + " \"MarketBeat\"\n", + " ],\n", + " \"summary\": \" The California Public Employees Retirement System increased its stake in S&P Global Inc. by 2.5% during the second quarter, acquiring an additional 15,587 shares. The fund now owns 632,444 shares of S&P Global, valued at approximately $333.48 million. Other institutional investors have also adjusted their positions in the company, which continues to receive a \\\"Buy\\\" rating from analysts with a consensus price target of $613.00.\",\n", + " \"banner_image\": \" https://www.marketbeat.com/logos/samp;p-global-inc-logo-1200x675.jpg\",\n", + " \"source\": \"MarketBeat\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"MarketBeat\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.930507\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.841176\"\n", + " },\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.749069\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.637962\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.420467,\n", + " \"overall_sentiment_label\": \"Bullish\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"SPGI\",\n", + " \"relevance_score\": \"0.977907\",\n", + " \"ticker_sentiment_score\": \"0.429352\",\n", + " \"ticker_sentiment_label\": \"Bullish\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Norges Bank Makes New $49.62 Million Investment in Norwegian Cruise Line Holdings Ltd. $NCLH\",\n", + " \"url\": \"https://www.marketbeat.com/instant-alerts/filing-norges-bank-makes-new-4962-million-investment-in-norwegian-cruise-line-holdings-ltd-nclh-2025-12-07/\",\n", + " \"time_published\": \"20251207T102321\",\n", + " \"authors\": [\n", + " \"MarketBeat\"\n", + " ],\n", + " \"summary\": \" Norges Bank has made a new significant investment in Norwegian Cruise Line Holdings Ltd. (NYSE:NCLH), acquiring 2,446,735 shares valued at approximately $49.62 million in the second quarter. This move makes Norges Bank a substantial holder, owning about 0.54% of the company. Other institutional investors have also adjusted their positions, and Wall Street analysts have issued various ratings for NCLH, with a consensus target price of $28.05.\",\n", + " \"banner_image\": \" https://www.marketbeat.com/logos/norwegian-cruise-line-holdings-ltd-logo-1200x675.PNG?v=20210105121822\",\n", + " \"source\": \"MarketBeat\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"MarketBeat\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.912648\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.806293\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.700161\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.607947\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.142358,\n", + " \"overall_sentiment_label\": \"Neutral\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"NCLH\",\n", + " \"relevance_score\": \"0.977928\",\n", + " \"ticker_sentiment_score\": \"0.261431\",\n", + " \"ticker_sentiment_label\": \"Somewhat-Bullish\"\n", + " },\n", + " {\n", + " \"ticker\": \"RCL\",\n", + " \"relevance_score\": \"0.615868\",\n", + " \"ticker_sentiment_score\": \"0.046683\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" 460,477 Shares in Mohawk Industries, Inc. $MHK Purchased by Norges Bank\",\n", + " \"url\": \"https://www.marketbeat.com/instant-alerts/filing-460477-shares-in-mohawk-industries-inc-mhk-purchased-by-norges-bank-2025-12-07/\",\n", + " \"time_published\": \"20251207T102318\",\n", + " \"authors\": [\n", + " \"MarketBeat\"\n", + " ],\n", + " \"summary\": \" Norges Bank recently acquired a new stake of 460,477 shares in Mohawk Industries, Inc. (NYSE:MHK) during the second quarter, valued at approximately $48.28 million. This purchase makes Norges Bank a significant institutional holder, owning about 0.74% of Mohawk Industries. Other institutional investors have also adjusted their positions, and company insiders have sold shares recently.\",\n", + " \"banner_image\": \" https://www.marketbeat.com/logos/mohawk-industries-inc-logo-1200x675.png\",\n", + " \"source\": \"MarketBeat\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"MarketBeat\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.927810\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.835307\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.714189\"\n", + " },\n", + " {\n", + " \"topic\": \"real_estate\",\n", + " \"relevance_score\": \"0.647145\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.648552\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.240837,\n", + " \"overall_sentiment_label\": \"Somewhat-Bullish\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"MHK\",\n", + " \"relevance_score\": \"0.988484\",\n", + " \"ticker_sentiment_score\": \"0.227521\",\n", + " \"ticker_sentiment_label\": \"Somewhat-Bullish\"\n", + " }\n", + " ]\n", + " },\n", + " {\n", + " \"title\": \" Schroder Investment Management Group Increases Stake in Comerica Incorporated $CMA\",\n", + " \"url\": \"https://www.marketbeat.com/instant-alerts/filing-schroder-investment-management-group-increases-stake-in-comerica-incorporated-cma-2025-12-07/\",\n", + " \"time_published\": \"20251207T101241\",\n", + " \"authors\": [\n", + " \"MarketBeat\"\n", + " ],\n", + " \"summary\": \" Schroder Investment Management Group significantly increased its stake in Comerica Incorporated (NYSE:CMA) by 405.5% in Q2, acquiring 27,119 shares valued at $1.612 million. The financial services provider currently holds a consensus \\\"Hold\\\" rating from analysts with an average target price of $74.55, and recently announced a quarterly dividend of $0.71 per share.\",\n", + " \"banner_image\": \" https://www.marketbeat.com/logos/comerica-incorporated-logo-1200x675.jpg?v=20240426160626\",\n", + " \"source\": \"MarketBeat\",\n", + " \"category_within_source\": \"General\",\n", + " \"source_domain\": \"MarketBeat\",\n", + " \"topics\": [\n", + " {\n", + " \"topic\": \"earnings\",\n", + " \"relevance_score\": \"0.925385\"\n", + " },\n", + " {\n", + " \"topic\": \"financial_markets\",\n", + " \"relevance_score\": \"0.832735\"\n", + " },\n", + " {\n", + " \"topic\": \"finance\",\n", + " \"relevance_score\": \"0.830892\"\n", + " },\n", + " {\n", + " \"topic\": \"economy_macro\",\n", + " \"relevance_score\": \"0.611911\"\n", + " }\n", + " ],\n", + " \"overall_sentiment_score\": 0.187193,\n", + " \"overall_sentiment_label\": \"Somewhat-Bullish\",\n", + " \"ticker_sentiment\": [\n", + " {\n", + " \"ticker\": \"CMA\",\n", + " \"relevance_score\": \"0.988810\",\n", + " \"ticker_sentiment_score\": \"0.239287\",\n", + " \"ticker_sentiment_label\": \"Somewhat-Bullish\"\n", + " },\n", + " {\n", + " \"ticker\": \"WFC\",\n", + " \"relevance_score\": \"0.627918\",\n", + " \"ticker_sentiment_score\": \"0.113662\",\n", + " \"ticker_sentiment_label\": \"Neutral\"\n", + " }\n", + " ]\n", + " }\n", + " ]\n", + "}\n", + "\n", + "=== REDDIT ===\n", + "## Global News from Reddit (Last 7 days)\n", + "\n", + "### [worldnews] Pope Francis left funds in his will to buy ambulances for Ukraine, nun says (Score: 35739)\n", + "**Date:** 2025-12-04\n", + "\n", + "### [worldnews] Chernobyl radiation shield has stopped working after Russian drone strikes, UN warns (Score: 30055)\n", + "**Date:** 2025-12-06\n", + "\n", + "### [worldnews] EU tells Trump: You can’t pardon Putin for war crimes in Ukraine (Score: 27689)\n", + "**Date:** 2025-12-01\n", + "\n", + "### [worldnews] Macron warned US could ‘betray’ Ukraine in leaked leaders’ call, Spiegel reports (Score: 27492)\n", + "**Date:** 2025-12-04\n", + "\n", + "### [worldnews] Zelensky's jet in near-miss with four drones: Report (Score: 22212)\n", + "**Date:** 2025-12-04\n", + "\n", + "\n", + "\n", + "=== GOOGLE ===\n", + "\n" + ] + } + ], + "source": [ + "print(execute_tool(\"get_global_news\", \"2025-12-07\"))" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Here are five recent articles from December 1 to December 7, 2025, providing insights into global macroeconomic developments relevant for trading:\n", + "\n", + "1. **Tariffs, AI Boom Could Test Global Growth's Resilience, OECD Says** \n", + " The Organisation for Economic Co-operation and Development (OECD) reports that global growth remains resilient, bolstered by a surge in AI investments that help offset the negative effects of recent U.S. tariff hikes. The OECD forecasts a slight global economic deceleration from 3.2% in 2025 to 2.9% in 2026, with a rebound to 3.1% expected in 2027. However, risks persist due to ongoing trade tensions and potential corrections in overvalued AI-driven stock markets. ([reuters.com](https://www.reuters.com/world/china/tariffs-ai-boom-could-test-global-growths-resilience-oecd-says-2025-12-02/?utm_source=openai))\n", + "\n", + "2. **Trading Day: World Shivers on Japan Rate Chill** \n", + " On December 1, 2025, global financial markets experienced turbulence following comments by Bank of Japan (BOJ) Governor Kazuo Ueda, who suggested a possible interest rate hike on December 19. This led to a global spike in bond yields and a sell-off in equities, dampening optimism linked to a potential U.S. interest rate cut. The Japanese yen appreciated as Japanese Government Bond (JGB) yields surged, raising questions about the durability of monetary support amidst Japan's looming fiscal stimulus plans. ([reuters.com](https://www.reuters.com/world/china/global-markets-trading-day-graphic-2025-12-01/?utm_source=openai))\n", + "\n", + "3. **IMF Chief Georgieva to Visit China Next Week, IMF Says** \n", + " IMF Managing Director Kristalina Georgieva is set to visit China as part of the organization's annual Article IV review of the Chinese economy, running from December 1 to December 10, 2025. This visit marks the IMF's first review since August 2024, making it a long-overdue evaluation of China's economic policies. The IMF expressed optimism over ongoing U.S.-China trade discussions, noting that China's export-driven economy has been hampered by U.S. tariffs, which economists estimate reduced export growth by about 2 percentage points or 0.3% of GDP. ([reuters.com](https://www.reuters.com/world/asia-pacific/imf-chief-georgieva-visit-china-next-week-imf-says-2025-12-04/?utm_source=openai))\n", + "\n", + "4. **Cracks Appear in Entrenched Weak Dollar Outlook: Reuters Poll** \n", + " A Reuters poll reveals growing divergence among foreign exchange strategists over the future of the U.S. dollar. While the predominant sentiment remains bearish due to expectations of Federal Reserve rate cuts, a notable minority now anticipate a dollar rebound. The dollar has fallen about 9% year-to-date—its weakest year since 2017—due to concerns over tariffs, labor market uncertainties, fiscal outlook, and central bank independence. Despite consistent net-short positioning in the dollar since April, about 30% of strategists now foresee a short-term rally, a sharp increase from 6% in November. ([reuters.com](https://www.reuters.com/world/cracks-appear-entrenched-weak-dollar-outlook-2025-12-03/?utm_source=openai))\n", + "\n", + "5. **December Starts in Risk-Off Mode** \n", + " Markets began December in a risk-off mode, influenced by hawkish signals from the Bank of Japan, which put downward pressure on global stock markets. Despite record-breaking consumer spending during Black Friday in the U.S., underlying concerns such as inflation and waning consumer confidence painted a more nuanced economic picture. In the energy sector, OPEC+ decided to maintain current oil output levels as 2026 approaches, indicating a cautious outlook for oil supply and demand. ([reuters.com](https://www.reuters.com/podcasts/reuters-morning-bid/december-starts-risk-off-mode-2025-12-01/?utm_source=openai))\n", + "\n", + "These articles provide valuable insights into recent global macroeconomic trends and policy decisions that could impact trading strategies. \n" + ] + } + ], + "source": [ + "client = OpenAI(api_key=os.getenv(\"OPENAI_API_KEY\"))\n", + "look_back_days = 7\n", + "date = \"2025-12-07\"\n", + "limit = 5\n", + "response = client.responses.create(\n", + " model=\"gpt-4o-mini\",\n", + " tools=[{\"type\": \"web_search_preview\"}],\n", + " input=f\"Search global or macroeconomics news from {look_back_days} days before {date} to {date} that would be informative for trading purposes. Make sure you only get the data posted during that period. Limit the results to {limit} articles.\"\n", + " )\n", + "print(response.output_text)" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "📊 Memory Bank Statistics:\n", + " Total memories: 0\n", + " Accuracy rate: 0.0%\n", + " Average move: 0.00%\n", + "\n", + " Signal distribution:\n", + "\n", + "📝 Sample Memories (first 10):\n" + ] + } + ], + "source": [ + " from tradingagents.agents.utils.memory import FinancialSituationMemory\n", + " from tradingagents.default_config import DEFAULT_CONFIG\n", + "\n", + " # Initialize memory\n", + " memory = FinancialSituationMemory(\n", + " name=\"financial_situations_prod\",\n", + " config=DEFAULT_CONFIG\n", + " )\n", + "\n", + " # Get statistics\n", + " stats = memory.get_statistics()\n", + " print(\"\\n📊 Memory Bank Statistics:\")\n", + " print(f\" Total memories: {stats['total_memories']}\")\n", + " print(f\" Accuracy rate: {stats['accuracy_rate']:.1f}%\")\n", + " print(f\" Average move: {stats['avg_move_pct']:.2f}%\")\n", + " print(f\"\\n Signal distribution:\")\n", + " for signal, values in stats['signal_distribution'].items():\n", + " print(f\" {signal}: {values}\")\n", + "\n", + " # Get all memories (limit to see sample)\n", + " all_memories = memory.situation_collection.get(\n", + " limit=10,\n", + " include=[\"metadatas\", \"documents\"]\n", + " )\n", + "\n", + " print(f\"\\n📝 Sample Memories (first 10):\")\n", + " for i, (doc, meta) in enumerate(zip(all_memories[\"documents\"], all_memories[\"metadatas\"])):\n", + " print(f\"\\n--- Memory {i+1} ---\")\n", + " print(f\"Ticker: {meta.get('ticker', 'N/A')}\")\n", + " print(f\"Date: {meta.get('analysis_date', 'N/A')}\")\n", + " print(f\"Move: {meta.get('move_pct', 0):.1f}% {meta.get('move_direction', '')}\")\n", + " print(f\"Days before: {meta.get('days_before_move', 'N/A')}\")\n", + " print(f\"Was correct: {meta.get('was_correct', False)}\")\n", + " print(f\"Situation: {doc[:200]}...\")\n", + " print(f\"Recommendation: {meta.get('recommendation', 'N/A')[:100]}...\")" + ] + }, + { + "cell_type": "code", + "execution_count": 39, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Dates to request: ['2024-11-07 (Thursday)']\n", + "['symbol', 'expiration', 'strike', 'right', 'created', 'last_trade', 'open', 'high', 'low', 'close', 'volume', 'count', 'bid_size', 'bid_exchange', 'bid', 'bid_condition', 'ask_size', 'ask_exchange', 'ask', 'ask_condition']\n", + "['AAPL', '2026-06-18', '180.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T10:08:26.896', '63.65', '63.65', '63.65', '63.65', '2', '1', '10', '76', '65.00', '50', '1', '46', '66.45', '50']\n", + "['AAPL', '2026-06-18', '170.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '26', '4', '5.10', '50', '45', '60', '5.35', '50']\n", + "['AAPL', '2025-03-21', '105.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '61', '7', '0.11', '50', '38', '4', '0.14', '50']\n", + "['AAPL', '2025-02-21', '200.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:50:41.812', '31.20', '32.10', '31.20', '31.65', '247', '15', '4', '7', '30.75', '50', '5', '7', '33.70', '50']\n", + "['AAPL', '2025-06-20', '190.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:39:39.169', '3.90', '3.90', '3.40', '3.46', '92', '46', '53', '42', '3.35', '50', '11', '60', '3.45', '50']\n", + "['AAPL', '2025-06-20', '350.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:21:30.302', '0.27', '0.27', '0.22', '0.23', '57', '15', '49', '7', '0.23', '50', '50', '7', '0.25', '50']\n", + "['AAPL', '2024-11-15', '222.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:59:31.68', '2.12', '2.12', '0.90', '0.94', '3673', '1016', '25', '7', '0.82', '50', '11', '60', '1.00', '50']\n", + "['AAPL', '2024-11-08', '210.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:59:59.154', '0.02', '0.02', '0.01', '0.01', '2342', '328', '43', '1', '0.01', '50', '30', '11', '0.02', '50']\n", + "['AAPL', '2024-12-13', '105.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '99', '4', '0.24', '50']\n", + "['AAPL', '2025-09-19', '155.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T11:24:30.598', '1.63', '1.63', '1.59', '1.59', '14', '4', '31', '7', '1.49', '50', '31', '11', '1.55', '50']\n", + "['AAPL', '2025-01-17', '80.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:05:16.974', '148.28', '148.28', '148.28', '148.28', '4', '1', '30', '76', '148.00', '50', '30', '76', '149.55', '50']\n", + "['AAPL', '2026-06-18', '105.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '82', '7', '0.74', '50', '79', '7', '0.82', '50']\n", + "['AAPL', '2025-03-21', '260.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:53:49.009', '2.40', '2.76', '2.39', '2.60', '122', '43', '21', '11', '2.65', '50', '10', '76', '2.74', '50']\n", + "['AAPL', '2025-12-19', '100.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '84', '7', '0.40', '50', '102', '7', '0.45', '50']\n", + "['AAPL', '2025-04-17', '220.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:55:00.165', '19.15', '19.91', '18.78', '19.60', '54', '17', '1', '46', '18.85', '50', '30', '11', '20.85', '50']\n", + "['AAPL', '2025-01-17', '70.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '157.75', '50', '30', '76', '159.40', '50']\n", + "['AAPL', '2024-11-08', '175.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:21:30.878', '51.95', '52.66', '51.95', '52.64', '56', '5', '30', '11', '52.15', '50', '8', '47', '53.10', '50']\n", + "['AAPL', '2027-01-15', '250.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '6', '4', '34.90', '50', '20', '76', '36.05', '50']\n", + "['AAPL', '2024-12-13', '100.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '126.00', '50', '30', '76', '128.20', '50']\n", + "['AAPL', '2024-11-22', '242.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:51:25.64', '0.21', '0.26', '0.19', '0.23', '1133', '74', '13', '60', '0.23', '50', '17', '46', '0.26', '50']\n", + "['AAPL', '2025-12-19', '270.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:39:18.777', '10.06', '10.46', '10.00', '10.46', '24', '7', '13', '7', '8.55', '50', '5', '69', '10.65', '50']\n", + "['AAPL', '2026-06-18', '285.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '67', '4', '56.90', '50', '28', '4', '59.00', '50']\n", + "['AAPL', '2026-06-18', '185.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '31', '4', '7.70', '50', '20', '76', '7.95', '50']\n", + "['AAPL', '2024-12-13', '230.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:58:55.005', '3.70', '4.77', '3.70', '4.60', '300', '130', '2', '7', '4.45', '50', '1', '60', '5.50', '50']\n", + "['AAPL', '2026-06-18', '260.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '281', '4', '37.35', '50', '19', '4', '39.30', '50']\n", + "['AAPL', '2024-12-27', '185.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '41.95', '50', '30', '76', '45.40', '50']\n", + "['AAPL', '2025-03-21', '25.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '46', '0.00', '50', '23', '22', '0.22', '50']\n", + "['AAPL', '2025-03-21', '240.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:51.555', '7.54', '8.00', '7.15', '7.88', '375', '67', '5', '22', '7.80', '50', '1', '7', '8.00', '50']\n", + "['AAPL', '2024-12-20', '210.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:59:42.249', '1.61', '1.61', '1.03', '1.06', '1691', '427', '27', '22', '1.06', '50', '26', '60', '1.10', '50']\n", + "['AAPL', '2024-11-15', '110.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:21:30.844', '117.09', '117.09', '117.09', '117.09', '200', '1', '30', '76', '117.35', '50', '30', '76', '117.80', '50']\n", + "['AAPL', '2024-11-15', '340.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '112.20', '50', '30', '76', '113.10', '50']\n", + "['AAPL', '2025-03-21', '200.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:57:06.207', '3.10', '3.10', '2.60', '2.69', '222', '99', '10', '76', '2.60', '50', '6', '42', '2.72', '50']\n", + "['AAPL', '2025-12-19', '55.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '115', '7', '0.10', '50', '28', '76', '0.13', '50']\n", + "['AAPL', '2025-09-19', '215.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:12:22.021', '29.91', '30.95', '29.91', '30.95', '24', '4', '1', '76', '29.95', '50', '9', '7', '32.95', '50']\n", + "['AAPL', '2025-08-15', '105.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '102', '7', '0.27', '50', '39', '7', '0.30', '50']\n", + "['AAPL', '2024-12-13', '180.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '25', '7', '0.13', '50', '25', '7', '0.16', '50']\n", + "['AAPL', '2024-12-20', '135.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T10:20:34.465', '0.06', '0.07', '0.06', '0.07', '10', '2', '5', '4', '0.05', '50', '14', '42', '0.08', '50']\n", + "['AAPL', '2024-11-15', '25.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '504', '7', '0.01', '50']\n", + "['AAPL', '2025-03-21', '15.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '212.35', '50', '1', '7', '214.05', '50']\n", + "['AAPL', '2026-01-16', '85.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '145.60', '50', '30', '76', '147.95', '50']\n", + "['AAPL', '2025-03-21', '205.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:12:46.837', '3.90', '3.95', '3.44', '3.55', '121', '40', '40', '76', '3.35', '50', '18', '60', '3.50', '50']\n", + "['AAPL', '2025-02-21', '210.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:52:30.478', '23.10', '24.00', '22.19', '23.30', '225', '25', '1', '4', '23.15', '50', '5', '7', '25.65', '50']\n", + "['AAPL', '2025-08-15', '165.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '26', '7', '1.80', '50', '41', '11', '1.88', '50']\n", + "['AAPL', '2025-06-20', '300.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '4', '70.65', '50', '5', '7', '74.35', '50']\n", + "['AAPL', '2024-11-22', '200.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:52:04.506', '26.35', '27.74', '26.35', '27.74', '10', '5', '11', '69', '27.65', '50', '3', '60', '28.20', '50']\n", + "['AAPL', '2025-09-19', '30.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '46', '0.00', '50', '54', '7', '0.19', '50']\n", + "['AAPL', '2025-08-15', '200.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T11:24:52.28', '6.55', '6.55', '6.55', '6.55', '10', '3', '30', '5', '6.20', '50', '10', '76', '6.35', '50']\n", + "['AAPL', '2024-11-15', '105.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '33', '76', '0.01', '50']\n", + "['AAPL', '2025-01-17', '190.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:30:28.512', '38.10', '40.08', '37.90', '39.95', '1361', '73', '2', '60', '39.50', '50', '2', '60', '40.05', '50']\n", + "['AAPL', '2025-01-17', '175.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:38:38.414', '0.25', '0.25', '0.24', '0.25', '287', '23', '3', '46', '0.23', '50', '32', '60', '0.25', '50']\n", + "['AAPL', '2025-04-17', '335.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '4', '106.00', '50', '1', '4', '109.60', '50']\n", + "['AAPL', '2024-12-20', '120.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:26:14.115', '0.06', '0.06', '0.05', '0.05', '41', '10', '35', '7', '0.03', '50', '58', '7', '0.10', '50']\n", + "['AAPL', '2026-06-18', '120.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T11:58:14.756', '1.28', '1.28', '1.20', '1.22', '10', '6', '57', '7', '1.15', '50', '53', '7', '1.24', '50']\n", + "['AAPL', '2024-11-15', '360.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '34', '76', '0.01', '50']\n", + "['AAPL', '2025-12-19', '175.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:08:23.954', '62.98', '63.00', '62.98', '63.00', '11', '2', '10', '7', '62.35', '50', '1', '42', '64.65', '50']\n", + "['AAPL', '2027-01-15', '220.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:45:18.429', '44.00', '45.35', '43.98', '45.35', '33', '13', '10', '76', '44.75', '50', '1', '42', '46.65', '50']\n", + "['AAPL', '2024-11-15', '202.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:53:50.823', '0.09', '0.10', '0.08', '0.09', '1278', '45', '45', '7', '0.07', '50', '28', '7', '0.09', '50']\n", + "['AAPL', '2027-01-15', '130.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T10:53:34.451', '2.37', '2.37', '2.37', '2.37', '1', '1', '44', '11', '2.18', '50', '32', '11', '2.45', '50']\n", + "['AAPL', '2025-12-19', '350.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:29:14.413', '1.24', '1.24', '1.23', '1.23', '4', '2', '25', '7', '1.27', '50', '28', '7', '1.34', '50']\n", + "['AAPL', '2026-06-18', '135.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '7', '1.83', '50', '47', '7', '1.94', '50']\n", + "['AAPL', '2025-09-19', '25.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '56', '76', '0.04', '50']\n", + "['AAPL', '2024-11-29', '295.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '67.20', '50', '30', '76', '67.85', '50']\n", + "['AAPL', '2025-08-15', '295.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '76', '2.58', '50', '42', '11', '2.74', '50']\n", + "['AAPL', '2024-12-20', '335.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '46', '0.00', '50', '32', '7', '0.30', '50']\n", + "['AAPL', '2024-11-15', '130.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '27', '76', '0.01', '50']\n", + "['AAPL', '2026-12-18', '135.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:03:32.59', '2.51', '2.51', '2.51', '2.51', '3', '1', '34', '11', '2.47', '50', '32', '7', '2.57', '50']\n", + "['AAPL', '2026-12-18', '250.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:15:15.372', '28.80', '29.40', '28.80', '29.37', '18', '6', '10', '76', '29.35', '50', '20', '76', '29.80', '50']\n", + "['AAPL', '2025-08-15', '130.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '28', '4', '0.53', '50', '65', '11', '0.60', '50']\n", + "['AAPL', '2024-11-15', '30.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '197.25', '50', '29', '76', '197.80', '50']\n", + "['AAPL', '2024-11-08', '227.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:59.928', '0.46', '1.28', '0.45', '1.12', '79064', '13455', '10', '60', '1.01', '50', '1', '65', '1.14', '50']\n", + "['AAPL', '2027-01-15', '185.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:25:18.556', '10.00', '10.00', '10.00', '10.00', '2', '2', '19', '11', '9.70', '50', '20', '76', '10.20', '50']\n", + "['AAPL', '2026-01-16', '220.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:34.609', '32.15', '33.05', '31.75', '33.05', '574', '41', '10', '76', '32.75', '50', '20', '76', '33.15', '50']\n", + "['AAPL', '2025-01-17', '320.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '92.15', '50', '30', '76', '92.90', '50']\n", + "['AAPL', '2026-01-16', '200.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:18:49.016', '9.55', '9.55', '9.05', '9.10', '19', '6', '4', '46', '9.00', '50', '31', '11', '9.25', '50']\n", + "['AAPL', '2026-06-18', '125.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '19', '22', '109.75', '50', '31', '22', '112.65', '50']\n", + "['AAPL', '2025-04-17', '235.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:41:24.411', '10.56', '11.60', '10.56', '11.60', '93', '34', '8', '7', '9.65', '50', '10', '9', '12.95', '50']\n", + "['AAPL', '2026-06-18', '155.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:31:27.497', '85.06', '85.07', '85.06', '85.07', '7', '2', '2', '46', '84.80', '50', '1', '11', '85.50', '50']\n", + "['AAPL', '2026-01-16', '55.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:23:03.305', '173.04', '173.04', '173.04', '173.04', '1', '1', '31', '22', '172.50', '50', '18', '22', '175.70', '50']\n", + "['AAPL', '2025-01-17', '110.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '118.25', '50', '1', '43', '119.80', '50']\n", + "['AAPL', '2025-04-17', '230.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:43:44.352', '13.22', '13.35', '12.19', '12.20', '94', '24', '26', '60', '12.10', '50', '1', '7', '14.25', '50']\n", + "['AAPL', '2025-09-19', '140.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:03:54.691', '1.01', '1.01', '0.93', '0.95', '412', '7', '31', '7', '0.90', '50', '41', '7', '0.95', '50']\n", + "['AAPL', '2026-06-18', '290.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '76', '10.95', '50', '16', '4', '11.20', '50']\n", + "['AAPL', '2026-01-16', '220.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:31:40.773', '16.10', '16.10', '15.40', '15.40', '117', '26', '10', '76', '15.20', '50', '1', '7', '16.00', '50']\n", + "['AAPL', '2026-06-18', '265.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:01:16.246', '17.75', '17.78', '17.75', '17.78', '20', '3', '1', '42', '16.90', '50', '7', '4', '18.15', '50']\n", + "['AAPL', '2025-01-17', '245.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:40.4', '1.87', '2.35', '1.87', '2.30', '1938', '229', '12', '60', '2.20', '50', '30', '11', '2.45', '50']\n", + "['AAPL', '2025-09-19', '235.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:37:37.069', '18.50', '19.60', '18.50', '19.60', '34', '11', '30', '11', '17.70', '50', '45', '11', '19.85', '50']\n", + "['AAPL', '2025-06-20', '195.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:46:17.347', '40.32', '42.01', '40.25', '42.01', '42', '7', '7', '7', '39.85', '50', '6', '7', '43.75', '50']\n", + "['AAPL', '2026-12-18', '410.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '14', '42', '2.24', '50', '20', '76', '2.46', '50']\n", + "['AAPL', '2024-12-06', '145.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '82.15', '50', '30', '76', '83.30', '50']\n", + "['AAPL', '2024-11-08', '240.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:55:16.884', '14.45', '14.45', '12.45', '12.80', '11', '10', '1', '7', '11.35', '50', '20', '76', '12.80', '50']\n", + "['AAPL', '2024-12-06', '265.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '37.20', '50', '30', '76', '38.75', '50']\n", + "['AAPL', '2025-06-20', '330.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:40:00.834', '0.41', '0.46', '0.39', '0.45', '81', '10', '79', '76', '0.41', '50', '45', '7', '0.45', '50']\n", + "['AAPL', '2025-02-21', '345.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '9', '60', '117.10', '50', '9', '60', '118.40', '50']\n", + "['AAPL', '2027-01-15', '145.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '56', '22', '3.35', '50', '24', '5', '3.80', '50']\n", + "['AAPL', '2027-01-15', '165.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '140', '22', '80.85', '50', '1', '76', '84.00', '50']\n", + "['AAPL', '2024-11-15', '242.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:08.641', '0.09', '0.10', '0.07', '0.09', '1824', '119', '10', '47', '0.08', '50', '21', '7', '0.09', '50']\n", + "['AAPL', '2026-01-16', '310.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:56:43.41', '4.10', '4.20', '4.10', '4.20', '7', '4', '33', '60', '4.05', '50', '51', '7', '4.30', '50']\n", + "['AAPL', '2025-06-20', '210.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:47:43.52', '29.20', '30.65', '28.88', '30.65', '68', '20', '30', '11', '29.15', '50', '31', '11', '31.10', '50']\n", + "['AAPL', '2024-12-20', '255.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '27.25', '50', '2', '47', '28.25', '50']\n", + "['AAPL', '2026-01-16', '30.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '41', '7', '0.01', '50', '6', '4', '0.06', '50']\n", + "['AAPL', '2024-11-08', '257.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '11', '0.00', '50', '450', '11', '0.01', '50']\n", + "['AAPL', '2024-12-13', '170.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:10:22.083', '57.95', '57.98', '57.95', '57.98', '15', '10', '9', '69', '58.10', '50', '2', '47', '58.65', '50']\n", + "['AAPL', '2024-11-22', '245.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:53:59.262', '0.13', '0.16', '0.13', '0.15', '1007', '88', '27', '60', '0.13', '50', '68', '46', '0.17', '50']\n", + "['AAPL', '2025-01-17', '355.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T10:39:02.302', '0.01', '0.01', '0.01', '0.01', '1', '1', '0', '76', '0.00', '50', '10', '76', '0.02', '50']\n", + "['AAPL', '2024-11-15', '110.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '22', '0.00', '50', '30', '76', '0.13', '50']\n", + "['AAPL', '2025-06-20', '145.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:27:29.14', '85.25', '86.63', '85.25', '86.48', '387', '22', '1', '6', '84.95', '50', '19', '22', '87.35', '50']\n", + "['AAPL', '2024-11-22', '212.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:43:29.864', '13.95', '15.85', '13.95', '15.80', '95', '30', '15', '11', '15.40', '50', '2', '11', '15.90', '50']\n", + "['AAPL', '2024-12-20', '180.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:49:31.181', '47.02', '48.95', '46.69', '48.95', '61', '16', '3', '60', '48.35', '50', '2', '7', '49.85', '50']\n", + "['AAPL', '2026-01-16', '285.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:18:20.964', '7.60', '7.96', '7.60', '7.96', '8', '4', '10', '42', '7.80', '50', '17', '11', '8.00', '50']\n", + "['AAPL', '2025-01-17', '260.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:34.622', '0.50', '0.62', '0.49', '0.58', '12314', '495', '10', '76', '0.56', '50', '11', '7', '0.59', '50']\n", + "['AAPL', '2025-01-17', '85.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '143.05', '50', '3', '43', '144.85', '50']\n", + "['AAPL', '2025-01-17', '195.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:05:11.608', '33.14', '34.60', '33.14', '34.55', '20', '10', '30', '76', '33.65', '50', '30', '76', '35.50', '50']\n", + "['AAPL', '2025-06-20', '260.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '54', '9', '33.10', '50', '44', '9', '34.80', '50']\n", + "['AAPL', '2025-08-15', '175.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T10:27:54.038', '2.88', '2.91', '2.85', '2.85', '3', '3', '10', '76', '2.57', '50', '10', '76', '2.65', '50']\n", + "['AAPL', '2024-12-20', '215.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:57:48.331', '2.56', '2.64', '1.68', '1.81', '3701', '479', '20', '60', '1.66', '50', '30', '60', '1.78', '50']\n", + "['AAPL', '2024-11-15', '227.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:59:52.718', '4.57', '4.57', '2.44', '2.55', '2263', '515', '30', '11', '2.39', '50', '30', '11', '2.70', '50']\n", + "['AAPL', '2024-12-06', '265.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:09:33.841', '0.05', '0.06', '0.05', '0.06', '2', '2', '18', '4', '0.04', '50', '1', '31', '0.06', '50']\n", + "['AAPL', '2025-09-19', '280.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '6', '7', '50.85', '50', '7', '7', '54.45', '50']\n", + "['AAPL', '2026-01-16', '230.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:09:39.182', '19.65', '19.85', '19.65', '19.75', '14', '4', '2', '46', '19.40', '50', '1', '7', '21.70', '50']\n", + "['AAPL', '2026-12-18', '90.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '68', '7', '0.65', '50', '82', '7', '0.73', '50']\n", + "['AAPL', '2024-12-06', '160.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '20', '7', '0.05', '50', '20', '7', '0.08', '50']\n", + "['AAPL', '2025-08-15', '185.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:30:40.233', '3.75', '3.75', '3.75', '3.75', '1', '1', '38', '69', '3.65', '50', '23', '5', '3.80', '50']\n", + "['AAPL', '2024-12-27', '230.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:58:30.745', '5.55', '6.00', '5.00', '5.63', '63', '29', '234', '5', '3.80', '50', '218', '9', '7.00', '50']\n", + "['AAPL', '2024-11-15', '192.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:17:32.59', '0.05', '0.07', '0.05', '0.05', '22', '9', '12', '7', '0.04', '50', '50', '46', '0.05', '50']\n", + "['AAPL', '2026-06-18', '110.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '14', '22', '122.60', '50', '69', '22', '126.40', '50']\n", + "['AAPL', '2024-12-06', '245.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:58:02.627', '0.40', '0.53', '0.40', '0.48', '4376', '293', '18', '60', '0.44', '50', '131', '46', '0.53', '50']\n", + "['AAPL', '2026-12-18', '360.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '60', '130.50', '50', '2', '76', '135.00', '50']\n", + "['AAPL', '2025-03-21', '380.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:55:26.736', '0.05', '0.05', '0.03', '0.04', '357', '19', '43', '7', '0.03', '50', '39', '11', '0.05', '50']\n", + "['AAPL', '2024-12-13', '205.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:54:07.499', '21.90', '23.70', '21.90', '23.65', '37', '7', '48', '76', '23.60', '50', '19', '76', '24.25', '50']\n", + "['AAPL', '2025-12-19', '340.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:26:05.79', '1.60', '1.60', '1.60', '1.60', '1', '1', '45', '7', '1.63', '50', '35', '7', '1.72', '50']\n", + "['AAPL', '2025-04-17', '255.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '39', '4', '27.65', '50', '47', '4', '29.65', '50']\n", + "['AAPL', '2025-09-19', '120.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '15', '1', '0.50', '50', '84', '7', '0.52', '50']\n", + "['AAPL', '2025-06-20', '130.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:51:44.041', '101.13', '101.13', '101.13', '101.13', '8', '1', '30', '76', '101.00', '50', '17', '22', '101.70', '50']\n", + "['AAPL', '2024-12-27', '295.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '66.10', '50', '30', '76', '69.55', '50']\n", + "['AAPL', '2026-01-16', '270.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:36:44.026', '45.69', '46.03', '44.80', '44.80', '24', '5', '181', '9', '43.75', '50', '162', '9', '45.10', '50']\n", + "['AAPL', '2026-12-18', '175.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '38', '11', '7.50', '50', '30', '11', '7.75', '50']\n", + "['AAPL', '2026-06-18', '160.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '76', '3.85', '50', '40', '60', '4.00', '50']\n", + "['AAPL', '2024-11-15', '280.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '28', '76', '52.25', '50', '30', '76', '52.85', '50']\n", + "['AAPL', '2027-01-15', '170.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:36:04.805', '76.35', '78.25', '76.35', '77.89', '48', '7', '106', '22', '77.25', '50', '1', '7', '80.45', '50']\n", + "['AAPL', '2025-06-20', '180.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:26:02.819', '53.25', '54.55', '53.25', '54.55', '7', '6', '30', '76', '54.45', '50', '1', '7', '55.75', '50']\n", + "['AAPL', '2024-12-06', '140.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:01:16.59', '87.40', '87.40', '87.40', '87.40', '1', '1', '30', '76', '87.75', '50', '1', '42', '89.30', '50']\n", + "['AAPL', '2024-11-22', '222.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:55:03.895', '2.84', '2.95', '1.60', '1.69', '479', '120', '1', '4', '1.12', '50', '3', '60', '1.76', '50']\n", + "['AAPL', '2025-08-15', '275.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '20', '76', '47.00', '50', '7', '7', '48.85', '50']\n", + "['AAPL', '2027-01-15', '280.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '54', '4', '54.25', '50', '58', '4', '56.70', '50']\n", + "['AAPL', '2027-01-15', '290.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T10:51:11.136', '16.50', '16.50', '16.50', '16.50', '1', '1', '1', '65', '16.00', '50', '30', '43', '17.10', '50']\n", + "['AAPL', '2025-08-15', '155.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '77.55', '50', '30', '76', '80.00', '50']\n", + "['AAPL', '2024-12-20', '120.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '107.95', '50', '1', '7', '109.40', '50']\n", + "['AAPL', '2024-12-20', '55.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '1', '0.00', '50', '53', '7', '0.01', '50']\n", + "['AAPL', '2026-01-16', '245.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:28:16.628', '19.95', '19.95', '19.85', '19.95', '16', '4', '36', '11', '20.00', '50', '32', '11', '20.30', '50']\n", + "['AAPL', '2025-01-17', '125.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:45:55.925', '0.08', '0.08', '0.08', '0.08', '34', '4', '1', '7', '0.08', '50', '42', '7', '0.09', '50']\n", + "['AAPL', '2025-02-21', '260.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:58:23.965', '1.47', '1.76', '1.47', '1.73', '395', '64', '22', '60', '1.68', '50', '2', '42', '1.78', '50']\n", + "['AAPL', '2027-01-15', '200.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:56:19.969', '55.35', '57.18', '55.35', '56.80', '14', '8', '32', '11', '56.50', '50', '32', '11', '57.70', '50']\n", + "['AAPL', '2025-01-17', '200.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:57:02.503', '1.15', '1.15', '0.82', '0.88', '2970', '452', '13', '7', '0.83', '50', '15', '11', '0.87', '50']\n", + "['AAPL', '2025-03-21', '320.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:24:14.889', '0.12', '0.14', '0.12', '0.14', '6', '5', '64', '7', '0.12', '50', '85', '7', '0.15', '50']\n", + "['AAPL', '2026-06-18', '140.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '11', '95.50', '50', '30', '22', '98.85', '50']\n", + "['AAPL', '2025-12-19', '290.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '60', '61.30', '50', '12', '60', '64.05', '50']\n", + "['AAPL', '2024-11-22', '280.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '5', '0.00', '50', '1', '46', '0.04', '50']\n", + "['AAPL', '2024-12-06', '125.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:36:10.947', '0.03', '0.03', '0.03', '0.03', '2', '1', '0', '46', '0.00', '50', '31', '7', '0.23', '50']\n", + "['AAPL', '2025-12-19', '230.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T11:39:09.426', '19.60', '19.60', '19.60', '19.60', '6', '3', '3', '42', '18.95', '50', '30', '11', '20.95', '50']\n", + "['AAPL', '2025-03-21', '35.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '190.95', '50', '30', '76', '194.00', '50']\n", + "['AAPL', '2025-01-17', '265.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:58:58.304', '0.33', '0.41', '0.32', '0.38', '440', '57', '8', '7', '0.36', '50', '19', '46', '0.39', '50']\n", + "['AAPL', '2024-12-27', '250.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '3', '9', '21.15', '50', '1', '9', '24.75', '50']\n", + "['AAPL', '2025-09-19', '115.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:16:37.26', '116.99', '116.99', '116.99', '116.99', '18', '1', '30', '76', '116.25', '50', '30', '76', '117.95', '50']\n", + "['AAPL', '2024-12-20', '115.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:39:52.833', '0.05', '0.05', '0.04', '0.04', '60', '11', '42', '7', '0.02', '50', '46', '7', '0.10', '50']\n", + "['AAPL', '2025-12-19', '320.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '60', '91.15', '50', '7', '60', '93.90', '50']\n", + "['AAPL', '2026-06-18', '340.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '76', '110.00', '50', '2', '76', '115.00', '50']\n", + "['AAPL', '2025-02-21', '265.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:55:00.307', '1.15', '1.28', '1.10', '1.20', '402', '43', '14', '42', '1.20', '50', '2', '43', '1.28', '50']\n", + "['AAPL', '2025-01-17', '45.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '27', '69', '0.02', '50']\n", + "['AAPL', '2027-01-15', '70.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '16', '22', '160.50', '50', '1', '11', '165.00', '50']\n", + "['AAPL', '2025-01-17', '30.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '197.45', '50', '1', '7', '199.10', '50']\n", + "['AAPL', '2025-12-19', '85.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '87', '7', '0.28', '50', '53', '7', '0.31', '50']\n", + "['AAPL', '2024-12-13', '190.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:06:10.205', '0.23', '0.23', '0.20', '0.20', '12', '3', '24', '7', '0.19', '50', '36', '7', '0.21', '50']\n", + "['AAPL', '2027-01-15', '195.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:30:02.318', '58.04', '58.04', '58.00', '58.00', '2', '2', '87', '22', '59.75', '50', '22', '11', '60.85', '50']\n", + "['AAPL', '2025-01-17', '85.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '31', '0.03', '50', '269', '9', '0.05', '50']\n", + "['AAPL', '2025-03-21', '270.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:51:35.103', '1.38', '1.54', '1.35', '1.47', '116', '26', '9', '42', '1.47', '50', '28', '7', '1.75', '50']\n", + "['AAPL', '2024-11-22', '185.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:47:37.585', '42.53', '42.98', '42.53', '42.98', '6', '3', '30', '76', '42.55', '50', '30', '76', '43.10', '50']\n", + "['AAPL', '2025-06-20', '40.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '40', '46', '0.02', '50', '1', '4', '0.04', '50']\n", + "['AAPL', '2024-12-13', '185.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:56:57.763', '42.00', '42.00', '42.00', '42.00', '1', '1', '30', '76', '43.25', '50', '30', '76', '43.80', '50']\n", + "['AAPL', '2026-01-16', '280.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '195', '5', '52.40', '50', '107', '4', '53.65', '50']\n", + "['AAPL', '2025-01-17', '75.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:24:21.019', '152.71', '152.71', '152.71', '152.71', '39', '1', '2', '7', '151.55', '50', '2', '7', '154.55', '50']\n", + "['AAPL', '2024-12-27', '235.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:46:59.992', '10.60', '10.60', '10.60', '10.60', '1', '1', '20', '76', '8.40', '50', '26', '9', '11.35', '50']\n", + "['AAPL', '2026-12-18', '280.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '121', '9', '53.50', '50', '47', '4', '56.45', '50']\n", + "['AAPL', '2027-01-15', '420.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:23:38.508', '2.37', '2.37', '2.24', '2.24', '600', '2', '17', '11', '2.08', '50', '28', '11', '2.32', '50']\n", + "['AAPL', '2025-02-21', '145.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:23:25.119', '83.10', '83.34', '83.10', '83.34', '15', '3', '30', '76', '83.70', '50', '15', '60', '84.90', '50']\n", + "['AAPL', '2024-12-20', '260.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:55:54.703', '0.18', '0.23', '0.18', '0.21', '414', '109', '40', '76', '0.20', '50', '14', '7', '0.22', '50']\n", + "['AAPL', '2025-08-15', '225.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:57:06.693', '14.80', '14.95', '13.90', '14.15', '20', '13', '27', '69', '13.85', '50', '8', '7', '15.90', '50']\n", + "['AAPL', '2024-11-15', '85.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '252', '7', '0.01', '50']\n", + "['AAPL', '2025-08-15', '305.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '6', '7', '75.80', '50', '7', '7', '79.40', '50']\n", + "['AAPL', '2025-02-21', '290.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '60', '62.10', '50', '2', '60', '63.35', '50']\n", + "['AAPL', '2024-11-29', '145.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '81.90', '50', '6', '60', '83.15', '50']\n", + "['AAPL', '2024-11-08', '262.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '11', '0.00', '50', '750', '11', '0.01', '50']\n", + "['AAPL', '2025-04-17', '335.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '74', '7', '0.12', '50', '71', '7', '0.15', '50']\n", + "['AAPL', '2024-11-15', '190.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:52:46.428', '0.05', '0.06', '0.04', '0.05', '931', '75', '10', '7', '0.04', '50', '69', '60', '0.05', '50']\n", + "['AAPL', '2024-11-08', '267.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '11', '0.00', '50', '450', '11', '0.01', '50']\n", + "['AAPL', '2024-12-13', '140.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '46', '0.00', '50', '10', '76', '0.09', '50']\n", + "['AAPL', '2027-01-15', '280.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:45:55.925', '18.99', '19.31', '18.99', '19.28', '21', '4', '1', '7', '17.40', '50', '22', '76', '20.00', '50']\n", + "['AAPL', '2026-06-18', '25.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '36', '7', '0.03', '50', '44', '7', '0.10', '50']\n", + "['AAPL', '2026-06-18', '165.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:48:03.251', '76.91', '76.92', '76.82', '76.83', '18', '7', '12', '69', '76.55', '50', '1', '11', '77.30', '50']\n", + "['AAPL', '2024-11-08', '255.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:39:14.689', '0.01', '0.01', '0.01', '0.01', '124', '14', '0', '76', '0.00', '50', '1405', '11', '0.01', '50']\n", + "['AAPL', '2024-12-06', '290.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '62.20', '50', '30', '76', '63.75', '50']\n", + "['AAPL', '2025-04-17', '245.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:54:07.067', '7.10', '7.40', '6.82', '7.32', '228', '59', '30', '11', '7.45', '50', '1', '46', '8.50', '50']\n", + "['AAPL', '2025-04-17', '340.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:45:54.923', '0.10', '0.10', '0.10', '0.10', '1', '1', '92', '7', '0.10', '50', '49', '7', '0.13', '50']\n", + "['AAPL', '2024-12-27', '195.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '32.15', '50', '30', '76', '35.55', '50']\n", + "['AAPL', '2024-11-22', '125.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '30', '76', '0.01', '50']\n", + "['AAPL', '2025-02-21', '275.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '9', '60', '47.15', '50', '3', '60', '48.45', '50']\n", + "['AAPL', '2025-06-20', '250.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:49:31.769', '8.75', '9.32', '8.53', '9.27', '107', '44', '10', '76', '8.70', '50', '1', '7', '9.50', '50']\n", + "['AAPL', '2024-12-20', '145.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:49:57.898', '82.85', '83.55', '82.85', '83.55', '50', '2', '1', '43', '82.20', '50', '30', '76', '83.60', '50']\n", + "['AAPL', '2025-02-21', '110.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '29', '7', '0.08', '50', '29', '7', '0.13', '50']\n", + "['AAPL', '2025-02-21', '100.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '22', '126.80', '50', '3', '1', '130.40', '50']\n", + "['AAPL', '2025-04-17', '210.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:43:45.195', '5.80', '5.80', '5.25', '5.25', '323', '124', '27', '60', '5.20', '50', '18', '60', '5.35', '50']\n", + "['AAPL', '2027-01-15', '180.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:40:47.671', '69.75', '70.50', '69.75', '70.50', '10', '2', '33', '11', '70.10', '50', '1', '42', '72.15', '50']\n", + "['AAPL', '2024-12-20', '50.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '176.90', '50', '30', '76', '177.95', '50']\n", + "['AAPL', '2025-04-17', '165.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '21', '60', '65.35', '50', '30', '76', '66.95', '50']\n", + "['AAPL', '2025-09-19', '205.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '35', '4', '8.05', '50', '17', '4', '8.30', '50']\n", + "['AAPL', '2024-11-22', '160.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '3', '6', '0.01', '50', '10', '76', '0.04', '50']\n", + "['AAPL', '2024-12-13', '220.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:50:08.328', '10.05', '10.90', '9.40', '10.50', '84', '23', '1', '31', '9.90', '50', '1', '65', '11.50', '50']\n", + "['AAPL', '2025-02-21', '365.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '7', '0.02', '50', '26', '11', '0.04', '50']\n", + "['AAPL', '2026-01-16', '90.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '141.00', '50', '30', '76', '143.20', '50']\n", + "['AAPL', '2026-06-18', '240.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T09:32:44.468', '28.30', '28.30', '27.80', '27.80', '6', '3', '1', '46', '26.10', '50', '16', '11', '27.55', '50']\n", + "['AAPL', '2026-06-18', '300.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '4', '60', '70.80', '50', '9', '60', '74.15', '50']\n", + "['AAPL', '2024-12-13', '275.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T10:27:41.005', '49.71', '49.71', '49.71', '49.71', '1', '1', '30', '76', '47.20', '50', '30', '76', '48.25', '50']\n", + "['AAPL', '2025-08-15', '280.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:31:22.193', '4.30', '4.30', '4.30', '4.30', '1', '1', '33', '60', '4.30', '50', '24', '60', '4.50', '50']\n", + "['AAPL', '2025-09-19', '35.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '46', '0.00', '50', '54', '7', '0.17', '50']\n", + "['AAPL', '2025-12-19', '240.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:00:10.944', '19.85', '21.28', '19.85', '21.28', '57', '8', '30', '11', '19.30', '50', '1', '7', '22.40', '50']\n", + "['AAPL', '2024-11-15', '120.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '107.25', '50', '30', '76', '107.80', '50']\n", + "['AAPL', '2026-06-18', '15.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '9', '7', '210.70', '50', '8', '7', '214.30', '50']\n", + "['AAPL', '2027-01-15', '60.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '22', '169.50', '50', '30', '76', '173.40', '50']\n", + "['AAPL', '2026-12-18', '270.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:59:34.65', '21.35', '22.02', '21.35', '22.02', '9', '4', '16', '47', '20.85', '50', '1', '47', '23.15', '50']\n", + "['AAPL', '2025-12-19', '130.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '9', '60', '103.65', '50', '33', '22', '105.00', '50']\n", + "['AAPL', '2024-11-15', '260.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '32.25', '50', '30', '76', '32.85', '50']\n", + "['AAPL', '2026-12-18', '100.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '4', '133.50', '50', '30', '76', '137.05', '50']\n", + "['AAPL', '2025-03-21', '75.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '151.65', '50', '3', '1', '155.30', '50']\n", + "['AAPL', '2025-12-19', '25.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '30', '76', '0.05', '50']\n", + "['AAPL', '2025-02-21', '200.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:45:47.377', '2.59', '2.59', '1.94', '1.94', '243', '45', '16', '46', '1.91', '50', '17', '60', '1.98', '50']\n", + "['AAPL', '2024-12-20', '25.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '502', '7', '0.01', '50']\n", + "['AAPL', '2025-06-20', '140.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:47:10.588', '90.27', '91.13', '90.27', '90.95', '311', '21', '30', '76', '90.90', '50', '20', '22', '92.15', '50']\n", + "['AAPL', '2024-12-20', '110.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:35:09.999', '0.04', '0.04', '0.04', '0.04', '50', '7', '35', '7', '0.02', '50', '43', '7', '0.08', '50']\n", + "['AAPL', '2025-08-15', '285.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '6', '7', '55.75', '50', '1', '22', '59.60', '50']\n", + "['AAPL', '2025-12-19', '120.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:14:05.503', '0.80', '0.80', '0.75', '0.75', '2005', '2', '50', '7', '0.73', '50', '54', '7', '0.78', '50']\n", + "['AAPL', '2024-11-22', '140.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '46', '0.00', '50', '44', '4', '0.22', '50']\n", + "['AAPL', '2024-11-22', '227.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:55:02.044', '5.20', '5.20', '3.30', '3.66', '8068', '230', '5', '69', '3.25', '50', '10', '7', '4.05', '50']\n", + "['AAPL', '2025-01-17', '95.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '133.05', '50', '2', '7', '134.85', '50']\n", + "['AAPL', '2025-06-20', '170.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:57:12.048', '1.74', '1.74', '1.56', '1.61', '59', '7', '23', '7', '1.54', '50', '29', '60', '1.61', '50']\n", + "['AAPL', '2024-11-15', '115.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '29', '76', '0.01', '50']\n", + "['AAPL', '2025-04-17', '115.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '113.75', '50', '1', '7', '116.35', '50']\n", + "['AAPL', '2025-01-17', '160.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:48:33.12', '0.16', '0.18', '0.16', '0.17', '3438', '106', '36', '7', '0.17', '50', '23', '7', '0.18', '50']\n", + "['AAPL', '2026-12-18', '180.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:13:54.378', '9.00', '9.00', '8.65', '8.65', '26', '3', '33', '11', '8.50', '50', '36', '60', '8.80', '50']\n", + "['AAPL', '2026-06-18', '100.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:59:22.256', '0.65', '0.66', '0.65', '0.66', '5', '2', '82', '7', '0.64', '50', '79', '7', '0.71', '50']\n", + "['AAPL', '2025-06-20', '145.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T11:12:00.753', '0.68', '0.68', '0.68', '0.68', '11', '2', '44', '7', '0.62', '50', '37', '7', '0.66', '50']\n", + "['AAPL', '2025-01-17', '140.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:55:54.708', '0.11', '0.11', '0.11', '0.11', '11', '3', '48', '7', '0.10', '50', '35', '7', '0.12', '50']\n", + "['AAPL', '2025-02-21', '330.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:51:54.893', '0.05', '0.05', '0.05', '0.05', '100', '1', '99', '9', '0.04', '50', '56', '7', '0.07', '50']\n", + "['AAPL', '2025-09-19', '90.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:15:31.254', '0.22', '0.22', '0.22', '0.22', '1', '1', '97', '7', '0.21', '50', '62', '7', '0.24', '50']\n", + "['AAPL', '2024-12-20', '40.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '502', '60', '0.01', '50']\n", + "['AAPL', '2025-02-21', '170.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:51:04.48', '58.15', '58.15', '58.15', '58.15', '1', '1', '30', '76', '59.50', '50', '1', '7', '61.45', '50']\n", + "['AAPL', '2024-11-15', '30.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '509', '7', '0.01', '50']\n", + "['AAPL', '2025-03-21', '190.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:16:06.082', '40.73', '42.55', '40.73', '42.50', '91', '17', '20', '76', '42.10', '50', '1', '42', '43.35', '50']\n", + "['AAPL', '2025-12-19', '235.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:06:30.212', '22.40', '22.40', '21.65', '21.65', '7', '4', '24', '11', '21.30', '50', '48', '11', '22.60', '50']\n", + "['AAPL', '2024-12-27', '240.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '20', '9', '12.35', '50', '1', '6', '15.65', '50']\n", + "['AAPL', '2026-12-18', '180.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:15:53.938', '68.80', '70.00', '68.40', '70.00', '201', '7', '1', '7', '69.60', '50', '30', '11', '71.75', '50']\n", + "['AAPL', '2024-12-13', '120.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '107.25', '50', '3', '1', '109.50', '50']\n", + "['AAPL', '2024-12-27', '255.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '26.20', '50', '30', '76', '29.55', '50']\n", + "['AAPL', '2027-01-15', '155.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T10:29:08.24', '4.95', '4.95', '4.95', '4.95', '1', '1', '26', '11', '4.50', '50', '32', '11', '4.85', '50']\n", + "['AAPL', '2024-12-20', '245.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:43:52.504', '19.54', '19.58', '17.77', '17.84', '120', '27', '30', '76', '16.70', '50', '2', '7', '19.20', '50']\n", + "['AAPL', '2026-06-18', '350.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '60', '120.85', '50', '15', '60', '124.10', '50']\n", + "['AAPL', '2025-04-17', '150.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:01:03.782', '0.46', '0.46', '0.42', '0.42', '10', '6', '22', '7', '0.42', '50', '33', '7', '0.44', '50']\n", + "['AAPL', '2025-02-21', '180.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:53:07.417', '0.76', '0.76', '0.65', '0.66', '340', '22', '27', '7', '0.63', '50', '23', '7', '0.67', '50']\n", + "['AAPL', '2025-12-19', '75.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '116', '7', '0.20', '50', '41', '42', '0.24', '50']\n", + "['AAPL', '2026-01-16', '180.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '23', '4', '5.05', '50', '11', '42', '5.25', '50']\n", + "['AAPL', '2025-01-17', '115.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '113.40', '50', '12', '60', '113.90', '50']\n", + "['AAPL', '2026-06-18', '10.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '46', '0.00', '50', '41', '11', '0.18', '50']\n", + "['AAPL', '2024-11-22', '227.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:35.424', '2.72', '3.90', '2.66', '3.80', '1470', '364', '30', '11', '3.60', '50', '2', '1', '3.90', '50']\n", + "['AAPL', '2025-06-20', '225.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:47:57.976', '13.05', '13.46', '12.30', '12.45', '69', '36', '27', '60', '12.20', '50', '30', '11', '13.80', '50']\n", + "['AAPL', '2025-04-17', '220.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:17:42.641', '9.00', '9.00', '8.20', '8.30', '104', '47', '29', '60', '8.05', '50', '48', '11', '9.20', '50']\n", + "['AAPL', '2027-01-15', '380.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '15', '11', '3.80', '50', '1', '7', '6.10', '50']\n", + "['AAPL', '2024-11-08', '165.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:30:28.748', '62.05', '62.05', '62.05', '62.05', '20', '1', '30', '11', '62.25', '50', '30', '11', '63.20', '50']\n", + "['AAPL', '2026-06-18', '290.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '15', '76', '61.10', '50', '40', '76', '63.80', '50']\n", + "['AAPL', '2024-12-06', '245.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T10:57:46.15', '19.40', '19.40', '19.05', '19.05', '2', '2', '3', '6', '16.15', '50', '30', '76', '19.75', '50']\n", + "['AAPL', '2024-11-22', '242.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:27:22.306', '15.39', '15.44', '15.15', '15.15', '60', '23', '29', '76', '14.85', '50', '1', '6', '17.20', '50']\n", + "['AAPL', '2025-12-19', '110.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:20:44.396', '0.55', '0.55', '0.55', '0.55', '28', '6', '69', '7', '0.54', '50', '90', '7', '0.59', '50']\n", + "['AAPL', '2024-11-22', '175.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:45:31.852', '0.04', '0.04', '0.04', '0.04', '22', '3', '17', '7', '0.02', '50', '5', '65', '0.05', '50']\n", + "['AAPL', '2025-01-17', '270.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:50:02.093', '43.90', '43.90', '42.70', '42.70', '5', '4', '30', '76', '42.20', '50', '1', '76', '43.75', '50']\n", + "['AAPL', '2025-09-19', '175.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:04:44.078', '60.00', '61.30', '60.00', '61.30', '8', '4', '30', '76', '61.55', '50', '30', '76', '62.95', '50']\n", + "['AAPL', '2025-01-17', '155.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:50:03.25', '73.71', '74.35', '73.71', '74.35', '9', '2', '9', '76', '73.80', '50', '5', '7', '74.45', '50']\n", + "['AAPL', '2024-12-13', '295.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '67.15', '50', '30', '76', '68.30', '50']\n", + "['AAPL', '2025-01-17', '95.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '48', '7', '0.03', '50', '75', '9', '0.06', '50']\n", + "['AAPL', '2025-02-21', '330.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '60', '102.10', '50', '2', '60', '103.30', '50']\n", + "['AAPL', '2024-12-20', '230.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:23.807', '4.34', '5.50', '4.30', '5.25', '3619', '899', '15', '11', '5.20', '50', '5', '60', '5.50', '50']\n", + "['AAPL', '2024-12-27', '155.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '80', '4', '2.22', '50']\n", + "['AAPL', '2025-01-17', '245.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:44:48.379', '19.51', '20.00', '18.47', '18.73', '67', '20', '1', '69', '18.15', '50', '10', '76', '18.50', '50']\n", + "['AAPL', '2025-01-17', '250.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:58:57.479', '24.56', '25.13', '22.80', '22.91', '82', '25', '2', '7', '21.65', '50', '2', '7', '24.10', '50']\n", + "['AAPL', '2026-12-18', '80.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '75', '7', '0.51', '50', '90', '7', '0.58', '50']\n", + "['AAPL', '2025-06-20', '175.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:55:00.205', '1.95', '1.95', '1.89', '1.94', '99', '90', '24', '7', '1.87', '50', '31', '7', '1.96', '50']\n", + "['AAPL', '2024-11-08', '267.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '5', '60', '39.65', '50', '18', '47', '40.65', '50']\n", + "['AAPL', '2024-12-27', '160.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '66.65', '50', '30', '76', '70.10', '50']\n", + "['AAPL', '2024-12-13', '270.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:50:00.128', '42.65', '42.65', '42.65', '42.65', '1', '1', '30', '76', '42.20', '50', '30', '76', '43.75', '50']\n", + "['AAPL', '2024-11-15', '320.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '12', '60', '92.25', '50', '30', '76', '92.85', '50']\n", + "['AAPL', '2025-03-21', '340.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '60', '112.05', '50', '9', '60', '112.90', '50']\n", + "['AAPL', '2025-01-17', '25.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:16:31.97', '202.58', '202.58', '202.20', '202.20', '18', '2', '30', '76', '201.45', '50', '2', '7', '204.10', '50']\n", + "['AAPL', '2025-12-19', '105.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:48:16.357', '127.32', '127.32', '127.32', '127.32', '2', '1', '8', '7', '125.20', '50', '30', '76', '128.60', '50']\n", + "['AAPL', '2024-12-06', '165.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '14', '76', '62.30', '50', '30', '76', '63.40', '50']\n", + "['AAPL', '2024-11-29', '150.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '75.95', '50', '3', '43', '79.35', '50']\n", + "['AAPL', '2025-12-19', '5.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '8', '7', '220.70', '50', '7', '7', '224.30', '50']\n", + "['AAPL', '2025-04-17', '205.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:43:39.888', '30.00', '30.99', '29.55', '30.90', '32', '13', '6', '7', '28.80', '50', '1', '11', '31.90', '50']\n", + "['AAPL', '2025-12-19', '20.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '205.75', '50', '30', '76', '209.35', '50']\n", + "['AAPL', '2024-12-13', '275.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '129', '5', '0.02', '50', '167', '5', '0.07', '50']\n", + "['AAPL', '2025-01-17', '285.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:15:40.674', '0.11', '0.11', '0.10', '0.11', '37', '7', '35', '7', '0.09', '50', '23', '7', '0.10', '50']\n", + "['AAPL', '2027-01-15', '150.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:45:43.62', '91.50', '93.20', '91.50', '93.20', '4', '2', '67', '22', '92.45', '50', '1', '7', '95.00', '50']\n", + "['AAPL', '2026-01-16', '105.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '16', '22', '125.80', '50', '30', '76', '129.30', '50']\n", + "['AAPL', '2025-12-19', '150.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:12:08.305', '85.30', '85.80', '85.05', '85.30', '5', '4', '30', '76', '83.90', '50', '121', '22', '86.45', '50']\n", + "['AAPL', '2025-12-19', '60.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '21', '7', '167.70', '50', '7', '7', '171.55', '50']\n", + "['AAPL', '2024-11-15', '55.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '103', '7', '0.01', '50']\n", + "['AAPL', '2027-01-15', '120.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:30:09.401', '1.74', '1.74', '1.74', '1.74', '10', '1', '32', '11', '1.61', '50', '4', '1', '1.79', '50']\n", + "['AAPL', '2024-11-15', '240.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:54.736', '0.11', '0.15', '0.11', '0.14', '4527', '652', '31', '11', '0.12', '50', '14', '7', '0.14', '50']\n", + "['AAPL', '2025-09-19', '10.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '215.70', '50', '30', '76', '219.25', '50']\n", + "['AAPL', '2024-11-29', '110.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '116.85', '50', '30', '76', '118.00', '50']\n", + "['AAPL', '2025-09-19', '150.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:32:05.605', '1.36', '1.36', '1.28', '1.28', '51', '2', '39', '7', '1.25', '50', '45', '4', '1.32', '50']\n", + "['AAPL', '2024-11-22', '207.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:51:01.535', '0.26', '0.27', '0.20', '0.22', '31', '18', '98', '46', '0.19', '50', '38', '43', '0.23', '50']\n", + "['AAPL', '2027-01-15', '135.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:15:21.772', '2.56', '2.65', '2.56', '2.65', '4', '2', '32', '7', '2.54', '50', '20', '76', '2.78', '50']\n", + "['AAPL', '2024-11-08', '192.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '11', '34.50', '50', '30', '11', '35.70', '50']\n", + "['AAPL', '2025-12-19', '65.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '107', '7', '0.15', '50', '47', '7', '0.18', '50']\n", + "['AAPL', '2027-01-15', '250.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:59:42.799', '29.95', '30.50', '29.55', '30.50', '70', '9', '1', '69', '28.50', '50', '30', '11', '31.80', '50']\n", + "['AAPL', '2025-08-15', '175.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '6', '58.75', '50', '6', '76', '61.10', '50']\n", + "['AAPL', '2026-06-18', '70.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '37', '7', '0.29', '50', '38', '7', '0.37', '50']\n", + "['AAPL', '2024-12-27', '280.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '51.10', '50', '30', '76', '54.55', '50']\n", + "['AAPL', '2025-06-20', '245.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:39:59.569', '10.70', '11.05', '10.45', '10.90', '405', '24', '1', '11', '9.90', '50', '10', '22', '11.10', '50']\n", + "['AAPL', '2024-11-22', '240.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:58:22.491', '0.29', '0.41', '0.28', '0.40', '1574', '266', '11', '60', '0.36', '50', '36', '60', '0.42', '50']\n", + "['AAPL', '2025-03-21', '185.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:01:29.603', '45.25', '46.72', '45.00', '46.72', '97', '11', '1', '60', '45.75', '50', '2', '1', '47.95', '50']\n", + "['AAPL', '2025-04-17', '165.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:06:49.655', '0.71', '0.72', '0.71', '0.72', '7', '3', '30', '7', '0.69', '50', '30', '76', '0.73', '50']\n", + "['AAPL', '2025-03-21', '50.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '177.05', '50', '1', '7', '179.55', '50']\n", + "['AAPL', '2024-11-15', '250.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:02:34.322', '23.80', '23.80', '23.06', '23.06', '3', '3', '12', '76', '22.30', '50', '30', '76', '24.65', '50']\n", + "['AAPL', '2024-11-15', '275.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:50:02.812', '47.65', '47.65', '47.65', '47.65', '1', '1', '30', '76', '47.25', '50', '30', '76', '48.20', '50']\n", + "['AAPL', '2024-12-20', '205.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:55:08.894', '1.01', '1.01', '0.66', '0.71', '869', '186', '7', '7', '0.67', '50', '31', '11', '0.70', '50']\n", + "['AAPL', '2025-04-17', '250.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:41:33.874', '25.18', '25.18', '25.06', '25.06', '2', '2', '20', '76', '23.70', '50', '26', '9', '25.60', '50']\n", + "['AAPL', '2025-09-19', '35.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '191.30', '50', '28', '76', '194.85', '50']\n", + "['AAPL', '2024-12-20', '230.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:59:33.19', '8.45', '8.45', '6.45', '6.63', '3981', '293', '8', '60', '6.45', '50', '6', '60', '7.65', '50']\n", + "['AAPL', '2027-01-15', '35.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '18', '22', '192.00', '50', '30', '76', '196.05', '50']\n", + "['AAPL', '2025-12-19', '210.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:15:36.888', '11.88', '11.88', '11.57', '11.57', '18', '3', '4', '46', '11.40', '50', '123', '7', '12.30', '50']\n", + "['AAPL', '2025-03-21', '380.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '3', '4', '151.00', '50', '4', '7', '154.55', '50']\n", + "['AAPL', '2026-06-18', '245.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '8', '7', '27.85', '50', '19', '1', '31.95', '50']\n", + "['AAPL', '2026-01-16', '55.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '69', '0.00', '50', '42', '42', '0.18', '50']\n", + "['AAPL', '2025-09-19', '165.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:22:39.705', '70.35', '70.35', '70.35', '70.35', '20', '9', '30', '76', '70.30', '50', '1', '1', '71.65', '50']\n", + "['AAPL', '2024-11-15', '85.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '142.25', '50', '30', '76', '142.80', '50']\n", + "['AAPL', '2025-01-17', '330.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '102.15', '50', '12', '47', '103.15', '50']\n", + "['AAPL', '2027-01-15', '400.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:31:42.367', '2.79', '2.93', '2.79', '2.93', '11', '2', '10', '76', '2.80', '50', '18', '76', '3.15', '50']\n", + "['AAPL', '2024-12-20', '90.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '137.15', '50', '30', '76', '138.20', '50']\n", + "['AAPL', '2025-12-19', '250.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '46', '29.70', '50', '2', '76', '32.50', '50']\n", + "['AAPL', '2025-12-19', '50.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '21', '7', '177.20', '50', '19', '22', '180.30', '50']\n", + "['AAPL', '2025-06-20', '45.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '31', '11', '0.05', '50']\n", + "['AAPL', '2025-02-21', '160.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T09:42:05.205', '0.37', '0.37', '0.34', '0.34', '3', '3', '71', '7', '0.30', '50', '56', '7', '0.33', '50']\n", + "['AAPL', '2024-11-22', '120.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '105.75', '50', '30', '76', '107.90', '50']\n", + "['AAPL', '2024-11-08', '190.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:04:24.835', '36.12', '37.50', '35.56', '37.50', '245', '16', '29', '11', '37.30', '50', '28', '11', '37.95', '50']\n", + "['AAPL', '2025-08-15', '125.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '105.45', '50', '30', '76', '108.05', '50']\n", + "['AAPL', '2026-06-18', '45.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '96', '7', '0.14', '50', '86', '7', '0.20', '50']\n", + "['AAPL', '2024-11-15', '247.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '31', '47', '19.80', '50', '40', '76', '20.70', '50']\n", + "['AAPL', '2026-01-16', '130.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '8', '7', '102.60', '50', '30', '22', '105.55', '50']\n", + "['AAPL', '2024-12-27', '280.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '69', '0.00', '50', '82', '22', '2.17', '50']\n", + "['AAPL', '2024-12-06', '250.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:58:42.733', '0.22', '0.27', '0.20', '0.24', '7119', '370', '16', '7', '0.24', '50', '54', '7', '0.26', '50']\n", + "['AAPL', '2024-12-13', '150.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '3', '7', '76.30', '50', '29', '76', '78.50', '50']\n", + "['AAPL', '2024-11-08', '175.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T09:33:35.747', '0.01', '0.01', '0.01', '0.01', '20', '1', '0', '11', '0.00', '50', '152', '11', '0.01', '50']\n", + "['AAPL', '2024-11-29', '110.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '30', '76', '0.02', '50']\n", + "['AAPL', '2024-11-08', '252.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '5', '60', '24.70', '50', '4', '60', '25.60', '50']\n", + "['AAPL', '2024-11-22', '250.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:47:38.336', '23.80', '24.10', '22.30', '22.30', '16', '7', '2', '11', '22.25', '50', '1', '42', '23.75', '50']\n", + "['AAPL', '2024-11-29', '165.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:48:37.071', '0.04', '0.06', '0.04', '0.05', '93', '19', '30', '7', '0.03', '50', '51', '7', '0.09', '50']\n", + "['AAPL', '2025-08-15', '210.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '8', '7', '30.95', '50', '8', '4', '33.05', '50']\n", + "['AAPL', '2027-01-15', '115.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '28', '76', '121.20', '50', '30', '76', '124.50', '50']\n", + "['AAPL', '2024-11-29', '180.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:07:46.238', '0.09', '0.09', '0.07', '0.07', '30', '7', '26', '7', '0.07', '50', '26', '7', '0.09', '50']\n", + "['AAPL', '2026-12-18', '400.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:07:07.404', '2.61', '2.65', '2.61', '2.65', '2', '2', '30', '11', '2.60', '50', '2', '11', '2.79', '50']\n", + "['AAPL', '2026-12-18', '10.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '8', '1', '0.01', '50', '37', '42', '0.14', '50']\n", + "['AAPL', '2024-11-29', '165.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '60', '62.00', '50', '30', '76', '63.20', '50']\n", + "['AAPL', '2025-04-17', '135.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T10:03:23.429', '0.28', '0.28', '0.28', '0.28', '1', '1', '32', '7', '0.27', '50', '31', '42', '0.32', '50']\n", + "['AAPL', '2026-06-18', '175.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T11:23:20.194', '6.15', '6.15', '6.15', '6.15', '50', '13', '2', '4', '5.90', '50', '33', '60', '6.10', '50']\n", + "['AAPL', '2024-12-20', '270.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:58:48.778', '42.68', '42.80', '42.63', '42.64', '14', '9', '30', '76', '42.20', '50', '30', '76', '42.90', '50']\n", + "['AAPL', '2024-12-20', '105.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '122.45', '50', '30', '76', '123.30', '50']\n", + "['AAPL', '2027-01-15', '300.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '11', '70.50', '50', '1', '4', '75.00', '50']\n", + "['AAPL', '2024-11-15', '60.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '166.90', '50', '30', '76', '167.80', '50']\n", + "['AAPL', '2024-11-29', '235.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:58:29.998', '1.04', '1.56', '1.04', '1.45', '1480', '361', '4', '11', '1.43', '50', '1', '22', '1.50', '50']\n", + "['AAPL', '2025-04-17', '185.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:37:30.375', '46.46', '47.87', '45.88', '47.87', '14', '6', '1', '60', '46.80', '50', '40', '76', '48.25', '50']\n", + "['AAPL', '2025-03-21', '230.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:58:48.905', '11.40', '12.55', '11.35', '12.34', '509', '140', '30', '11', '10.85', '50', '3', '6', '13.65', '50']\n", + "['AAPL', '2024-11-15', '45.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '109', '7', '0.01', '50']\n", + "['AAPL', '2024-12-27', '270.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '41.15', '50', '1', '60', '44.55', '50']\n", + "['AAPL', '2026-06-18', '280.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '187', '4', '52.15', '50', '7', '11', '54.55', '50']\n", + "['AAPL', '2024-11-08', '260.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '5', '60', '32.10', '50', '7', '60', '33.15', '50']\n", + "['AAPL', '2026-12-18', '240.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:34:41.379', '33.10', '34.05', '33.10', '34.05', '6', '4', '10', '76', '33.85', '50', '12', '7', '36.05', '50']\n", + "['AAPL', '2024-11-22', '230.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:58:44.985', '6.45', '6.52', '4.60', '4.86', '310', '78', '30', '11', '4.30', '50', '37', '11', '5.35', '50']\n", + "['AAPL', '2025-03-21', '100.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '101', '7', '0.10', '50', '82', '7', '0.12', '50']\n", + "['AAPL', '2026-01-16', '45.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '42', '7', '0.07', '50', '30', '76', '0.11', '50']\n", + "['AAPL', '2025-02-21', '375.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '50', '7', '0.01', '50', '108', '7', '0.12', '50']\n", + "['AAPL', '2025-01-17', '285.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '57.20', '50', '15', '47', '58.70', '50']\n", + "['AAPL', '2025-09-19', '145.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:12:15.599', '1.07', '1.09', '1.07', '1.09', '3', '3', '35', '7', '1.06', '50', '59', '7', '1.12', '50']\n", + "['AAPL', '2024-11-08', '200.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:48:21.694', '0.01', '0.01', '0.01', '0.01', '1263', '53', '0', '22', '0.00', '50', '301', '11', '0.01', '50']\n", + "['AAPL', '2027-01-15', '360.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:42:28.047', '5.40', '5.40', '5.40', '5.40', '6', '1', '17', '5', '5.25', '50', '42', '11', '5.60', '50']\n", + "['AAPL', '2024-11-29', '120.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '106.90', '50', '30', '76', '108.05', '50']\n", + "['AAPL', '2025-04-17', '210.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:42:16.927', '25.24', '26.80', '25.24', '26.59', '18', '8', '6', '7', '25.05', '50', '15', '60', '27.10', '50']\n", + "['AAPL', '2024-12-20', '10.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '502', '7', '0.01', '50']\n", + "['AAPL', '2025-12-19', '340.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '14', '60', '111.05', '50', '12', '60', '113.90', '50']\n", + "['AAPL', '2025-12-19', '95.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:28:11.136', '135.90', '136.80', '135.90', '136.80', '75', '3', '30', '76', '134.60', '50', '30', '76', '137.95', '50']\n", + "['AAPL', '2026-12-18', '115.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '56', '7', '1.33', '50', '58', '7', '1.44', '50']\n", + "['AAPL', '2026-12-18', '390.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '76', '3.05', '50', '27', '11', '3.25', '50']\n", + "['AAPL', '2027-01-15', '170.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:19:13.789', '6.78', '6.78', '6.78', '6.78', '1', '1', '38', '11', '6.70', '50', '17', '5', '7.30', '50']\n", + "['AAPL', '2026-01-16', '175.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:21:21.2', '4.55', '4.55', '4.40', '4.45', '45', '6', '31', '11', '4.30', '50', '30', '76', '4.50', '50']\n", + "['AAPL', '2025-02-21', '305.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '9', '60', '77.15', '50', '3', '60', '78.40', '50']\n", + "['AAPL', '2027-01-15', '10.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '11', '0.00', '50', '72', '22', '0.15', '50']\n", + "['AAPL', '2026-06-18', '270.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '208', '4', '44.30', '50', '51', '4', '47.10', '50']\n", + "['AAPL', '2024-12-20', '35.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '191.80', '50', '30', '76', '192.85', '50']\n", + "['AAPL', '2024-11-22', '115.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '46', '0.00', '50', '10', '76', '0.21', '50']\n", + "['AAPL', '2025-02-21', '140.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T10:01:01.796', '88.00', '88.00', '88.00', '88.00', '5', '1', '30', '76', '89.25', '50', '14', '60', '89.80', '50']\n", + "['AAPL', '2025-02-21', '235.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:54:06.351', '14.05', '14.15', '13.10', '13.15', '232', '23', '5', '22', '11.30', '50', '46', '4', '14.90', '50']\n", + "['AAPL', '2025-12-19', '160.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:11:04.621', '2.75', '2.75', '2.64', '2.64', '13', '4', '37', '7', '2.56', '50', '13', '42', '2.67', '50']\n", + "['AAPL', '2025-04-17', '130.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '7', '0.23', '50', '30', '7', '0.29', '50']\n", + "['AAPL', '2027-01-15', '420.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '76', '190.00', '50', '2', '76', '195.00', '50']\n", + "['AAPL', '2026-06-18', '15.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '46', '0.00', '50', '42', '7', '0.15', '50']\n", + "['AAPL', '2026-01-16', '300.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '60', '71.40', '50', '4', '60', '74.05', '50']\n", + "['AAPL', '2026-12-18', '155.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:08:07.526', '86.95', '88.20', '86.95', '88.20', '42', '2', '20', '76', '88.45', '50', '30', '76', '90.65', '50']\n", + "['AAPL', '2025-12-19', '90.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:38:23.571', '140.90', '140.90', '140.90', '140.90', '129', '1', '30', '76', '140.80', '50', '30', '76', '142.90', '50']\n", + "['AAPL', '2024-11-22', '165.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:56:25.971', '0.03', '0.03', '0.03', '0.03', '1', '1', '0', '69', '0.00', '50', '31', '11', '0.04', '50']\n", + "['AAPL', '2025-09-19', '245.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:02:20.76', '25.15', '25.15', '25.15', '25.15', '7', '1', '1', '4', '24.10', '50', '10', '76', '25.35', '50']\n", + "['AAPL', '2024-12-13', '280.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '20', '11', '0.02', '50', '36', '11', '0.06', '50']\n", + "['AAPL', '2024-12-13', '130.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '97.30', '50', '6', '60', '98.40', '50']\n", + "['AAPL', '2025-09-19', '145.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:13:44.637', '88.28', '88.28', '88.28', '88.28', '10', '1', '23', '60', '88.05', '50', '30', '76', '89.75', '50']\n", + "['AAPL', '2025-04-17', '305.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '4', '76.05', '50', '1', '22', '78.80', '50']\n", + "['AAPL', '2025-01-17', '65.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '162.50', '50', '24', '22', '164.20', '50']\n", + "['AAPL', '2026-01-16', '15.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '25', '76', '0.04', '50']\n", + "['AAPL', '2025-09-19', '45.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '181.65', '50', '7', '7', '185.25', '50']\n", + "['AAPL', '2025-03-21', '115.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:55:32.305', '114.10', '114.10', '114.10', '114.10', '37', '1', '30', '76', '114.20', '50', '22', '22', '115.60', '50']\n", + "['AAPL', '2025-12-19', '55.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '8', '7', '172.50', '50', '30', '76', '176.10', '50']\n", + "['AAPL', '2024-12-20', '50.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '20', '76', '0.01', '50']\n", + "['AAPL', '2024-11-15', '90.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '252', '7', '0.01', '50']\n", + "['AAPL', '2024-11-15', '232.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:55:03.937', '7.80', '7.85', '5.72', '5.95', '288', '87', '6', '60', '5.05', '50', '10', '76', '6.10', '50']\n", + "['AAPL', '2026-01-16', '25.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '22', '22', '201.00', '50', '30', '76', '204.60', '50']\n", + "['AAPL', '2026-01-16', '100.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T09:30:00.735', '0.50', '0.50', '0.50', '0.50', '5', '1', '90', '7', '0.43', '50', '2', '7', '0.47', '50']\n", + "['AAPL', '2024-11-15', '260.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:46:23.411', '0.02', '0.02', '0.01', '0.01', '736', '64', '1', '1', '0.01', '50', '19', '11', '0.02', '50']\n", + "['AAPL', '2025-03-21', '360.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '3', '4', '131.00', '50', '4', '7', '134.30', '50']\n", + "['AAPL', '2024-11-22', '202.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T10:57:42.381', '0.15', '0.17', '0.15', '0.15', '5', '4', '19', '4', '0.13', '50', '35', '7', '0.16', '50']\n", + "['AAPL', '2026-06-18', '255.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T10:43:12.901', '20.78', '20.78', '20.70', '20.70', '40', '4', '1', '42', '20.50', '50', '10', '76', '21.75', '50']\n", + "['AAPL', '2024-12-06', '275.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:50:11.555', '47.55', '47.55', '47.55', '47.55', '1', '1', '30', '76', '47.20', '50', '21', '47', '48.75', '50']\n", + "['AAPL', '2027-01-15', '50.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '29', '22', '178.50', '50', '30', '76', '182.50', '50']\n", + "['AAPL', '2024-12-06', '270.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:32:11.194', '0.03', '0.03', '0.03', '0.03', '51', '3', '128', '9', '0.02', '50', '18', '46', '0.04', '50']\n", + "['AAPL', '2025-04-17', '270.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:51:19.189', '1.95', '2.14', '1.95', '2.14', '29', '10', '10', '76', '2.16', '50', '1', '22', '2.22', '50']\n", + "['AAPL', '2024-12-20', '15.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '212.25', '50', '30', '76', '212.80', '50']\n", + "['AAPL', '2024-12-20', '25.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '202.25', '50', '30', '76', '202.80', '50']\n", + "['AAPL', '2024-12-20', '70.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '7', '155.95', '50', '30', '76', '158.10', '50']\n", + "['AAPL', '2025-12-19', '40.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '40', '7', '0.04', '50', '39', '7', '0.10', '50']\n", + "['AAPL', '2025-06-20', '115.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '94', '7', '0.26', '50', '57', '7', '0.29', '50']\n", + "['AAPL', '2025-01-17', '5.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '752', '7', '0.01', '50']\n", + "['AAPL', '2026-06-18', '260.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:08:32.842', '19.00', '19.60', '19.00', '19.60', '23', '9', '10', '76', '19.55', '50', '1', '42', '20.85', '50']\n", + "['AAPL', '2024-11-22', '275.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:43:10.886', '0.01', '0.01', '0.01', '0.01', '40', '2', '0', '76', '0.00', '50', '20', '76', '0.02', '50']\n", + "['AAPL', '2025-12-19', '5.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:31:58.474', '0.01', '0.01', '0.01', '0.01', '8', '1', '0', '60', '0.00', '50', '500', '60', '0.02', '50']\n", + "['AAPL', '2027-01-15', '140.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '37', '22', '100.65', '50', '27', '76', '102.45', '50']\n", + "['AAPL', '2024-11-29', '205.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:37:18.216', '22.09', '23.22', '21.42', '23.13', '16', '12', '1', '7', '21.95', '50', '1', '7', '24.50', '50']\n", + "['AAPL', '2025-01-17', '140.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:40:07.007', '88.00', '88.67', '88.00', '88.67', '4', '2', '30', '76', '88.80', '50', '9', '60', '89.20', '50']\n", + "['AAPL', '2024-11-08', '250.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T09:47:28.325', '24.70', '24.70', '24.70', '24.70', '1', '1', '20', '76', '22.20', '50', '10', '76', '23.20', '50']\n", + "['AAPL', '2026-01-16', '300.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:32:45.278', '5.09', '5.45', '5.05', '5.45', '491', '55', '40', '11', '5.30', '50', '1', '65', '5.45', '50']\n", + "['AAPL', '2025-04-17', '180.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:43:48.805', '1.40', '1.40', '1.33', '1.33', '258', '88', '25', '42', '1.29', '50', '30', '76', '1.34', '50']\n", + "['AAPL', '2024-11-08', '285.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '1350', '11', '0.01', '50']\n", + "['AAPL', '2024-11-08', '280.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '1050', '11', '0.01', '50']\n", + "['AAPL', '2024-12-20', '90.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:41:22.605', '0.02', '0.02', '0.02', '0.02', '7', '2', '38', '7', '0.01', '50', '55', '7', '0.12', '50']\n", + "['AAPL', '2024-12-13', '250.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '8', '76', '22.25', '50', '15', '7', '22.90', '50']\n", + "['AAPL', '2025-03-21', '140.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T10:43:38.847', '0.25', '0.26', '0.25', '0.26', '2', '2', '83', '7', '0.25', '50', '66', '7', '0.28', '50']\n", + "['AAPL', '2025-03-21', '180.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:00:33.292', '1.05', '1.05', '0.94', '0.99', '29', '14', '21', '7', '0.93', '50', '10', '42', '0.98', '50']\n", + "['AAPL', '2025-06-20', '310.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:50:35.876', '0.86', '0.86', '0.86', '0.86', '1', '1', '25', '11', '0.84', '50', '30', '11', '0.89', '50']\n", + "['AAPL', '2026-01-16', '50.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '120', '7', '0.10', '50', '81', '7', '0.13', '50']\n", + "['AAPL', '2024-12-20', '160.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:52:21.499', '0.10', '0.11', '0.10', '0.11', '2930', '49', '45', '7', '0.10', '50', '42', '7', '0.12', '50']\n", + "['AAPL', '2024-11-22', '180.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T11:29:09.081', '0.06', '0.06', '0.05', '0.05', '6', '3', '17', '7', '0.05', '50', '23', '69', '0.06', '50']\n", + "['AAPL', '2024-12-06', '295.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '64', '4', '0.02', '50']\n", + "['AAPL', '2024-11-22', '237.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:01:31.471', '11.00', '11.00', '11.00', '11.00', '1', '1', '32', '47', '10.15', '50', '58', '9', '10.75', '50']\n", + "['AAPL', '2025-06-20', '105.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '124.20', '50', '22', '60', '125.80', '50']\n", + "['AAPL', '2025-03-21', '245.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:50:32.323', '5.55', '6.25', '5.55', '5.95', '84', '40', '5', '4', '6.05', '50', '1', '5', '6.30', '50']\n", + "['AAPL', '2026-01-16', '35.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '8', '7', '191.55', '50', '30', '76', '195.15', '50']\n", + "['AAPL', '2027-01-15', '130.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '108.55', '50', '30', '76', '111.70', '50']\n", + "['AAPL', '2024-12-20', '125.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '103.00', '50', '1', '7', '104.45', '50']\n", + "['AAPL', '2024-11-22', '210.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:50:01.115', '0.45', '0.51', '0.26', '0.27', '188', '63', '43', '46', '0.25', '50', '10', '42', '0.28', '50']\n", + "['AAPL', '2024-12-13', '285.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '11', '0.01', '50', '19', '69', '0.21', '50']\n", + "['AAPL', '2025-01-17', '190.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:29:49.716', '0.58', '0.58', '0.43', '0.46', '1095', '56', '18', '69', '0.42', '50', '18', '60', '0.45', '50']\n", + "['AAPL', '2025-09-19', '95.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '37', '7', '0.23', '50', '5', '4', '0.27', '50']\n", + "['AAPL', '2025-02-21', '360.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '15', '60', '132.10', '50', '12', '60', '132.85', '50']\n", + "['AAPL', '2025-01-17', '70.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '40', '65', '0.01', '50', '30', '76', '0.03', '50']\n", + "['AAPL', '2026-12-18', '70.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T10:59:37.161', '160.95', '160.95', '160.95', '160.95', '23', '1', '8', '7', '160.20', '50', '25', '22', '163.95', '50']\n", + "['AAPL', '2025-02-21', '195.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:32:08.635', '1.73', '1.73', '1.44', '1.47', '43', '12', '10', '4', '1.42', '50', '20', '60', '1.48', '50']\n", + "['AAPL', '2025-08-15', '250.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '31', '25.40', '50', '11', '4', '28.15', '50']\n", + "['AAPL', '2026-12-18', '420.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '190.70', '50', '8', '7', '194.30', '50']\n", + "['AAPL', '2024-11-29', '205.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:55:00.2', '0.33', '0.33', '0.24', '0.27', '354', '52', '10', '7', '0.22', '50', '31', '11', '0.26', '50']\n", + "['AAPL', '2024-12-27', '275.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '46.10', '50', '30', '76', '49.55', '50']\n", + "['AAPL', '2024-12-06', '255.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T11:01:59.411', '28.78', '28.78', '28.78', '28.78', '1', '1', '30', '76', '27.20', '50', '6', '60', '27.85', '50']\n", + "['AAPL', '2025-01-17', '350.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '122.15', '50', '30', '76', '122.70', '50']\n", + "['AAPL', '2025-09-19', '160.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:46:13.301', '73.35', '73.35', '73.35', '73.35', '2', '1', '30', '76', '74.70', '50', '60', '22', '75.45', '50']\n", + "['AAPL', '2024-11-29', '105.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '3', '7', '120.80', '50', '30', '76', '123.00', '50']\n", + "['AAPL', '2026-12-18', '80.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '24', '7', '151.25', '50', '30', '76', '155.20', '50']\n", + "['AAPL', '2027-01-15', '270.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:58:07.144', '22.40', '22.70', '22.40', '22.70', '5', '5', '1', '7', '20.60', '50', '2', '7', '23.25', '50']\n", + "['AAPL', '2025-12-19', '290.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:44:59.802', '6.10', '6.30', '5.98', '6.30', '21', '6', '33', '60', '6.20', '50', '38', '11', '6.40', '50']\n", + "['AAPL', '2024-12-20', '175.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '3', '60', '53.25', '50', '1', '76', '54.80', '50']\n", + "['AAPL', '2026-12-18', '450.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '220.65', '50', '8', '60', '224.40', '50']\n", + "['AAPL', '2025-03-21', '350.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '3', '4', '121.00', '50', '4', '7', '124.30', '50']\n", + "['AAPL', '2024-11-15', '252.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '24.80', '50', '30', '76', '25.40', '50']\n", + "['AAPL', '2024-11-29', '155.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:53:50.606', '0.04', '0.04', '0.04', '0.04', '27', '5', '17', '7', '0.01', '50', '1', '1', '0.10', '50']\n", + "['AAPL', '2024-11-08', '155.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:30:28.748', '70.95', '72.05', '70.95', '72.05', '116', '2', '30', '11', '72.20', '50', '30', '11', '72.90', '50']\n", + "['AAPL', '2026-01-16', '250.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '46', '30.10', '50', '9', '7', '32.25', '50']\n", + "['AAPL', '2026-01-16', '190.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:37:41.592', '6.90', '6.90', '6.90', '6.90', '1', '1', '19', '46', '6.80', '50', '31', '60', '7.00', '50']\n", + "['AAPL', '2026-01-16', '140.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T11:53:08.568', '1.56', '1.56', '1.54', '1.54', '11', '2', '41', '7', '1.46', '50', '42', '7', '1.54', '50']\n", + "['AAPL', '2025-03-21', '210.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:18:41.311', '5.00', '5.10', '4.40', '4.44', '182', '43', '5', '76', '4.35', '50', '15', '60', '4.50', '50']\n", + "['AAPL', '2024-11-15', '265.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '37.25', '50', '30', '76', '37.85', '50']\n", + "['AAPL', '2025-12-19', '115.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '60', '116.10', '50', '30', '76', '119.45', '50']\n", + "['AAPL', '2026-12-18', '175.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '32', '11', '73.15', '50', '11', '7', '75.35', '50']\n", + "['AAPL', '2025-08-15', '300.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '6', '7', '70.80', '50', '6', '7', '74.40', '50']\n", + "['AAPL', '2025-09-19', '200.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:52:02.465', '7.45', '7.45', '6.95', '7.05', '18', '9', '48', '5', '6.85', '50', '26', '60', '7.10', '50']\n", + "['AAPL', '2025-04-17', '245.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '132', '9', '20.20', '50', '37', '9', '21.85', '50']\n", + "['AAPL', '2024-12-13', '240.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T10:33:57.002', '15.07', '15.07', '15.07', '15.07', '1', '1', '10', '76', '12.95', '50', '20', '76', '13.55', '50']\n", + "['AAPL', '2025-06-20', '165.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:42:13.433', '66.61', '67.10', '66.61', '67.10', '3', '3', '30', '76', '67.95', '50', '66', '22', '68.60', '50']\n", + "['AAPL', '2025-09-19', '15.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '4', '60', '210.85', '50', '30', '76', '214.30', '50']\n", + "['AAPL', '2024-11-15', '180.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:37:30.375', '45.96', '47.50', '45.25', '47.49', '105', '12', '30', '76', '47.35', '50', '1', '5', '48.75', '50']\n", + "['AAPL', '2024-11-08', '200.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:46:48.607', '25.75', '27.89', '25.59', '27.89', '545', '24', '30', '11', '27.35', '50', '28', '11', '27.95', '50']\n", + "['AAPL', '2024-12-20', '240.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:52.187', '1.52', '2.00', '1.51', '1.93', '2716', '688', '12', '60', '1.87', '50', '1', '22', '1.94', '50']\n", + "['AAPL', '2024-11-15', '222.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:31.541', '4.27', '6.30', '4.27', '6.10', '2347', '417', '33', '22', '5.15', '50', '10', '69', '7.00', '50']\n", + "['AAPL', '2025-08-15', '340.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '6', '7', '110.75', '50', '6', '7', '114.35', '50']\n", + "['AAPL', '2025-08-15', '300.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:33.408', '2.09', '2.23', '2.06', '2.21', '20', '7', '42', '60', '2.14', '50', '20', '60', '2.26', '50']\n", + "['AAPL', '2025-12-19', '225.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:56:53.475', '28.02', '28.77', '27.75', '28.77', '27', '11', '11', '7', '27.05', '50', '25', '22', '29.20', '50']\n", + "['AAPL', '2026-01-16', '105.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '78', '7', '0.51', '50', '95', '7', '0.56', '50']\n", + "['AAPL', '2024-12-20', '260.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '32.25', '50', '1', '1', '34.65', '50']\n", + "['AAPL', '2024-12-20', '105.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '25', '7', '0.02', '50', '16', '4', '0.05', '50']\n", + "['AAPL', '2027-01-15', '60.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '77', '22', '0.02', '50', '79', '22', '0.72', '50']\n", + "['AAPL', '2025-08-15', '290.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '60.45', '50', '6', '7', '64.40', '50']\n", + "['AAPL', '2025-01-17', '275.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '47.20', '50', '30', '76', '48.20', '50']\n", + "['AAPL', '2025-03-21', '370.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '3', '43', '141.00', '50', '4', '7', '144.30', '50']\n", + "['AAPL', '2024-11-15', '290.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '29', '76', '62.25', '50', '30', '76', '62.85', '50']\n", + "['AAPL', '2024-11-15', '275.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '247', '69', '0.01', '50']\n", + "['AAPL', '2024-12-20', '265.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '37.25', '50', '1', '60', '38.75', '50']\n", + "['AAPL', '2024-11-15', '255.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '27.30', '50', '30', '76', '28.20', '50']\n", + "['AAPL', '2024-11-22', '160.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:48:22.986', '67.54', '67.54', '67.54', '67.54', '1', '1', '30', '76', '65.65', '50', '30', '76', '68.00', '50']\n", + "['AAPL', '2024-12-06', '200.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:53:00.886', '0.38', '0.38', '0.25', '0.28', '358', '52', '12', '1', '0.26', '50', '25', '7', '0.27', '50']\n", + "['AAPL', '2025-03-21', '85.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:54:56.244', '143.70', '143.70', '143.50', '143.50', '7', '3', '30', '76', '142.75', '50', '3', '1', '145.50', '50']\n", + "['AAPL', '2026-06-18', '115.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '27', '22', '118.00', '50', '30', '76', '121.90', '50']\n", + "['AAPL', '2025-02-21', '150.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:08:49.176', '0.24', '0.24', '0.23', '0.24', '45', '3', '93', '7', '0.23', '50', '58', '7', '0.26', '50']\n", + "['AAPL', '2025-09-19', '225.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:13:37.153', '15.00', '15.00', '14.80', '14.95', '15', '8', '9', '22', '14.60', '50', '34', '11', '15.00', '50']\n", + "['AAPL', '2024-11-22', '285.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '57.20', '50', '30', '76', '57.95', '50']\n", + "['AAPL', '2026-01-16', '200.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:59.928', '44.93', '46.30', '44.50', '46.10', '88', '20', '30', '11', '44.90', '50', '9', '7', '48.00', '50']\n", + "['AAPL', '2026-12-18', '15.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '37', '7', '0.03', '50', '34', '7', '0.09', '50']\n", + "['AAPL', '2025-02-21', '345.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '59', '46', '0.02', '50', '7', '1', '0.10', '50']\n", + "['AAPL', '2025-04-17', '320.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '47', '7', '0.20', '50', '64', '7', '0.23', '50']\n", + "['AAPL', '2024-11-22', '300.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '72.20', '50', '29', '76', '73.00', '50']\n", + "['AAPL', '2025-12-19', '310.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '60', '81.10', '50', '2', '60', '83.90', '50']\n", + "['AAPL', '2026-06-18', '150.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:20:58.226', '88.10', '88.10', '88.10', '88.10', '1', '1', '1', '42', '88.15', '50', '1', '42', '90.70', '50']\n", + "['AAPL', '2024-12-13', '150.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '25', '7', '0.05', '50', '25', '7', '0.08', '50']\n", + "['AAPL', '2026-12-18', '350.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:04:04.18', '5.80', '5.95', '5.67', '5.95', '62', '15', '27', '60', '5.85', '50', '10', '76', '6.10', '50']\n", + "['AAPL', '2025-09-19', '305.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '75.75', '50', '7', '7', '79.35', '50']\n", + "['AAPL', '2025-04-17', '300.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:15:08.035', '0.48', '0.48', '0.45', '0.45', '22', '5', '75', '76', '0.47', '50', '30', '7', '0.51', '50']\n", + "['AAPL', '2024-11-15', '50.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '103', '7', '0.01', '50']\n", + "['AAPL', '2027-01-15', '145.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '50', '22', '96.45', '50', '1', '7', '99.95', '50']\n", + "['AAPL', '2024-12-20', '280.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:41:47.322', '0.06', '0.06', '0.06', '0.06', '1', '1', '1', '9', '0.05', '50', '186', '5', '0.06', '50']\n", + "['AAPL', '2024-11-15', '285.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:37:28.949', '0.01', '0.01', '0.01', '0.01', '2', '2', '0', '76', '0.00', '50', '29', '76', '0.01', '50']\n", + "['AAPL', '2027-01-15', '180.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T11:07:34.5', '9.50', '9.50', '9.14', '9.14', '6', '3', '18', '60', '8.60', '50', '15', '5', '9.25', '50']\n", + "['AAPL', '2026-01-16', '155.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:13:41.549', '2.40', '2.40', '2.40', '2.40', '1', '1', '46', '7', '2.33', '50', '22', '7', '2.43', '50']\n", + "['AAPL', '2024-12-20', '150.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:44:25.211', '0.09', '0.09', '0.08', '0.08', '233', '10', '38', '7', '0.08', '50', '22', '7', '0.09', '50']\n", + "['AAPL', '2025-09-19', '255.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:56:57.723', '11.18', '11.28', '10.86', '11.28', '7', '4', '14', '7', '9.55', '50', '2', '22', '11.55', '50']\n", + "['AAPL', '2025-03-21', '35.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '24', '76', '0.02', '50']\n", + "['AAPL', '2025-08-15', '145.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '32', '7', '0.87', '50', '41', '4', '0.97', '50']\n", + "['AAPL', '2025-12-19', '235.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:00:02.196', '22.70', '23.50', '22.70', '23.45', '45', '3', '12', '7', '21.65', '50', '14', '11', '23.85', '50']\n", + "['AAPL', '2025-09-19', '195.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:43:01.242', '44.13', '44.75', '44.13', '44.75', '12', '3', '9', '7', '43.25', '50', '1', '11', '46.55', '50']\n", + "['AAPL', '2025-08-15', '325.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '35', '4', '0.91', '50', '25', '4', '1.00', '50']\n", + "['AAPL', '2024-11-15', '220.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:59:57.952', '1.35', '1.37', '0.54', '0.57', '8939', '1300', '2', '31', '0.54', '50', '20', '60', '0.59', '50']\n", + "['AAPL', '2025-03-21', '80.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '82', '7', '0.03', '50', '84', '7', '0.08', '50']\n", + "['AAPL', '2025-01-17', '330.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T10:39:14.086', '0.02', '0.02', '0.02', '0.02', '1', '1', '34', '7', '0.01', '50', '10', '76', '0.03', '50']\n", + "['AAPL', '2025-06-20', '5.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '220.55', '50', '5', '22', '224.35', '50']\n", + "['AAPL', '2024-12-20', '285.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '57.20', '50', '30', '76', '57.85', '50']\n", + "['AAPL', '2024-11-22', '285.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '22', '0.00', '50', '1', '1', '0.06', '50']\n", + "['AAPL', '2026-12-18', '170.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:34:29.556', '76.10', '76.10', '76.10', '76.10', '1', '1', '19', '11', '76.80', '50', '10', '7', '79.05', '50']\n", + "['AAPL', '2025-06-20', '75.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '48', '7', '0.08', '50', '95', '7', '0.11', '50']\n", + "['AAPL', '2025-09-19', '130.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '43', '7', '0.65', '50', '47', '7', '0.69', '50']\n", + "['AAPL', '2025-02-21', '105.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '29', '7', '0.07', '50', '35', '4', '0.11', '50']\n", + "['AAPL', '2025-01-17', '250.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:59.926', '1.21', '1.52', '1.18', '1.45', '6453', '585', '6', '60', '1.41', '50', '1', '7', '1.50', '50']\n", + "['AAPL', '2025-08-15', '220.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:50:35.385', '12.14', '12.14', '12.00', '12.00', '15', '3', '28', '60', '11.90', '50', '30', '11', '13.10', '50']\n", + "['AAPL', '2024-11-08', '295.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '11', '67.05', '50', '30', '11', '68.15', '50']\n", + "['AAPL', '2026-12-18', '450.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:44:06.635', '1.36', '1.41', '1.35', '1.41', '18', '7', '49', '7', '1.33', '50', '32', '11', '1.43', '50']\n", + "['AAPL', '2025-09-19', '20.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '205.75', '50', '30', '76', '209.25', '50']\n", + "['AAPL', '2024-11-08', '190.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T10:43:29.671', '0.01', '0.01', '0.01', '0.01', '131', '9', '0', '9', '0.00', '50', '36', '7', '0.01', '50']\n", + "['AAPL', '2025-09-19', '250.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '170', '4', '27.60', '50', '87', '4', '28.50', '50']\n", + "['AAPL', '2025-06-20', '70.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:08:13.606', '158.54', '158.95', '158.54', '158.95', '137', '2', '30', '76', '157.20', '50', '5', '7', '160.95', '50']\n", + "['AAPL', '2025-03-21', '245.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '28', '4', '20.00', '50', '20', '76', '20.50', '50']\n", + "['AAPL', '2025-03-21', '25.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '200.80', '50', '7', '7', '204.40', '50']\n", + "['AAPL', '2026-06-18', '225.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:14:40.428', '34.81', '35.69', '34.81', '35.69', '23', '10', '1', '43', '34.50', '50', '8', '47', '35.85', '50']\n", + "['AAPL', '2025-01-17', '310.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:28:24.087', '0.04', '0.04', '0.03', '0.03', '46', '12', '38', '7', '0.03', '50', '10', '6', '0.04', '50']\n", + "['AAPL', '2025-03-21', '175.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:32:08.643', '0.94', '0.94', '0.78', '0.78', '12', '3', '20', '7', '0.74', '50', '66', '76', '0.78', '50']\n", + "['AAPL', '2027-01-15', '410.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '76', '180.00', '50', '2', '76', '185.00', '50']\n", + "['AAPL', '2026-01-16', '10.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '5', '4', '0.04', '50']\n", + "['AAPL', '2026-12-18', '430.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '200.65', '50', '7', '7', '204.55', '50']\n", + "['AAPL', '2025-09-19', '125.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '35', '7', '0.56', '50', '73', '7', '0.60', '50']\n", + "['AAPL', '2025-12-19', '190.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:20:09.7', '6.53', '6.53', '6.53', '6.53', '2', '1', '51', '4', '6.45', '50', '23', '4', '6.65', '50']\n", + "['AAPL', '2027-01-15', '380.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '11', '150.00', '50', '2', '11', '155.00', '50']\n", + "['AAPL', '2025-09-19', '65.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '38', '7', '0.08', '50', '50', '7', '0.14', '50']\n", + "['AAPL', '2026-06-18', '210.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '76', '14.25', '50', '27', '76', '14.55', '50']\n", + "['AAPL', '2025-01-17', '290.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:39:05.99', '0.08', '0.09', '0.07', '0.08', '31', '6', '95', '46', '0.07', '50', '22', '7', '0.08', '50']\n", + "['AAPL', '2025-03-21', '360.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:55:26.736', '0.05', '0.06', '0.05', '0.06', '8', '3', '73', '7', '0.04', '50', '51', '7', '0.07', '50']\n", + "['AAPL', '2025-06-20', '110.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '119.70', '50', '27', '60', '120.95', '50']\n", + "['AAPL', '2026-01-16', '195.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:19:22.589', '8.17', '8.17', '8.00', '8.00', '11', '2', '98', '5', '7.80', '50', '21', '60', '8.05', '50']\n", + "['AAPL', '2024-11-15', '95.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '132.25', '50', '30', '76', '132.80', '50']\n", + "['AAPL', '2026-01-16', '180.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:58:34.575', '60.00', '60.00', '60.00', '60.00', '5', '1', '10', '76', '60.95', '50', '10', '76', '61.35', '50']\n", + "['AAPL', '2025-12-19', '85.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:37:58.731', '144.75', '144.75', '144.75', '144.75', '290', '1', '30', '76', '145.05', '50', '18', '22', '147.05', '50']\n", + "['AAPL', '2025-06-20', '25.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '22', '200.90', '50', '27', '76', '204.10', '50']\n", + "['AAPL', '2024-11-29', '190.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:56:35.592', '0.12', '0.12', '0.10', '0.11', '11', '8', '44', '7', '0.10', '50', '23', '7', '0.12', '50']\n", + "['AAPL', '2025-12-19', '60.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '114', '7', '0.12', '50', '61', '7', '0.16', '50']\n", + "['AAPL', '2025-01-17', '165.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:53:56.883', '62.70', '64.07', '62.70', '64.07', '6', '4', '4', '47', '63.90', '50', '9', '60', '64.55', '50']\n", + "['AAPL', '2025-04-17', '135.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '95.15', '50', '1', '7', '96.85', '50']\n", + "['AAPL', '2025-09-19', '150.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '83.10', '50', '34', '22', '84.80', '50']\n", + "['AAPL', '2025-12-19', '140.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '92.95', '50', '31', '22', '95.80', '50']\n", + "['AAPL', '2026-01-16', '215.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:18:49.016', '13.70', '13.70', '13.50', '13.50', '2', '2', '20', '47', '13.40', '50', '10', '76', '13.70', '50']\n", + "['AAPL', '2025-01-17', '15.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '20', '76', '0.01', '50']\n", + "['AAPL', '2025-01-17', '40.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '187.55', '50', '1', '7', '189.20', '50']\n", + "['AAPL', '2024-12-20', '5.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '502', '7', '0.01', '50']\n", + "['AAPL', '2025-06-20', '160.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:46:00.894', '1.09', '1.09', '1.06', '1.06', '35', '10', '27', '7', '1.06', '50', '46', '4', '1.11', '50']\n", + "['AAPL', '2024-11-08', '252.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:36:46.156', '0.01', '0.01', '0.01', '0.01', '168', '6', '0', '11', '0.00', '50', '449', '11', '0.01', '50']\n", + "['AAPL', '2024-11-08', '212.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:30:57.023', '13.84', '15.20', '13.13', '15.10', '296', '22', '7', '7', '14.65', '50', '1', '7', '16.30', '50']\n", + "['AAPL', '2024-11-15', '165.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:42:28.49', '0.02', '0.02', '0.01', '0.01', '16', '10', '1000', '1', '0.01', '50', '1', '7', '0.02', '50']\n", + "['AAPL', '2025-09-19', '120.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '36', '60', '111.70', '50', '30', '76', '112.95', '50']\n", + "['AAPL', '2025-02-21', '250.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:54:42.593', '24.70', '24.98', '23.71', '23.80', '17', '9', '3', '9', '21.80', '50', '1', '6', '25.55', '50']\n", + "['AAPL', '2025-12-19', '35.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '8', '7', '191.50', '50', '30', '76', '195.05', '50']\n", + "['AAPL', '2024-12-20', '310.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '29', '76', '82.20', '50', '30', '76', '83.20', '50']\n", + "['AAPL', '2025-03-21', '165.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:30:59.299', '65.00', '65.43', '65.00', '65.28', '352', '8', '30', '76', '64.60', '50', '3', '6', '67.45', '50']\n", + "['AAPL', '2024-11-22', '225.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:59:57.222', '3.67', '3.67', '2.32', '2.38', '1970', '231', '40', '1', '2.20', '50', '30', '11', '2.85', '50']\n", + "['AAPL', '2024-11-08', '135.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:30:28.748', '92.25', '92.30', '92.25', '92.30', '20', '2', '30', '11', '92.10', '50', '6', '47', '93.10', '50']\n", + "['AAPL', '2026-12-18', '135.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:37:55.68', '103.55', '103.55', '103.55', '103.55', '1', '1', '30', '76', '103.70', '50', '33', '22', '106.30', '50']\n", + "['AAPL', '2024-12-06', '100.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '11', '0.00', '50', '36', '76', '0.03', '50']\n", + "['AAPL', '2026-01-16', '155.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:51:58.309', '80.65', '82.00', '80.65', '82.00', '3', '3', '9', '76', '81.75', '50', '18', '76', '82.60', '50']\n", + "['AAPL', '2027-01-15', '20.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '22', '205.50', '50', '30', '76', '209.65', '50']\n", + "['AAPL', '2025-08-15', '210.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:03:21.737', '9.23', '9.23', '8.84', '8.84', '4', '3', '2', '43', '8.70', '50', '6', '5', '9.00', '50']\n", + "['AAPL', '2026-12-18', '290.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '92', '4', '62.15', '50', '20', '7', '64.45', '50']\n", + "['AAPL', '2027-01-15', '80.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:47:01.877', '152.80', '152.80', '152.80', '152.80', '5', '1', '34', '22', '151.50', '50', '1', '76', '156.25', '50']\n", + "['AAPL', '2024-11-15', '212.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:24:52.465', '14.00', '15.40', '13.35', '15.39', '71', '22', '49', '76', '15.00', '50', '1', '7', '16.55', '50']\n", + "['AAPL', '2026-06-18', '265.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '133', '22', '40.70', '50', '10', '76', '43.10', '50']\n", + "['AAPL', '2025-02-21', '340.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '9', '60', '112.10', '50', '4', '7', '114.35', '50']\n", + "['AAPL', '2024-11-08', '150.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '11', '0.00', '50', '600', '11', '0.01', '50']\n", + "['AAPL', '2025-06-20', '220.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:31:43.799', '11.00', '11.00', '10.45', '10.52', '33', '24', '30', '11', '10.10', '50', '1', '60', '12.45', '50']\n", + "['AAPL', '2026-01-16', '330.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '100.40', '50', '7', '7', '104.40', '50']\n", + "['AAPL', '2024-11-15', '350.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '34', '76', '0.01', '50']\n", + "['AAPL', '2026-01-16', '340.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '110.70', '50', '7', '7', '114.60', '50']\n", + "['AAPL', '2025-01-17', '375.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '147.15', '50', '30', '76', '148.20', '50']\n", + "['AAPL', '2025-12-19', '135.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:29:42.665', '100.45', '100.45', '99.52', '99.52', '2', '2', '22', '7', '97.50', '50', '37', '22', '100.45', '50']\n", + "['AAPL', '2026-12-18', '5.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '46', '0.00', '50', '29', '76', '0.15', '50']\n", + "['AAPL', '2024-12-20', '170.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:23:42.717', '0.14', '0.14', '0.12', '0.13', '531', '24', '46', '7', '0.13', '50', '44', '7', '0.15', '50']\n", + "['AAPL', '2027-01-15', '340.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:31:42.367', '7.48', '7.48', '7.48', '7.48', '10', '1', '17', '5', '7.30', '50', '32', '11', '7.70', '50']\n", + "['AAPL', '2025-02-21', '100.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:46:28.47', '0.09', '0.09', '0.08', '0.08', '2', '2', '52', '7', '0.07', '50', '61', '7', '0.09', '50']\n", + "['AAPL', '2025-04-17', '280.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '9', '51.05', '50', '1', '9', '54.60', '50']\n", + "['AAPL', '2026-12-18', '380.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '8', '7', '150.35', '50', '8', '7', '154.30', '50']\n", + "['AAPL', '2026-12-18', '125.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:09:16.937', '1.89', '1.89', '1.89', '1.89', '1', '1', '39', '7', '1.82', '50', '54', '7', '1.94', '50']\n", + "['AAPL', '2026-01-16', '20.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '205.75', '50', '30', '76', '209.35', '50']\n", + "['AAPL', '2025-01-17', '265.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:07:55.311', '38.00', '38.19', '38.00', '38.19', '6', '3', '30', '76', '37.20', '50', '30', '76', '37.75', '50']\n", + "['AAPL', '2026-01-16', '5.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '220.70', '50', '30', '76', '224.30', '50']\n", + "['AAPL', '2025-04-17', '310.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '4', '81.05', '50', '5', '7', '84.35', '50']\n", + "['AAPL', '2025-03-21', '60.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '100', '69', '0.01', '50', '31', '11', '0.05', '50']\n", + "['AAPL', '2025-02-21', '145.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '74', '7', '0.21', '50', '31', '7', '0.23', '50']\n", + "['AAPL', '2027-01-15', '125.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T11:57:55.497', '2.00', '2.00', '2.00', '2.00', '1', '1', '1', '69', '2.00', '50', '46', '11', '2.14', '50']\n", + "['AAPL', '2026-01-16', '165.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:36:29.189', '72.10', '72.10', '72.10', '72.10', '1', '1', '20', '76', '73.40', '50', '10', '76', '73.85', '50']\n", + "['AAPL', '2024-11-22', '245.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '60', '17.30', '50', '1', '11', '18.40', '50']\n", + "['AAPL', '2024-11-22', '202.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:51:13.809', '23.86', '23.86', '23.30', '23.30', '7', '7', '4', '60', '25.20', '50', '2', '60', '25.75', '50']\n", + "['AAPL', '2024-11-29', '100.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '7', '125.80', '50', '30', '76', '127.95', '50']\n", + "['AAPL', '2024-11-15', '95.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '252', '7', '0.01', '50']\n", + "['AAPL', '2027-01-15', '175.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '57', '22', '73.50', '50', '1', '42', '75.85', '50']\n", + "['AAPL', '2025-09-19', '75.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T09:52:33.952', '0.13', '0.13', '0.13', '0.13', '1', '1', '114', '7', '0.13', '50', '95', '7', '0.18', '50']\n", + "['AAPL', '2025-03-21', '40.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '46', '0.00', '50', '1', '46', '0.22', '50']\n", + "['AAPL', '2024-11-15', '75.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '53', '7', '0.01', '50']\n", + "['AAPL', '2025-03-21', '60.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:03:22.915', '167.02', '167.02', '167.02', '167.02', '10', '1', '30', '76', '166.35', '50', '1', '76', '169.75', '50']\n", + "['AAPL', '2025-12-19', '245.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:23:24.624', '27.85', '27.85', '26.90', '26.90', '50', '2', '12', '7', '24.90', '50', '9', '7', '28.85', '50']\n", + "['AAPL', '2026-01-16', '150.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:18:42.071', '2.15', '2.15', '1.98', '2.04', '1043', '242', '46', '7', '2.00', '50', '48', '7', '2.11', '50']\n", + "['AAPL', '2025-04-17', '265.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:58:01.809', '2.54', '2.85', '2.54', '2.85', '12', '9', '18', '60', '2.79', '50', '18', '4', '2.92', '50']\n", + "['AAPL', '2024-11-08', '145.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:30:28.748', '80.63', '82.20', '80.63', '82.20', '149', '2', '30', '11', '82.20', '50', '30', '11', '83.00', '50']\n", + "['AAPL', '2024-12-27', '165.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '61', '22', '2.24', '50']\n", + "['AAPL', '2024-12-13', '290.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '29', '76', '62.15', '50', '1', '76', '63.80', '50']\n", + "['AAPL', '2027-01-15', '95.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '17', '22', '138.00', '50', '30', '76', '142.20', '50']\n", + "['AAPL', '2025-09-19', '50.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '114', '7', '0.04', '50', '46', '7', '0.07', '50']\n", + "['AAPL', '2025-08-15', '260.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '35', '9', '34.10', '50', '23', '7', '35.35', '50']\n", + "['AAPL', '2025-08-15', '240.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:28:50.414', '15.20', '15.65', '15.20', '15.65', '9', '5', '11', '7', '13.85', '50', '1', '7', '16.90', '50']\n", + "['AAPL', '2024-11-15', '280.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:16:11.137', '0.01', '0.01', '0.01', '0.01', '3', '2', '0', '76', '0.00', '50', '34', '76', '0.01', '50']\n", + "['AAPL', '2025-09-19', '185.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:06:26.484', '52.05', '52.95', '51.70', '52.95', '9', '4', '34', '76', '53.05', '50', '5', '7', '54.00', '50']\n", + "['AAPL', '2025-06-20', '270.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:50:00.128', '4.04', '4.35', '3.95', '4.30', '131', '42', '9', '5', '4.20', '50', '1', '60', '4.50', '50']\n", + "['AAPL', '2025-09-19', '340.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:14:16.891', '0.79', '0.79', '0.79', '0.79', '30', '6', '39', '7', '0.79', '50', '51', '7', '0.85', '50']\n", + "['AAPL', '2025-02-21', '125.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '29', '7', '0.13', '50', '31', '7', '0.17', '50']\n", + "['AAPL', '2025-08-15', '350.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '31', '120.40', '50', '1', '22', '124.55', '50']\n", + "['AAPL', '2026-01-16', '350.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '120.75', '50', '7', '7', '124.35', '50']\n", + "['AAPL', '2024-12-06', '235.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:40:03.518', '10.48', '10.50', '9.29', '9.29', '26', '5', '5', '22', '7.55', '50', '17', '69', '9.50', '50']\n", + "['AAPL', '2025-03-21', '65.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '161.45', '50', '30', '76', '164.55', '50']\n", + "['AAPL', '2025-09-19', '185.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:13:56.299', '4.40', '4.41', '4.24', '4.24', '5', '4', '31', '11', '4.15', '50', '28', '11', '4.30', '50']\n", + "['AAPL', '2024-12-13', '195.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T10:12:07.242', '32.05', '32.05', '31.95', '31.95', '5', '2', '9', '69', '33.30', '50', '3', '69', '33.95', '50']\n", + "['AAPL', '2026-12-18', '290.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:38:43.214', '15.51', '15.51', '15.51', '15.51', '2', '1', '8', '7', '14.20', '50', '14', '11', '16.20', '50']\n", + "['AAPL', '2025-04-17', '150.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:52:52.269', '80.54', '80.55', '80.54', '80.54', '48', '5', '30', '76', '80.65', '50', '1', '7', '82.35', '50']\n", + "['AAPL', '2025-01-17', '340.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '112.15', '50', '30', '76', '112.85', '50']\n", + "['AAPL', '2025-03-21', '330.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '9', '60', '102.10', '50', '2', '60', '103.30', '50']\n", + "['AAPL', '2025-01-17', '175.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:30:28.612', '52.56', '54.59', '52.56', '54.57', '21', '15', '9', '7', '54.20', '50', '7', '60', '54.70', '50']\n", + "['AAPL', '2024-12-20', '195.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:23:41.222', '31.20', '33.97', '31.20', '33.93', '217', '23', '16', '47', '32.65', '50', '4', '60', '34.10', '50']\n", + "['AAPL', '2025-02-21', '355.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '60', '127.10', '50', '6', '60', '128.40', '50']\n", + "['AAPL', '2025-12-19', '40.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '4', '60', '186.85', '50', '2', '11', '191.00', '50']\n", + "['AAPL', '2025-03-21', '95.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '133.75', '50', '30', '76', '135.30', '50']\n", + "['AAPL', '2025-06-20', '125.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:52:18.596', '105.87', '105.87', '105.87', '105.87', '7', '1', '30', '76', '104.05', '50', '26', '60', '106.50', '50']\n", + "['AAPL', '2025-08-15', '255.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:03:21.737', '9.80', '10.17', '9.65', '10.17', '11', '8', '36', '11', '10.05', '50', '1', '22', '10.25', '50']\n", + "['AAPL', '2026-06-18', '320.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '21', '60', '91.10', '50', '16', '60', '94.20', '50']\n", + "['AAPL', '2025-12-19', '195.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '33', '4', '7.50', '50', '22', '4', '7.70', '50']\n", + "['AAPL', '2025-09-19', '255.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '76', '30.90', '50', '66', '4', '32.35', '50']\n", + "['AAPL', '2026-06-18', '130.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:01:44.145', '1.64', '1.64', '1.64', '1.64', '1', '1', '49', '7', '1.57', '50', '52', '7', '1.67', '50']\n", + "['AAPL', '2025-01-17', '305.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:38:55.348', '0.04', '0.04', '0.04', '0.04', '8', '1', '28', '7', '0.04', '50', '62', '7', '0.09', '50']\n", + "['AAPL', '2027-01-15', '135.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:37:55.68', '104.01', '104.01', '104.01', '104.01', '1', '1', '30', '76', '104.00', '50', '1', '42', '107.85', '50']\n", + "['AAPL', '2025-09-19', '105.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '100', '7', '0.31', '50', '54', '60', '0.35', '50']\n", + "['AAPL', '2024-12-20', '55.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '171.90', '50', '30', '76', '173.00', '50']\n", + "['AAPL', '2026-12-18', '50.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '106', '7', '0.25', '50', '49', '46', '0.30', '50']\n", + "['AAPL', '2024-11-22', '115.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '3', '7', '110.75', '50', '30', '76', '112.90', '50']\n", + "['AAPL', '2026-12-18', '200.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:47:45.958', '55.15', '56.00', '55.00', '55.67', '10', '7', '20', '76', '55.95', '50', '1', '5', '58.20', '50']\n", + "['AAPL', '2025-06-20', '240.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T11:13:18.083', '20.85', '20.85', '20.65', '20.65', '44', '7', '5', '22', '18.15', '50', '6', '7', '21.70', '50']\n", + "['AAPL', '2025-01-17', '45.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '182.60', '50', '1', '7', '184.25', '50']\n", + "['AAPL', '2024-11-15', '217.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:06:00.481', '8.60', '10.35', '8.60', '10.35', '243', '40', '2', '7', '9.25', '50', '2', '7', '11.50', '50']\n", + "['AAPL', '2026-06-18', '190.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:46:25.578', '57.70', '57.70', '57.70', '57.70', '5', '1', '10', '76', '57.65', '50', '16', '22', '59.00', '50']\n", + "['AAPL', '2024-12-13', '170.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:39:49.677', '0.10', '0.10', '0.10', '0.10', '4', '2', '25', '7', '0.10', '50', '30', '76', '0.13', '50']\n", + "['AAPL', '2025-06-20', '50.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:06:51.266', '178.10', '178.41', '178.10', '178.41', '7', '2', '1', '6', '176.55', '50', '5', '7', '180.25', '50']\n", + "['AAPL', '2025-09-19', '350.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '120.35', '50', '7', '7', '124.30', '50']\n", + "['AAPL', '2024-12-06', '230.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:23:12.102', '7.35', '7.35', '5.74', '5.74', '70', '13', '6', '1', '5.50', '50', '30', '11', '6.60', '50']\n", + "['AAPL', '2026-06-18', '75.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '35', '7', '0.32', '50', '36', '7', '0.42', '50']\n", + "['AAPL', '2024-12-20', '305.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '6', '60', '77.20', '50', '30', '76', '77.85', '50']\n", + "['AAPL', '2026-12-18', '25.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '37', '7', '0.09', '50', '35', '7', '0.15', '50']\n", + "['AAPL', '2026-01-16', '125.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '8', '7', '107.05', '50', '32', '22', '110.00', '50']\n", + "['AAPL', '2025-12-19', '250.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:06:57.293', '16.34', '17.00', '16.10', '17.00', '120', '13', '1', '47', '15.90', '50', '2', '43', '17.15', '50']\n", + "['AAPL', '2025-04-17', '120.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '108.90', '50', '1', '7', '111.50', '50']\n", + "['AAPL', '2024-11-08', '115.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '32', '11', '0.01', '50']\n", + "['AAPL', '2025-09-19', '135.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T10:08:42.965', '0.84', '0.84', '0.84', '0.84', '1', '1', '46', '7', '0.76', '50', '64', '4', '0.81', '50']\n", + "['AAPL', '2025-03-21', '55.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:38:11.755', '0.04', '0.04', '0.04', '0.04', '1', '1', '101', '7', '0.01', '50', '57', '43', '0.04', '50']\n", + "['AAPL', '2024-11-22', '135.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '22', '0.00', '50', '21', '7', '0.29', '50']\n", + "['AAPL', '2025-01-17', '210.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:47:42.819', '2.61', '2.61', '1.80', '1.80', '1394', '183', '1', '22', '1.82', '50', '1', '22', '1.87', '50']\n", + "['AAPL', '2025-08-15', '215.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '23', '4', '10.20', '50', '1', '7', '11.45', '50']\n", + "['AAPL', '2027-01-15', '270.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '98', '22', '46.90', '50', '50', '22', '49.10', '50']\n", + "['AAPL', '2024-12-20', '320.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '92.20', '50', '30', '76', '93.20', '50']\n", + "['AAPL', '2027-01-15', '50.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '229', '22', '0.05', '50', '172', '22', '0.62', '50']\n", + "['AAPL', '2025-06-20', '270.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:40:53.847', '42.74', '42.74', '42.74', '42.74', '1', '1', '1', '43', '40.85', '50', '9', '46', '43.15', '50']\n", + "['AAPL', '2024-11-15', '237.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:50.965', '0.19', '0.27', '0.18', '0.26', '4344', '577', '38', '60', '0.23', '50', '528', '1', '0.26', '50']\n", + "['AAPL', '2024-12-13', '290.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '4', '11', '0.01', '50', '19', '69', '0.23', '50']\n", + "['AAPL', '2027-01-15', '220.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:36:27.201', '21.47', '21.47', '20.80', '20.80', '23', '6', '1', '5', '20.60', '50', '33', '11', '21.05', '50']\n", + "['AAPL', '2025-09-19', '170.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:10:17.359', '2.81', '2.81', '2.50', '2.61', '3', '3', '31', '76', '2.49', '50', '37', '60', '2.60', '50']\n", + "['AAPL', '2024-11-29', '225.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:55:45.693', '4.45', '6.05', '4.45', '5.75', '1763', '291', '1', '46', '4.85', '50', '3', '60', '6.10', '50']\n", + "['AAPL', '2025-06-20', '225.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:50:14.258', '19.30', '20.51', '19.30', '20.51', '249', '48', '1', '1', '19.00', '50', '20', '60', '20.70', '50']\n", + "['AAPL', '2024-11-08', '202.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:31:29.647', '0.01', '0.01', '0.01', '0.01', '747', '113', '0', '1', '0.00', '50', '12', '60', '0.01', '50']\n", + "['AAPL', '2025-02-21', '225.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:59:58.838', '9.55', '9.55', '7.90', '7.95', '276', '87', '5', '11', '7.10', '50', '48', '76', '9.00', '50']\n", + "['AAPL', '2025-09-19', '285.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:05:48.26', '4.35', '4.56', '4.35', '4.56', '7', '2', '39', '60', '4.45', '50', '39', '11', '4.65', '50']\n", + "['AAPL', '2027-01-15', '115.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '54', '22', '1.36', '50', '54', '22', '1.62', '50']\n", + "['AAPL', '2025-01-17', '90.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '86', '7', '0.03', '50', '28', '4', '0.05', '50']\n", + "['AAPL', '2027-01-15', '5.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '220.70', '50', '30', '76', '224.50', '50']\n", + "['AAPL', '2024-11-08', '275.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '11', '0.00', '50', '750', '11', '0.01', '50']\n", + "['AAPL', '2025-01-17', '345.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '117.15', '50', '30', '76', '117.85', '50']\n", + "['AAPL', '2024-11-08', '195.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:26:46.993', '31.27', '32.13', '31.27', '32.13', '172', '5', '30', '11', '32.20', '50', '30', '11', '33.00', '50']\n", + "['AAPL', '2025-09-19', '290.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '60.40', '50', '7', '7', '64.40', '50']\n", + "['AAPL', '2024-11-08', '260.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:12:24.555', '0.01', '0.01', '0.01', '0.01', '19', '2', '0', '76', '0.00', '50', '1199', '11', '0.01', '50']\n", + "['AAPL', '2025-12-19', '145.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:31:27.497', '90.39', '90.39', '90.39', '90.39', '6', '1', '30', '76', '88.45', '50', '30', '76', '91.40', '50']\n", + "['AAPL', '2025-08-15', '145.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '86.10', '50', '30', '76', '89.05', '50']\n", + "['AAPL', '2024-11-15', '360.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '132.20', '50', '30', '76', '132.80', '50']\n", + "['AAPL', '2024-11-08', '270.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:12:15.275', '0.01', '0.01', '0.01', '0.01', '20', '2', '0', '11', '0.00', '50', '614', '31', '0.01', '50']\n", + "['AAPL', '2025-08-15', '170.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '32', '11', '2.12', '50', '22', '69', '2.27', '50']\n", + "['AAPL', '2025-08-15', '150.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:15:20.97', '1.13', '1.13', '1.11', '1.11', '11', '2', '19', '7', '1.07', '50', '36', '7', '1.12', '50']\n", + "['AAPL', '2025-09-19', '220.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:52:08.067', '26.90', '27.70', '26.51', '27.70', '84', '14', '9', '7', '25.85', '50', '2', '46', '28.05', '50']\n", + "['AAPL', '2026-01-16', '185.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:02:56.151', '56.02', '57.20', '56.02', '57.20', '5', '4', '10', '76', '56.95', '50', '9', '7', '59.10', '50']\n", + "['AAPL', '2025-12-19', '300.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '8', '60', '71.10', '50', '7', '60', '73.95', '50']\n", + "['AAPL', '2027-01-15', '200.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:45:55.925', '14.31', '14.31', '14.14', '14.15', '22', '5', '1', '7', '13.80', '50', '11', '76', '14.10', '50']\n", + "['AAPL', '2026-01-16', '205.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:56:06.262', '10.87', '10.87', '10.50', '10.50', '12', '3', '36', '11', '10.35', '50', '31', '11', '10.65', '50']\n", + "['AAPL', '2024-12-06', '120.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '6', '0.00', '50', '20', '7', '0.24', '50']\n", + "['AAPL', '2027-01-15', '165.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '7', '6.00', '50', '20', '76', '6.25', '50']\n", + "['AAPL', '2026-06-18', '210.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:07:40.35', '43.99', '43.99', '43.99', '43.99', '1', '1', '10', '76', '44.15', '50', '29', '22', '45.50', '50']\n", + "['AAPL', '2027-01-15', '430.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '37', '76', '1.78', '50', '32', '11', '2.05', '50']\n", + "['AAPL', '2025-03-21', '175.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '55.90', '50', '30', '76', '56.55', '50']\n", + "['AAPL', '2024-12-13', '280.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '52.20', '50', '30', '76', '54.40', '50']\n", + "['AAPL', '2026-12-18', '35.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '8', '7', '192.10', '50', '7', '7', '195.70', '50']\n", + "['AAPL', '2027-01-15', '15.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '4', '210.50', '50', '30', '76', '214.55', '50']\n", + "['AAPL', '2024-12-06', '155.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '20', '7', '0.04', '50', '17', '4', '0.08', '50']\n", + "['AAPL', '2024-12-27', '180.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '1', '0.00', '50', '39', '11', '0.29', '50']\n", + "['AAPL', '2025-06-20', '290.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:50:00.098', '1.84', '1.96', '1.77', '1.92', '28', '13', '33', '60', '1.85', '50', '30', '76', '1.95', '50']\n", + "['AAPL', '2024-11-22', '275.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '47.25', '50', '30', '76', '48.00', '50']\n", + "['AAPL', '2025-01-17', '130.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:45:48.957', '97.00', '98.45', '97.00', '98.45', '12', '3', '2', '60', '98.60', '50', '1', '5', '100.05', '50']\n", + "['AAPL', '2025-06-20', '280.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:50:00.156', '2.70', '2.94', '2.68', '2.89', '20', '16', '30', '60', '2.79', '50', '24', '60', '2.92', '50']\n", + "['AAPL', '2024-12-20', '20.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '502', '7', '0.01', '50']\n", + "['AAPL', '2025-01-17', '15.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '211.35', '50', '3', '1', '214.15', '50']\n", + "['AAPL', '2024-12-13', '135.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '21', '7', '0.02', '50', '27', '69', '0.16', '50']\n", + "['AAPL', '2026-01-16', '125.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '39', '7', '0.92', '50', '62', '7', '0.98', '50']\n", + "['AAPL', '2026-12-18', '170.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '1', '6.00', '50', '13', '42', '6.85', '50']\n", + "['AAPL', '2026-12-18', '370.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '76', '4.20', '50', '35', '11', '4.50', '50']\n", + "['AAPL', '2027-01-15', '370.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '11', '140.00', '50', '2', '11', '145.00', '50']\n", + "['AAPL', '2025-03-21', '210.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:43:46.671', '24.40', '25.52', '23.70', '25.50', '154', '33', '1', '4', '24.80', '50', '2', '11', '26.50', '50']\n", + "['AAPL', '2025-01-17', '5.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:38:26.706', '221.00', '222.65', '221.00', '222.55', '12', '3', '30', '76', '221.75', '50', '30', '76', '222.85', '50']\n", + "['AAPL', '2025-06-20', '210.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:46:58.474', '7.42', '7.50', '7.21', '7.21', '233', '62', '10', '76', '7.20', '50', '31', '11', '7.35', '50']\n", + "['AAPL', '2025-09-19', '100.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '81', '7', '0.28', '50', '67', '7', '0.31', '50']\n", + "['AAPL', '2025-09-19', '85.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:07:39.569', '144.10', '144.88', '144.10', '144.88', '348', '3', '30', '76', '144.85', '50', '25', '22', '146.15', '50']\n", + "['AAPL', '2026-01-16', '170.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '20', '76', '69.10', '50', '9', '76', '69.60', '50']\n", + "['AAPL', '2025-08-15', '180.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:29:09.389', '3.27', '3.27', '3.14', '3.15', '65', '6', '47', '69', '3.05', '50', '58', '11', '3.20', '50']\n", + "['AAPL', '2026-01-16', '135.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '53', '7', '1.24', '50', '33', '7', '1.32', '50']\n", + "['AAPL', '2024-11-15', '135.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '27', '11', '0.01', '50']\n", + "['AAPL', '2025-12-19', '30.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '40', '7', '0.01', '50', '5', '4', '0.06', '50']\n", + "['AAPL', '2024-12-20', '300.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:49:19.565', '0.02', '0.02', '0.01', '0.02', '77', '14', '37', '7', '0.01', '50', '21', '60', '0.02', '50']\n", + "['AAPL', '2024-12-13', '125.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '21', '7', '0.01', '50', '39', '7', '0.20', '50']\n", + "['AAPL', '2025-08-15', '140.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '20', '7', '0.74', '50', '33', '4', '0.82', '50']\n", + "['AAPL', '2024-11-08', '215.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:58:30.969', '9.65', '12.70', '9.62', '12.31', '1458', '51', '3', '7', '11.00', '50', '25', '43', '13.05', '50']\n", + "['AAPL', '2025-04-17', '215.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:23:12.543', '22.06', '23.20', '21.85', '23.20', '7', '5', '46', '4', '23.15', '50', '10', '6', '24.10', '50']\n", + "['AAPL', '2026-01-16', '230.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:55:28.188', '26.00', '27.45', '26.00', '27.30', '1634', '66', '10', '76', '27.15', '50', '22', '11', '27.50', '50']\n", + "['AAPL', '2024-11-08', '220.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:10.327', '4.86', '7.85', '4.82', '7.50', '2324', '310', '10', '76', '7.25', '50', '6', '76', '7.75', '50']\n", + "['AAPL', '2024-11-15', '350.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '122.20', '50', '30', '76', '122.80', '50']\n", + "['AAPL', '2025-02-21', '190.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:05:27.844', '40.70', '41.04', '40.65', '41.04', '43', '5', '30', '76', '40.95', '50', '1', '47', '42.25', '50']\n", + "['AAPL', '2024-11-29', '160.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '67.40', '50', '30', '76', '68.20', '50']\n", + "['AAPL', '2024-11-29', '260.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:04:17.41', '0.05', '0.06', '0.04', '0.06', '160', '34', '6', '69', '0.04', '50', '93', '43', '0.06', '50']\n", + "['AAPL', '2024-12-13', '210.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:55:00.206', '17.53', '19.70', '17.53', '18.80', '85', '18', '3', '7', '17.80', '50', '3', '7', '20.55', '50']\n", + "['AAPL', '2024-12-06', '270.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '42.20', '50', '30', '76', '43.75', '50']\n", + "['AAPL', '2026-06-18', '20.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '36', '7', '0.01', '50', '10', '1', '0.10', '50']\n", + "['AAPL', '2025-02-21', '175.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:15:20.117', '0.60', '0.60', '0.55', '0.55', '66', '6', '46', '4', '0.50', '50', '14', '42', '0.54', '50']\n", + "['AAPL', '2026-12-18', '85.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '24', '7', '146.75', '50', '20', '22', '150.30', '50']\n", + "['AAPL', '2024-11-29', '285.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:50:00.109', '57.55', '57.55', '57.55', '57.55', '1', '1', '30', '76', '57.20', '50', '30', '76', '58.05', '50']\n", + "['AAPL', '2025-01-17', '170.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:37:42.365', '0.22', '0.22', '0.20', '0.21', '97', '19', '51', '7', '0.20', '50', '33', '7', '0.22', '50']\n", + "['AAPL', '2024-12-20', '265.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:47:02.476', '0.13', '0.15', '0.12', '0.14', '1571', '113', '22', '46', '0.13', '50', '246', '1', '0.14', '50']\n", + "['AAPL', '2025-06-20', '135.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '75', '7', '0.45', '50', '60', '7', '0.49', '50']\n", + "['AAPL', '2027-01-15', '195.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:56:45.802', '12.49', '12.49', '12.49', '12.49', '3', '3', '65', '22', '12.20', '50', '15', '5', '12.95', '50']\n", + "['AAPL', '2024-11-08', '232.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:52.481', '0.06', '0.13', '0.03', '0.06', '29234', '2117', '25', '7', '0.05', '50', '485', '60', '0.06', '50']\n", + "['AAPL', '2026-12-18', '240.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:55:03.973', '30.06', '30.06', '29.65', '29.70', '14', '3', '9', '76', '29.40', '50', '11', '11', '29.80', '50']\n", + "['AAPL', '2026-06-18', '300.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:49:02.297', '8.65', '9.05', '8.59', '9.05', '5', '5', '20', '60', '8.95', '50', '33', '11', '9.20', '50']\n", + "['AAPL', '2024-11-29', '185.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:54:21.691', '0.09', '0.10', '0.08', '0.09', '71', '15', '18', '7', '0.09', '50', '31', '7', '0.11', '50']\n", + "['AAPL', '2024-11-15', '75.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '152.25', '50', '30', '76', '152.80', '50']\n", + "['AAPL', '2025-01-17', '100.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:54:39.275', '0.05', '0.05', '0.04', '0.05', '275', '21', '33', '7', '0.04', '50', '52', '7', '0.09', '50']\n", + "['AAPL', '2024-11-15', '120.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '56', '7', '0.10', '50']\n", + "['AAPL', '2026-06-18', '70.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '8', '7', '159.10', '50', '8', '7', '163.15', '50']\n", + "['AAPL', '2026-01-16', '185.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:20:18.482', '6.15', '6.15', '6.00', '6.00', '8', '2', '10', '76', '5.85', '50', '37', '60', '6.10', '50']\n", + "['AAPL', '2024-12-13', '230.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:50:23.163', '8.05', '8.05', '6.35', '6.65', '18', '11', '4', '7', '4.35', '50', '51', '11', '7.35', '50']\n", + "['AAPL', '2026-06-18', '95.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:29:21.212', '0.61', '0.61', '0.61', '0.61', '1', '1', '83', '7', '0.56', '50', '85', '7', '0.63', '50']\n", + "['AAPL', '2026-12-18', '360.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '27', '11', '4.90', '50', '31', '11', '5.20', '50']\n", + "['AAPL', '2024-11-08', '222.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:10.344', '2.74', '5.40', '2.74', '5.00', '4086', '1118', '11', '4', '4.85', '50', '1', '6', '5.30', '50']\n", + "['AAPL', '2026-06-18', '220.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '25', '11', '17.80', '50', '1', '1', '18.90', '50']\n", + "['AAPL', '2026-06-18', '80.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '73', '7', '0.38', '50', '111', '7', '0.44', '50']\n", + "['AAPL', '2026-06-18', '40.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '8', '7', '187.10', '50', '30', '76', '190.70', '50']\n", + "['AAPL', '2026-06-18', '230.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:49:00.046', '31.90', '32.80', '31.90', '32.47', '92', '18', '1', '46', '31.80', '50', '6', '22', '33.20', '50']\n", + "['AAPL', '2024-12-06', '295.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '67.20', '50', '30', '76', '67.95', '50']\n", + "['AAPL', '2024-12-20', '5.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:56:19.288', '221.85', '222.34', '221.85', '222.16', '52', '5', '30', '76', '222.25', '50', '27', '76', '222.80', '50']\n", + "['AAPL', '2024-11-22', '280.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '52.25', '50', '30', '76', '53.00', '50']\n", + "['AAPL', '2024-12-20', '85.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '141.75', '50', '30', '76', '143.15', '50']\n", + "['AAPL', '2025-09-19', '195.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:23:12.545', '6.00', '6.00', '5.90', '5.90', '2', '2', '39', '69', '5.80', '50', '29', '60', '6.05', '50']\n", + "['AAPL', '2025-01-17', '335.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '107.15', '50', '30', '76', '107.70', '50']\n", + "['AAPL', '2025-03-21', '225.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:13.35', '13.85', '15.37', '13.85', '15.05', '291', '85', '1', '42', '14.00', '50', '2', '69', '15.50', '50']\n", + "['AAPL', '2025-02-21', '340.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '33', '76', '0.02', '50', '27', '76', '0.15', '50']\n", + "['AAPL', '2024-11-15', '370.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '142.20', '50', '24', '47', '143.70', '50']\n", + "['AAPL', '2025-01-17', '35.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '192.50', '50', '1', '7', '194.15', '50']\n", + "['AAPL', '2026-01-16', '275.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:50:34.454', '9.50', '10.00', '9.50', '9.95', '370', '18', '12', '7', '8.15', '50', '38', '11', '10.25', '50']\n", + "['AAPL', '2025-09-19', '80.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T11:52:59.713', '0.14', '0.14', '0.14', '0.14', '1', '1', '114', '7', '0.15', '50', '118', '7', '0.20', '50']\n", + "['AAPL', '2025-08-15', '195.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:45:03.855', '5.75', '5.75', '5.30', '5.30', '29', '2', '2', '43', '5.25', '50', '26', '60', '5.40', '50']\n", + "['AAPL', '2025-04-17', '160.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '4', '7', '69.45', '50', '1', '7', '72.70', '50']\n", + "['AAPL', '2024-12-20', '190.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:46:17.347', '37.15', '38.99', '36.71', '38.99', '157', '14', '2', '47', '38.45', '50', '4', '60', '39.00', '50']\n", + "['AAPL', '2025-08-15', '155.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T10:28:03.824', '1.40', '1.40', '1.40', '1.40', '5', '1', '29', '7', '1.27', '50', '31', '7', '1.33', '50']\n", + "['AAPL', '2024-11-15', '212.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:59:00.747', '0.35', '0.35', '0.16', '0.17', '492', '161', '8', '7', '0.16', '50', '19', '7', '0.18', '50']\n", + "['AAPL', '2024-11-15', '310.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:55:00.197', '82.95', '82.95', '82.95', '82.95', '1', '1', '30', '76', '82.25', '50', '30', '76', '82.85', '50']\n", + "['AAPL', '2024-12-20', '10.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '216.85', '50', '29', '76', '217.80', '50']\n", + "['AAPL', '2025-04-17', '140.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '90.30', '50', '1', '7', '92.00', '50']\n", + "['AAPL', '2025-08-15', '275.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:41:25.957', '4.90', '5.21', '4.90', '5.21', '21', '2', '12', '60', '5.15', '50', '32', '4', '5.35', '50']\n", + "['AAPL', '2025-09-19', '280.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '33', '60', '5.25', '50', '39', '7', '5.95', '50']\n", + "['AAPL', '2024-12-20', '245.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:10.312', '0.85', '1.14', '0.85', '1.07', '3171', '392', '28', '60', '1.04', '50', '1', '7', '1.10', '50']\n", + "['AAPL', '2027-01-15', '35.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '84', '22', '0.46', '50']\n", + "['AAPL', '2024-11-15', '5.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '43', '0.00', '50', '352', '7', '0.01', '50']\n", + "['AAPL', '2026-06-18', '105.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '14', '22', '127.25', '50', '30', '76', '130.85', '50']\n", + "['AAPL', '2024-11-29', '220.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:26.095', '7.65', '9.65', '7.65', '9.45', '210', '64', '1', '1', '8.50', '50', '71', '22', '10.45', '50']\n", + "['AAPL', '2025-06-20', '330.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '5', '7', '100.75', '50', '5', '7', '104.35', '50']\n", + "['AAPL', '2026-12-18', '110.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:26:04.604', '125.60', '125.60', '125.60', '125.60', '1', '1', '9', '7', '124.50', '50', '34', '22', '128.00', '50']\n", + "['AAPL', '2026-12-18', '20.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '29', '7', '0.05', '50', '5', '7', '0.09', '50']\n", + "['AAPL', '2024-11-08', '257.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '60', '29.55', '50', '13', '60', '30.70', '50']\n", + "['AAPL', '2026-12-18', '140.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T11:56:41.448', '3.05', '3.05', '2.96', '2.96', '2', '2', '41', '7', '2.84', '50', '30', '7', '2.98', '50']\n", + "['AAPL', '2024-12-13', '215.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:55:02.482', '2.13', '2.13', '1.41', '1.44', '85', '43', '1', '7', '0.99', '50', '4', '60', '1.48', '50']\n", + "['AAPL', '2024-11-29', '155.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '71.70', '50', '30', '76', '73.15', '50']\n", + "['AAPL', '2027-01-15', '30.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '82', '22', '0.38', '50']\n", + "['AAPL', '2025-02-21', '280.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '9', '60', '52.15', '50', '2', '60', '53.35', '50']\n", + "['AAPL', '2025-01-17', '340.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:59:37.897', '0.02', '0.02', '0.02', '0.02', '2', '2', '0', '76', '0.00', '50', '15', '65', '0.02', '50']\n", + "['AAPL', '2024-12-27', '215.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '9', '14.55', '50', '20', '9', '16.95', '50']\n", + "['AAPL', '2025-02-21', '365.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '60', '137.05', '50', '9', '60', '138.40', '50']\n", + "['AAPL', '2025-02-21', '135.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '93.30', '50', '30', '76', '94.75', '50']\n", + "['AAPL', '2025-01-17', '30.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '30', '11', '0.01', '50']\n", + "['AAPL', '2027-01-15', '40.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '11', '0.00', '50', '212', '22', '0.51', '50']\n", + "['AAPL', '2024-11-08', '255.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '5', '60', '27.15', '50', '5', '60', '28.15', '50']\n", + "['AAPL', '2026-01-16', '150.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:29:41.134', '86.40', '86.77', '86.05', '86.62', '1057', '339', '297', '22', '85.70', '50', '232', '22', '87.40', '50']\n", + "['AAPL', '2026-01-16', '320.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:35:42.748', '3.00', '3.25', '3.00', '3.25', '12', '6', '30', '11', '3.15', '50', '54', '7', '3.35', '50']\n", + "['AAPL', '2024-11-15', '207.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:58:18.24', '0.16', '0.16', '0.10', '0.11', '1038', '83', '21', '7', '0.10', '50', '12', '7', '0.11', '50']\n", + "['AAPL', '2025-01-17', '335.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:56:31.562', '0.02', '0.03', '0.01', '0.03', '4', '3', '19', '7', '0.01', '50', '17', '7', '0.03', '50']\n", + "['AAPL', '2027-01-15', '440.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T09:50:11.156', '212.55', '212.55', '212.55', '212.55', '5', '1', '2', '76', '210.00', '50', '2', '76', '215.00', '50']\n", + "['AAPL', '2025-01-17', '365.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '137.15', '50', '30', '76', '137.70', '50']\n", + "['AAPL', '2025-03-21', '180.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:15:19.81', '49.65', '51.05', '49.65', '50.82', '44', '5', '30', '76', '51.35', '50', '1', '46', '51.70', '50']\n", + "['AAPL', '2025-06-20', '310.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '4', '80.60', '50', '5', '7', '84.35', '50']\n", + "['AAPL', '2024-11-08', '125.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '31', '11', '0.01', '50']\n", + "['AAPL', '2025-04-17', '265.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '4', '36.15', '50', '5', '7', '39.75', '50']\n", + "['AAPL', '2024-11-08', '295.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '9', '0.00', '50', '2280', '11', '0.01', '50']\n", + "['AAPL', '2025-03-21', '70.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '85', '7', '0.01', '50', '101', '7', '0.11', '50']\n", + "['AAPL', '2025-08-15', '160.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '27', '7', '1.51', '50', '17', '7', '1.57', '50']\n", + "['AAPL', '2025-06-20', '65.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '1', '0.07', '50', '93', '7', '0.08', '50']\n", + "['AAPL', '2024-11-08', '120.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '26', '11', '0.01', '50']\n", + "['AAPL', '2025-02-21', '255.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:37:16.22', '28.13', '28.13', '28.00', '28.00', '11', '5', '2', '69', '27.60', '50', '12', '7', '28.65', '50']\n", + "['AAPL', '2026-01-16', '120.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '60', '112.95', '50', '30', '60', '114.55', '50']\n", + "['AAPL', '2025-09-19', '40.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '6', '7', '186.25', '50', '30', '76', '189.95', '50']\n", + "['AAPL', '2024-12-13', '245.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:50:00.096', '0.65', '0.80', '0.62', '0.75', '989', '70', '4', '60', '0.71', '50', '1', '1', '0.97', '50']\n", + "['AAPL', '2024-12-06', '160.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '60', '67.30', '50', '30', '76', '68.40', '50']\n", + "['AAPL', '2025-06-20', '80.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '52', '7', '0.10', '50', '95', '7', '0.13', '50']\n", + "['AAPL', '2025-08-15', '110.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '28', '76', '120.40', '50', '28', '76', '122.35', '50']\n", + "['AAPL', '2025-02-21', '235.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:52:49.614', '7.40', '8.35', '7.29', '7.95', '2185', '252', '30', '11', '7.80', '50', '2', '65', '8.50', '50']\n", + "['AAPL', '2024-11-08', '207.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:22:31.4', '17.93', '20.20', '17.93', '20.19', '1463', '15', '30', '11', '19.85', '50', '22', '11', '20.25', '50']\n", + "['AAPL', '2024-11-15', '245.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:58:56.623', '0.05', '0.12', '0.04', '0.05', '1419', '204', '31', '47', '0.05', '50', '26', '46', '0.06', '50']\n", + "['AAPL', '2025-09-19', '190.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:16:33.325', '48.16', '48.95', '48.16', '48.85', '7', '6', '29', '11', '49.10', '50', '1', '1', '50.40', '50']\n", + "['AAPL', '2026-01-16', '285.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '60', '56.05', '50', '2', '60', '59.20', '50']\n", + "['AAPL', '2025-03-21', '120.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:40:42.142', '0.17', '0.17', '0.17', '0.17', '2', '2', '58', '7', '0.17', '50', '55', '7', '0.19', '50']\n", + "['AAPL', '2026-06-18', '205.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '5', '4', '12.65', '50', '32', '11', '13.00', '50']\n", + "['AAPL', '2026-01-16', '210.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:18:49.016', '12.39', '12.39', '11.93', '11.93', '7', '5', '10', '76', '11.80', '50', '42', '7', '12.70', '50']\n", + "['AAPL', '2025-09-19', '270.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:02:19.35', '6.85', '7.20', '6.85', '7.20', '3', '2', '15', '42', '6.25', '50', '2', '1', '8.40', '50']\n", + "['AAPL', '2024-11-22', '197.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:25:26.257', '0.11', '0.11', '0.10', '0.11', '26', '9', '31', '47', '0.09', '50', '1', '60', '0.11', '50']\n", + "['AAPL', '2025-01-17', '300.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '72.15', '50', '30', '76', '72.85', '50']\n", + "['AAPL', '2026-06-18', '115.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T11:57:24.628', '1.05', '1.05', '1.05', '1.05', '1', '1', '66', '7', '0.99', '50', '65', '7', '1.08', '50']\n", + "['AAPL', '2024-11-15', '255.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:53.645', '0.01', '0.03', '0.01', '0.02', '211', '67', '16', '7', '0.01', '50', '136', '1', '0.02', '50']\n", + "['AAPL', '2027-01-15', '120.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:56:37.239', '118.40', '118.40', '118.40', '118.40', '10', '1', '30', '76', '116.55', '50', '30', '76', '119.90', '50']\n", + "['AAPL', '2025-12-19', '205.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:54:28.97', '10.62', '10.62', '10.15', '10.15', '3', '3', '24', '76', '9.95', '50', '24', '60', '10.25', '50']\n", + "['AAPL', '2025-03-21', '140.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '89.45', '50', '3', '1', '91.65', '50']\n", + "['AAPL', '2024-11-08', '205.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:30:01.261', '21.47', '22.71', '21.47', '22.55', '130', '12', '10', '76', '22.10', '50', '12', '9', '22.95', '50']\n", + "['AAPL', '2026-06-18', '80.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '60', '150.15', '50', '30', '76', '153.80', '50']\n", + "['AAPL', '2026-01-16', '270.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:12:57.806', '10.65', '11.38', '10.65', '11.38', '14', '8', '26', '22', '10.35', '50', '34', '11', '11.55', '50']\n", + "['AAPL', '2025-01-17', '215.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:59:50.094', '3.80', '3.80', '2.64', '2.70', '2127', '262', '49', '7', '2.68', '50', '10', '76', '2.76', '50']\n", + "['AAPL', '2024-12-20', '235.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:52.696', '2.57', '3.40', '2.57', '3.30', '3863', '675', '10', '60', '3.15', '50', '8', '43', '3.35', '50']\n", + "['AAPL', '2025-01-17', '345.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '18', '76', '0.02', '50']\n", + "['AAPL', '2025-06-20', '320.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '5', '7', '90.75', '50', '5', '7', '94.35', '50']\n", + "['AAPL', '2025-02-21', '185.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:16:17.823', '43.10', '46.05', '43.10', '45.95', '85', '8', '47', '76', '45.40', '50', '10', '76', '46.05', '50']\n", + "['AAPL', '2024-11-15', '197.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:47:33.565', '0.07', '0.07', '0.06', '0.07', '8', '3', '31', '11', '0.05', '50', '6', '65', '0.07', '50']\n", + "['AAPL', '2025-08-15', '230.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '26', '60', '16.05', '50', '7', '7', '18.05', '50']\n", + "['AAPL', '2025-03-21', '300.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:36:44.167', '0.29', '0.32', '0.28', '0.32', '226', '51', '13', '11', '0.29', '50', '26', '7', '0.31', '50']\n", + "['AAPL', '2025-08-15', '140.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '6', '7', '90.80', '50', '28', '76', '93.65', '50']\n", + "['AAPL', '2024-12-20', '330.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '22', '0.00', '50', '42', '7', '0.12', '50']\n", + "['AAPL', '2025-04-17', '330.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '70', '7', '0.14', '50', '70', '7', '0.17', '50']\n", + "['AAPL', '2024-11-29', '175.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:58:51.813', '0.07', '0.07', '0.06', '0.06', '7', '2', '17', '7', '0.05', '50', '17', '7', '0.09', '50']\n", + "['AAPL', '2024-12-20', '220.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:57:48.331', '3.98', '4.03', '2.70', '2.91', '2323', '461', '10', '60', '2.57', '50', '10', '60', '2.82', '50']\n", + "['AAPL', '2024-12-20', '250.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:04.493', '0.52', '0.65', '0.47', '0.61', '2151', '302', '42', '60', '0.59', '50', '120', '7', '0.65', '50']\n", + "['AAPL', '2026-06-18', '235.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:15:26.451', '29.39', '30.50', '29.39', '30.50', '24', '7', '1', '60', '29.30', '50', '20', '76', '30.60', '50']\n", + "['AAPL', '2025-09-19', '60.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '167.30', '50', '30', '76', '170.80', '50']\n", + "['AAPL', '2025-09-19', '115.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '83', '7', '0.41', '50', '70', '7', '0.45', '50']\n", + "['AAPL', '2025-02-21', '165.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:18:29.469', '64.42', '64.42', '64.42', '64.42', '211', '4', '30', '76', '64.85', '50', '30', '76', '65.35', '50']\n", + "['AAPL', '2027-01-15', '5.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '69', '0.00', '50', '83', '4', '0.30', '50']\n", + "['AAPL', '2025-12-19', '115.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '39', '7', '0.63', '50', '70', '7', '0.67', '50']\n", + "['AAPL', '2025-03-21', '125.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '52', '7', '0.19', '50', '71', '69', '0.21', '50']\n", + "['AAPL', '2024-11-29', '230.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:01.118', '2.31', '3.30', '2.31', '3.10', '1710', '494', '1', '60', '2.43', '50', '50', '7', '3.20', '50']\n", + "['AAPL', '2024-11-15', '25.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:55:00.196', '202.43', '202.43', '202.10', '202.10', '2', '2', '30', '76', '202.25', '50', '30', '76', '202.80', '50']\n", + "['AAPL', '2024-11-29', '200.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:52:54.331', '0.21', '0.21', '0.16', '0.17', '159', '50', '1', '7', '0.17', '50', '36', '7', '0.18', '50']\n", + "['AAPL', '2024-11-15', '10.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:50:00.094', '217.50', '217.50', '217.50', '217.50', '1', '1', '30', '76', '217.25', '50', '30', '76', '217.80', '50']\n", + "['AAPL', '2025-01-17', '145.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:52:16.869', '0.12', '0.12', '0.12', '0.12', '8', '2', '38', '7', '0.12', '50', '21', '7', '0.13', '50']\n", + "['AAPL', '2027-01-15', '190.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:05:56.191', '62.70', '62.70', '62.70', '62.70', '1', '1', '8', '4', '63.25', '50', '10', '76', '64.15', '50']\n", + "['AAPL', '2024-11-08', '160.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:48:22.986', '67.39', '67.39', '67.39', '67.39', '1', '1', '30', '11', '67.00', '50', '30', '11', '68.20', '50']\n", + "['AAPL', '2027-01-15', '175.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:50:20.21', '8.10', '8.10', '7.80', '8.00', '54', '5', '35', '11', '7.55', '50', '30', '11', '8.20', '50']\n", + "['AAPL', '2025-06-20', '30.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '36', '76', '0.03', '50']\n", + "['AAPL', '2025-06-20', '60.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:47:19.814', '167.60', '168.39', '167.60', '168.39', '38', '2', '30', '76', '166.85', '50', '30', '76', '170.60', '50']\n", + "['AAPL', '2024-12-20', '75.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:41:12.356', '0.01', '0.01', '0.01', '0.01', '1', '1', '0', '7', '0.00', '50', '238', '7', '0.01', '50']\n", + "['AAPL', '2024-12-06', '105.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '121.90', '50', '30', '76', '123.10', '50']\n", + "['AAPL', '2026-12-18', '110.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '41', '7', '1.15', '50', '91', '7', '1.25', '50']\n", + "['AAPL', '2024-11-29', '265.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:09:33.841', '0.04', '0.04', '0.03', '0.03', '7', '5', '1', '1', '0.03', '50', '49', '46', '0.04', '50']\n", + "['AAPL', '2024-11-22', '175.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:55:00.197', '52.35', '52.35', '52.35', '52.35', '1', '1', '30', '76', '51.90', '50', '1', '7', '54.00', '50']\n", + "['AAPL', '2024-11-15', '5.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '221.85', '50', '30', '76', '222.80', '50']\n", + "['AAPL', '2024-12-06', '115.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '46', '0.00', '50', '15', '7', '0.24', '50']\n", + "['AAPL', '2026-01-16', '195.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:53:29.535', '47.79', '47.79', '47.79', '47.79', '1', '1', '19', '11', '49.40', '50', '1', '43', '49.85', '50']\n", + "['AAPL', '2024-11-15', '300.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:16:03.67', '0.01', '0.01', '0.01', '0.01', '6', '3', '0', '76', '0.00', '50', '127', '60', '0.01', '50']\n", + "['AAPL', '2025-06-20', '25.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '9', '7', '0.03', '50']\n", + "['AAPL', '2024-11-29', '105.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '29', '69', '0.02', '50']\n", + "['AAPL', '2025-04-17', '300.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '4', '71.05', '50', '5', '7', '74.35', '50']\n", + "['AAPL', '2024-11-15', '180.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:05:40.646', '0.03', '0.04', '0.02', '0.03', '140', '19', '7', '7', '0.02', '50', '62', '7', '0.03', '50']\n", + "['AAPL', '2025-09-19', '310.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '76', '80.00', '50', '2', '76', '85.00', '50']\n", + "['AAPL', '2024-12-06', '230.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:36.841', '3.10', '4.08', '3.10', '3.99', '1675', '367', '1', '5', '3.75', '50', '1', '7', '4.05', '50']\n", + "['AAPL', '2025-02-21', '315.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '81', '7', '0.07', '50', '79', '7', '0.10', '50']\n", + "['AAPL', '2024-12-20', '130.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:00:02.303', '96.58', '98.10', '96.58', '98.10', '66', '4', '1', '7', '96.80', '50', '30', '76', '98.50', '50']\n", + "['AAPL', '2027-01-15', '15.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '60', '0.00', '50', '223', '22', '0.30', '50']\n", + "['AAPL', '2024-12-06', '200.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:13:47.566', '26.86', '28.29', '26.86', '28.28', '15', '8', '24', '69', '28.10', '50', '6', '7', '28.75', '50']\n", + "['AAPL', '2024-11-22', '250.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:50:00.163', '0.08', '0.08', '0.06', '0.08', '184', '42', '35', '46', '0.07', '50', '69', '46', '0.08', '50']\n", + "['AAPL', '2026-12-18', '105.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '46', '7', '0.99', '50', '67', '60', '1.09', '50']\n", + "['AAPL', '2025-01-17', '40.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '38', '69', '0.02', '50']\n", + "['AAPL', '2025-02-21', '355.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '55', '7', '0.02', '50', '10', '76', '0.04', '50']\n", + "['AAPL', '2025-02-21', '275.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:55:00.727', '0.57', '0.66', '0.57', '0.62', '44', '19', '32', '47', '0.62', '50', '37', '7', '0.67', '50']\n", + "['AAPL', '2026-06-18', '230.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T09:41:33.295', '23.00', '23.00', '23.00', '23.00', '2', '2', '13', '4', '22.00', '50', '43', '11', '22.50', '50']\n", + "['AAPL', '2024-11-29', '280.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:49:02.97', '0.01', '0.01', '0.01', '0.01', '2', '1', '0', '46', '0.00', '50', '3', '7', '0.02', '50']\n", + "['AAPL', '2025-03-21', '120.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:14:36.04', '109.02', '109.02', '109.02', '109.02', '3', '3', '30', '76', '107.60', '50', '3', '1', '111.20', '50']\n", + "['AAPL', '2024-12-20', '100.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T11:47:10.682', '0.03', '0.03', '0.03', '0.03', '1', '1', '99', '31', '0.02', '50', '49', '4', '0.04', '50']\n", + "['AAPL', '2024-11-15', '207.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '40', '76', '19.55', '50', '50', '76', '20.45', '50']\n", + "['AAPL', '2024-12-20', '60.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:02:43.845', '167.32', '167.32', '167.32', '167.32', '1', '1', '30', '76', '166.95', '50', '30', '76', '168.00', '50']\n", + "['AAPL', '2024-11-08', '290.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:04:17.484', '0.01', '0.01', '0.01', '0.01', '1', '1', '0', '76', '0.00', '50', '1847', '11', '0.01', '50']\n", + "['AAPL', '2026-12-18', '260.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '20', '76', '40.50', '50', '12', '7', '42.95', '50']\n", + "['AAPL', '2026-01-16', '80.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:47:41.795', '150.31', '150.34', '150.11', '150.13', '186', '11', '21', '7', '149.05', '50', '17', '22', '151.90', '50']\n", + "['AAPL', '2025-08-15', '315.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '6', '7', '85.80', '50', '7', '7', '89.40', '50']\n", + "['AAPL', '2026-12-18', '430.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '19', '7', '1.70', '50', '20', '76', '1.88', '50']\n", + "['AAPL', '2026-01-16', '210.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:42:26.099', '37.35', '38.95', '37.35', '38.85', '27', '13', '24', '11', '38.30', '50', '32', '11', '39.40', '50']\n", + "['AAPL', '2024-12-27', '250.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:52:29.133', '0.75', '0.96', '0.66', '0.96', '274', '14', '10', '76', '0.53', '50', '20', '76', '0.97', '50']\n", + "['AAPL', '2025-06-20', '340.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:57:43.603', '0.30', '0.30', '0.30', '0.30', '10', '1', '6', '7', '0.31', '50', '53', '7', '0.33', '50']\n", + "['AAPL', '2025-08-15', '245.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:07:32.178', '24.70', '24.70', '24.60', '24.65', '25', '7', '11', '7', '22.25', '50', '7', '7', '26.10', '50']\n", + "['AAPL', '2025-03-21', '20.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '205.75', '50', '1', '7', '209.10', '50']\n", + "['AAPL', '2024-12-13', '255.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '29', '76', '27.20', '50', '6', '60', '27.85', '50']\n", + "['AAPL', '2026-12-18', '40.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '29', '7', '0.18', '50', '30', '76', '0.26', '50']\n", + "['AAPL', '2027-01-15', '300.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:03:30.031', '13.90', '14.50', '13.75', '14.50', '30', '9', '20', '7', '13.85', '50', '39', '11', '14.55', '50']\n", + "['AAPL', '2024-11-29', '270.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:06:05.604', '0.02', '0.02', '0.02', '0.02', '12', '5', '38', '42', '0.01', '50', '32', '11', '0.03', '50']\n", + "['AAPL', '2025-12-19', '30.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '196.25', '50', '30', '76', '199.85', '50']\n", + "['AAPL', '2026-06-18', '235.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '43', '23.30', '50', '24', '4', '24.95', '50']\n", + "['AAPL', '2026-12-18', '5.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '220.40', '50', '30', '76', '224.35', '50']\n", + "['AAPL', '2024-11-08', '130.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '26', '11', '0.01', '50']\n", + "['AAPL', '2025-06-20', '200.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:45:50.34', '36.35', '37.97', '36.25', '37.97', '4904', '1170', '58', '76', '36.70', '50', '1', '6', '39.85', '50']\n", + "['AAPL', '2025-02-21', '240.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:25:14.054', '17.20', '17.50', '16.10', '16.30', '77', '7', '3', '43', '13.85', '50', '15', '7', '17.30', '50']\n", + "['AAPL', '2024-11-22', '210.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:51:13.3', '16.78', '18.24', '16.25', '17.65', '109', '19', '48', '76', '17.80', '50', '20', '76', '18.30', '50']\n", + "['AAPL', '2024-11-15', '35.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '191.90', '50', '30', '76', '192.80', '50']\n", + "['AAPL', '2025-02-21', '215.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:50:18.777', '5.35', '5.35', '4.65', '4.75', '66', '49', '1', '7', '3.55', '50', '21', '11', '4.70', '50']\n", + "['AAPL', '2025-12-19', '65.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '8', '7', '162.85', '50', '17', '22', '165.85', '50']\n", + "['AAPL', '2026-01-16', '160.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T10:44:46.75', '2.93', '2.93', '2.93', '2.93', '3', '1', '40', '7', '2.73', '50', '24', '7', '2.83', '50']\n", + "['AAPL', '2025-02-21', '300.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '60', '72.10', '50', '2', '60', '73.35', '50']\n", + "['AAPL', '2025-01-17', '255.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:54:40.156', '0.78', '0.97', '0.77', '0.86', '4740', '382', '10', '60', '0.89', '50', '2', '7', '0.95', '50']\n", + "['AAPL', '2024-12-27', '270.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '11', '0.00', '50', '95', '22', '1.75', '50']\n", + "['AAPL', '2024-11-08', '185.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:46:36.687', '41.97', '42.90', '41.97', '42.75', '125', '11', '30', '11', '42.25', '50', '6', '60', '43.10', '50']\n", + "['AAPL', '2025-03-21', '220.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:43:40.393', '8.52', '8.52', '7.20', '7.20', '137', '30', '16', '46', '7.10', '50', '30', '43', '8.25', '50']\n", + "['AAPL', '2024-12-13', '235.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:42.412', '2.11', '2.72', '2.10', '2.70', '256', '104', '9', '60', '2.39', '50', '1', '60', '2.90', '50']\n", + "['AAPL', '2025-02-21', '335.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '9', '60', '107.10', '50', '10', '60', '107.85', '50']\n", + "['AAPL', '2025-08-15', '215.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:05:08.72', '29.50', '29.50', '29.50', '29.50', '1', '1', '2', '7', '29.00', '50', '30', '22', '29.75', '50']\n", + "['AAPL', '2024-12-27', '290.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '69', '0.00', '50', '91', '22', '2.14', '50']\n", + "['AAPL', '2024-12-13', '180.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '46.55', '50', '30', '76', '48.75', '50']\n", + "['AAPL', '2025-02-21', '270.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:54:11.14', '0.78', '0.91', '0.78', '0.84', '503', '60', '19', '60', '0.86', '50', '2', '6', '1.07', '50']\n", + "['AAPL', '2024-12-06', '185.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:26:00.029', '0.12', '0.14', '0.12', '0.14', '9', '3', '23', '7', '0.13', '50', '56', '7', '0.15', '50']\n", + "['AAPL', '2026-06-18', '30.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '4', '196.50', '50', '30', '76', '200.00', '50']\n", + "['AAPL', '2024-12-27', '210.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:41:40.029', '1.49', '1.71', '1.22', '1.22', '27', '7', '0', '1', '0.00', '50', '34', '11', '1.47', '50']\n", + "['AAPL', '2024-11-29', '290.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '20', '76', '0.02', '50']\n", + "['AAPL', '2024-12-20', '110.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:21:30.844', '117.59', '117.59', '117.59', '117.59', '200', '1', '30', '76', '117.80', '50', '1', '7', '119.25', '50']\n", + "['AAPL', '2024-11-08', '237.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:55:00.172', '11.86', '12.07', '10.45', '10.55', '63', '17', '10', '76', '9.80', '50', '16', '9', '10.65', '50']\n", + "['AAPL', '2026-12-18', '320.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:55:20.853', '9.75', '9.75', '9.70', '9.70', '2', '2', '21', '60', '9.65', '50', '37', '7', '10.55', '50']\n", + "['AAPL', '2024-12-06', '280.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T10:09:58.328', '0.02', '0.02', '0.01', '0.02', '9', '4', '51', '7', '0.01', '50', '1', '46', '0.02', '50']\n", + "['AAPL', '2026-12-18', '195.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T10:12:23.532', '12.60', '12.60', '12.60', '12.60', '2', '1', '7', '7', '12.10', '50', '36', '60', '12.45', '50']\n", + "['AAPL', '2024-11-15', '65.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:07:12.063', '162.70', '162.70', '162.70', '162.70', '1', '1', '30', '76', '162.25', '50', '30', '76', '162.80', '50']\n", + "['AAPL', '2024-12-20', '340.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '29', '76', '112.20', '50', '30', '76', '112.80', '50']\n", + "['AAPL', '2024-11-08', '300.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:28:08.189', '72.79', '72.79', '72.79', '72.79', '1', '1', '30', '11', '71.90', '50', '30', '11', '73.10', '50']\n", + "['AAPL', '2024-11-08', '247.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:40:35.91', '20.55', '20.55', '20.55', '20.55', '1', '1', '10', '76', '19.60', '50', '28', '69', '20.75', '50']\n", + "['AAPL', '2025-03-21', '145.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:25:23.268', '0.29', '0.29', '0.29', '0.29', '4', '1', '68', '7', '0.28', '50', '80', '7', '0.31', '50']\n", + "['AAPL', '2026-06-18', '165.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:31:21.823', '4.53', '4.53', '4.53', '4.53', '1', '1', '19', '4', '4.45', '50', '30', '47', '4.60', '50']\n", + "['AAPL', '2025-12-19', '190.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:51:07.37', '51.25', '52.46', '51.25', '52.14', '17', '9', '1', '65', '51.25', '50', '1', '65', '53.60', '50']\n", + "['AAPL', '2024-12-20', '350.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '1', '0.00', '50', '3', '1', '0.05', '50']\n", + "['AAPL', '2025-03-21', '155.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:27:36.749', '0.38', '0.39', '0.38', '0.39', '3', '2', '42', '7', '0.36', '50', '60', '7', '0.39', '50']\n", + "['AAPL', '2025-06-20', '95.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '134.10', '50', '30', '76', '136.80', '50']\n", + "['AAPL', '2026-06-18', '95.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '14', '22', '136.40', '50', '30', '76', '139.95', '50']\n", + "['AAPL', '2024-12-13', '100.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '28', '76', '0.05', '50']\n", + "['AAPL', '2024-11-08', '125.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '11', '60', '101.95', '50', '7', '60', '103.05', '50']\n", + "['AAPL', '2025-06-20', '340.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '5', '7', '110.70', '50', '5', '22', '114.45', '50']\n", + "['AAPL', '2024-11-08', '140.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:39:04.457', '87.25', '87.67', '87.25', '87.45', '28', '9', '30', '11', '87.15', '50', '11', '60', '88.05', '50']\n", + "['AAPL', '2025-08-15', '265.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '76', '38.35', '50', '21', '7', '39.50', '50']\n", + "['AAPL', '2024-11-08', '170.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:31:53.782', '55.68', '57.65', '55.68', '57.54', '226', '21', '30', '11', '57.25', '50', '4', '60', '57.95', '50']\n", + "['AAPL', '2024-11-22', '295.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '60', '0.00', '50', '32', '7', '0.31', '50']\n", + "['AAPL', '2024-11-29', '150.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T11:21:20.031', '0.04', '0.04', '0.04', '0.04', '10', '2', '0', '46', '0.00', '50', '31', '4', '0.22', '50']\n", + "['AAPL', '2025-06-20', '90.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '139.00', '50', '1', '7', '141.25', '50']\n", + "['AAPL', '2024-11-29', '215.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:51:46.303', '12.65', '13.98', '11.85', '13.45', '42', '16', '3', '7', '12.00', '50', '1', '1', '14.90', '50']\n", + "['AAPL', '2024-12-20', '225.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:59:43.767', '5.99', '5.99', '4.25', '4.34', '4684', '388', '1', '1', '4.00', '50', '10', '60', '4.60', '50']\n", + "['AAPL', '2024-12-06', '285.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '57.20', '50', '21', '47', '58.75', '50']\n", + "['AAPL', '2024-11-22', '295.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '67.20', '50', '30', '76', '68.00', '50']\n", + "['AAPL', '2026-06-18', '65.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '36', '7', '0.25', '50', '36', '7', '0.34', '50']\n", + "['AAPL', '2024-12-20', '45.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '182.35', '50', '30', '76', '182.90', '50']\n", + "['AAPL', '2026-01-16', '50.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:15:50.867', '179.20', '179.20', '179.15', '179.15', '2', '2', '7', '7', '177.25', '50', '18', '22', '180.35', '50']\n", + "['AAPL', '2025-12-19', '170.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:36:26.064', '4.00', '4.00', '3.60', '3.60', '42', '4', '18', '47', '3.50', '50', '30', '76', '3.65', '50']\n", + "['AAPL', '2024-11-22', '170.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:31:53.782', '57.07', '57.85', '57.07', '57.77', '26', '5', '30', '76', '56.95', '50', '29', '76', '58.05', '50']\n", + "['AAPL', '2025-04-17', '290.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:36:57.614', '0.77', '0.81', '0.77', '0.81', '6', '6', '67', '5', '0.76', '50', '29', '42', '0.81', '50']\n", + "['AAPL', '2024-11-15', '202.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:52:41.893', '24.45', '24.45', '24.43', '24.43', '2', '2', '1', '7', '23.50', '50', '2', '7', '25.45', '50']\n", + "['AAPL', '2025-12-19', '310.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:50:00.166', '3.50', '3.71', '3.50', '3.70', '23', '12', '18', '11', '3.65', '50', '38', '76', '3.80', '50']\n", + "['AAPL', '2025-12-19', '175.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:38:33.134', '4.16', '4.20', '4.16', '4.20', '265', '19', '18', '43', '4.10', '50', '30', '11', '4.25', '50']\n", + "['AAPL', '2025-04-17', '185.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T11:00:28.946', '1.74', '1.74', '1.74', '1.74', '21', '2', '41', '5', '1.62', '50', '30', '60', '1.70', '50']\n", + "['AAPL', '2025-08-15', '135.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '57', '4', '0.62', '50', '27', '4', '0.70', '50']\n", + "['AAPL', '2024-11-15', '305.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '37', '76', '0.01', '50']\n", + "['AAPL', '2025-03-21', '320.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '9', '60', '92.10', '50', '2', '60', '93.30', '50']\n", + "['AAPL', '2025-03-21', '350.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '87', '4', '0.05', '50', '34', '7', '0.07', '50']\n", + "['AAPL', '2024-12-20', '290.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '62.20', '50', '30', '76', '62.85', '50']\n", + "['AAPL', '2024-11-15', '217.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:59:08.955', '0.81', '0.81', '0.33', '0.37', '4252', '542', '1', '31', '0.30', '50', '35', '60', '0.37', '50']\n", + "['AAPL', '2025-01-17', '60.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '69', '0.00', '50', '130', '22', '0.13', '50']\n", + "['AAPL', '2025-04-17', '130.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '98.40', '50', '14', '7', '102.00', '50']\n", + "['AAPL', '2025-01-17', '185.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:10:41.726', '42.95', '44.65', '42.68', '44.64', '70', '12', '1', '60', '43.60', '50', '1', '7', '45.00', '50']\n", + "['AAPL', '2025-01-17', '50.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:15:24.199', '177.70', '177.70', '177.70', '177.70', '6', '1', '30', '76', '177.65', '50', '2', '7', '179.20', '50']\n", + "['AAPL', '2024-11-08', '230.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:58:59.699', '6.20', '6.20', '2.59', '2.98', '1759', '385', '1', '7', '2.55', '50', '2', '7', '3.75', '50']\n", + "['AAPL', '2025-03-21', '215.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:46:59.977', '21.00', '22.00', '20.27', '21.87', '75', '22', '4', '76', '21.60', '50', '1', '46', '22.55', '50']\n", + "['AAPL', '2025-06-20', '100.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T10:57:40.56', '128.80', '128.80', '128.80', '128.80', '2', '1', '30', '76', '129.35', '50', '27', '60', '130.60', '50']\n", + "['AAPL', '2024-11-29', '125.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '43', '0.00', '50', '20', '76', '0.25', '50']\n", + "['AAPL', '2024-11-15', '35.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '504', '7', '0.01', '50']\n", + "['AAPL', '2024-11-15', '230.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:59.83', '1.02', '1.72', '0.98', '1.55', '26184', '4609', '23', '60', '1.53', '50', '5', '7', '1.67', '50']\n", + "['AAPL', '2025-06-20', '170.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:21:30.796', '63.45', '63.76', '63.44', '63.76', '55', '17', '30', '76', '63.40', '50', '2', '22', '63.90', '50']\n", + "['AAPL', '2025-08-15', '115.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '38', '4', '0.34', '50', '38', '7', '0.40', '50']\n", + "['AAPL', '2025-04-17', '340.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '4', '111.00', '50', '4', '7', '114.30', '50']\n", + "['AAPL', '2024-11-22', '100.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '125.50', '50', '30', '76', '127.85', '50']\n", + "['AAPL', '2024-11-08', '285.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '11', '57.00', '50', '30', '11', '58.20', '50']\n", + "['AAPL', '2024-12-13', '165.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '62.10', '50', '30', '76', '63.60', '50']\n", + "['AAPL', '2025-12-19', '170.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:42:29.607', '67.90', '67.90', '67.90', '67.90', '5', '1', '21', '47', '68.30', '50', '1', '7', '69.80', '50']\n", + "['AAPL', '2026-06-18', '100.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '60', '132.55', '50', '31', '22', '135.05', '50']\n", + "['AAPL', '2025-12-19', '155.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '18', '76', '81.20', '50', '9', '76', '81.75', '50']\n", + "['AAPL', '2025-04-17', '145.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:52:02.911', '85.30', '85.30', '85.30', '85.30', '28', '1', '30', '76', '84.90', '50', '30', '76', '87.45', '50']\n", + "['AAPL', '2025-04-17', '215.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:58:49.568', '7.40', '7.40', '6.60', '6.60', '32', '10', '4', '9', '6.50', '50', '34', '11', '6.70', '50']\n", + "['AAPL', '2026-01-16', '160.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:51:58.317', '76.00', '77.65', '76.00', '77.65', '5', '5', '10', '76', '77.50', '50', '9', '76', '78.10', '50']\n", + "['AAPL', '2024-11-15', '200.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:18.641', '25.83', '27.87', '25.67', '27.57', '615', '82', '30', '76', '26.45', '50', '1', '7', '28.65', '50']\n", + "['AAPL', '2025-06-20', '200.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:22:32.087', '5.58', '5.58', '4.95', '5.00', '5171', '1190', '32', '7', '4.70', '50', '20', '60', '5.10', '50']\n", + "['AAPL', '2026-01-16', '235.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:09:05.3', '22.15', '22.15', '22.15', '22.15', '4', '1', '9', '42', '21.75', '50', '30', '11', '23.85', '50']\n", + "['AAPL', '2024-11-29', '130.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '95.90', '50', '30', '76', '98.05', '50']\n", + "['AAPL', '2026-06-18', '250.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:47:51.638', '23.10', '23.55', '22.80', '23.55', '4', '4', '6', '11', '23.45', '50', '2', '60', '23.75', '50']\n", + "['AAPL', '2024-11-15', '245.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '42', '16.30', '50', '46', '76', '17.90', '50']\n", + "['AAPL', '2024-12-13', '235.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:50:10.307', '11.21', '11.21', '9.75', '9.75', '9', '5', '5', '22', '7.60', '50', '106', '11', '9.65', '50']\n", + "['AAPL', '2027-01-15', '450.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:53:10.238', '1.50', '1.53', '1.41', '1.41', '130', '33', '30', '11', '1.41', '50', '19', '60', '1.50', '50']\n", + "['AAPL', '2026-06-18', '275.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '44', '9', '48.40', '50', '56', '4', '51.45', '50']\n", + "['AAPL', '2025-04-17', '195.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:48:10.522', '3.24', '3.24', '2.59', '2.59', '33', '9', '62', '43', '2.58', '50', '30', '11', '2.69', '50']\n", + "['AAPL', '2024-12-20', '200.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:54:40.114', '26.50', '29.20', '26.50', '28.50', '465', '45', '1', '22', '28.85', '50', '1', '22', '29.20', '50']\n", + "['AAPL', '2026-01-16', '135.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '8', '7', '98.05', '50', '32', '22', '100.75', '50']\n", + "['AAPL', '2024-11-22', '195.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:50:56.447', '0.11', '0.11', '0.09', '0.10', '62', '18', '29', '7', '0.09', '50', '39', '7', '0.11', '50']\n", + "['AAPL', '2025-01-17', '75.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '61', '7', '0.01', '50', '31', '11', '0.04', '50']\n", + "['AAPL', '2025-06-20', '10.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '40', '76', '0.02', '50']\n", + "['AAPL', '2027-01-15', '125.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '17', '22', '112.00', '50', '30', '60', '116.00', '50']\n", + "['AAPL', '2026-12-18', '130.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '108.00', '50', '34', '22', '110.45', '50']\n", + "['AAPL', '2026-01-16', '80.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '101', '7', '0.27', '50', '20', '11', '0.29', '50']\n", + "['AAPL', '2026-12-18', '230.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T11:47:00.825', '25.21', '25.21', '25.21', '25.21', '10', '1', '20', '76', '24.50', '50', '10', '76', '25.00', '50']\n", + "['AAPL', '2025-09-19', '105.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '124.55', '50', '32', '60', '127.95', '50']\n", + "['AAPL', '2025-08-15', '255.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '20', '76', '30.35', '50', '16', '11', '31.65', '50']\n", + "['AAPL', '2025-12-19', '80.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:47:41.795', '149.95', '149.96', '149.74', '149.83', '186', '11', '7', '7', '148.75', '50', '7', '7', '152.70', '50']\n", + "['AAPL', '2024-11-22', '212.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:57:05.696', '0.53', '0.57', '0.36', '0.37', '180', '49', '19', '7', '0.34', '50', '10', '7', '0.40', '50']\n", + "['AAPL', '2025-12-19', '200.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T11:28:50.101', '9.21', '9.25', '9.02', '9.02', '40', '7', '31', '11', '8.65', '50', '15', '11', '8.85', '50']\n", + "['AAPL', '2026-06-18', '90.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '84', '7', '0.49', '50', '94', '7', '0.55', '50']\n", + "['AAPL', '2024-11-22', '270.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '42.25', '50', '30', '76', '42.95', '50']\n", + "['AAPL', '2024-12-06', '155.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:34:58.008', '71.40', '71.40', '71.40', '71.40', '56', '1', '5', '60', '72.70', '50', '30', '76', '73.35', '50']\n", + "['AAPL', '2025-03-21', '130.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:12:37.59', '0.21', '0.22', '0.20', '0.21', '263', '14', '57', '7', '0.21', '50', '53', '7', '0.23', '50']\n", + "['AAPL', '2025-09-19', '40.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '41', '7', '0.01', '50', '18', '11', '0.05', '50']\n", + "['AAPL', '2025-03-21', '250.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:56.536', '4.35', '4.80', '4.20', '4.75', '822', '121', '10', '60', '4.50', '50', '10', '7', '4.80', '50']\n", + "['AAPL', '2024-11-15', '140.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '10', '76', '0.02', '50']\n", + "['AAPL', '2027-01-15', '400.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '76', '170.00', '50', '2', '76', '175.00', '50']\n", + "['AAPL', '2024-11-08', '250.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:42:12.695', '0.01', '0.01', '0.01', '0.01', '214', '15', '0', '22', '0.00', '50', '1150', '11', '0.01', '50']\n", + "['AAPL', '2024-11-08', '217.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:57:53.301', '0.09', '0.10', '0.03', '0.03', '4742', '664', '62', '7', '0.03', '50', '19', '11', '0.04', '50']\n", + "['AAPL', '2024-11-15', '215.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:51.929', '11.35', '13.07', '10.70', '12.91', '946', '106', '2', '7', '11.55', '50', '30', '76', '13.85', '50']\n", + "['AAPL', '2025-01-17', '150.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:21:23.729', '78.64', '78.64', '78.64', '78.64', '1', '1', '30', '76', '78.85', '50', '13', '22', '79.35', '50']\n", + "['AAPL', '2025-12-19', '330.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '60', '101.30', '50', '21', '60', '103.90', '50']\n", + "['AAPL', '2025-08-15', '185.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:37:11.785', '51.80', '51.80', '51.80', '51.80', '1', '1', '1', '60', '51.00', '50', '10', '76', '52.50', '50']\n", + "['AAPL', '2026-01-16', '140.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:59:14.415', '93.95', '95.55', '93.80', '95.55', '52', '4', '30', '60', '95.05', '50', '30', '60', '96.20', '50']\n", + "['AAPL', '2025-06-20', '35.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '22', '191.15', '50', '27', '76', '194.35', '50']\n", + "['AAPL', '2024-12-06', '235.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:37.331', '1.59', '2.18', '1.54', '2.11', '1039', '317', '5', '60', '1.95', '50', '5', '1', '2.20', '50']\n", + "['AAPL', '2024-12-20', '295.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '18', '7', '0.02', '50', '73', '46', '0.03', '50']\n", + "['AAPL', '2025-08-15', '285.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:42:51.751', '3.55', '3.55', '3.55', '3.55', '19', '1', '31', '11', '3.65', '50', '39', '11', '3.80', '50']\n", + "['AAPL', '2024-12-20', '165.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:39:06.98', '62.89', '63.33', '62.89', '63.33', '212', '4', '30', '76', '62.25', '50', '14', '22', '64.50', '50']\n", + "['AAPL', '2026-01-16', '250.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:49:35.905', '17.40', '18.20', '17.10', '18.20', '310', '37', '10', '76', '17.95', '50', '1', '7', '19.20', '50']\n", + "['AAPL', '2025-06-20', '230.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:52:56.268', '15.25', '15.25', '14.50', '14.75', '64', '38', '26', '11', '14.40', '50', '6', '7', '16.40', '50']\n", + "['AAPL', '2024-11-15', '252.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:35:15.266', '0.02', '0.03', '0.01', '0.02', '189', '35', '37', '6', '0.01', '50', '9', '31', '0.02', '50']\n", + "['AAPL', '2025-09-19', '250.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:28:33.694', '12.85', '13.20', '12.70', '13.20', '72', '14', '30', '11', '12.15', '50', '10', '11', '13.30', '50']\n", + "['AAPL', '2025-12-19', '165.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '22', '72.70', '50', '1', '22', '73.10', '50']\n", + "['AAPL', '2025-02-21', '220.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:50:11.208', '15.80', '16.66', '15.13', '16.00', '1099', '80', '10', '7', '15.30', '50', '1', '69', '16.70', '50']\n", + "['AAPL', '2025-06-20', '80.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:02:43.33', '149.30', '149.30', '149.30', '149.30', '16', '1', '30', '76', '147.50', '50', '5', '7', '151.20', '50']\n", + "['AAPL', '2027-01-15', '70.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '569', '22', '0.08', '50', '451', '22', '0.84', '50']\n", + "['AAPL', '2025-01-17', '230.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:59.928', '6.48', '7.66', '6.48', '7.55', '4046', '858', '1', '60', '7.25', '50', '1', '1', '7.70', '50']\n", + "['AAPL', '2026-01-16', '260.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:55:03.677', '13.85', '14.35', '13.80', '14.35', '163', '19', '1', '47', '13.30', '50', '30', '11', '14.55', '50']\n", + "['AAPL', '2026-01-16', '65.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '126', '7', '0.17', '50', '27', '4', '0.20', '50']\n", + "['AAPL', '2025-04-17', '295.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '4', '66.05', '50', '5', '7', '69.35', '50']\n", + "['AAPL', '2025-12-19', '205.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:41:07.075', '39.65', '41.00', '39.65', '41.00', '4', '4', '10', '7', '39.60', '50', '2', '43', '41.75', '50']\n", + "['AAPL', '2025-01-17', '225.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:57.806', '9.35', '10.50', '9.13', '10.30', '2215', '432', '1', '1', '9.40', '50', '32', '7', '10.50', '50']\n", + "['AAPL', '2024-12-13', '190.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '15', '7', '38.20', '50', '8', '69', '38.85', '50']\n", + "['AAPL', '2025-04-17', '305.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:33:25.934', '0.38', '0.38', '0.38', '0.38', '1', '1', '44', '11', '0.35', '50', '48', '43', '0.43', '50']\n", + "['AAPL', '2024-11-22', '225.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:53.792', '3.80', '5.40', '3.80', '5.28', '1607', '386', '1', '7', '3.70', '50', '10', '76', '5.45', '50']\n", + "['AAPL', '2024-11-08', '165.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '11', '0.00', '50', '450', '11', '0.01', '50']\n", + "['AAPL', '2026-12-18', '95.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '4', '138.00', '50', '30', '76', '141.65', '50']\n", + "['AAPL', '2024-11-29', '255.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:31:26.499', '0.08', '0.09', '0.07', '0.08', '268', '27', '17', '11', '0.07', '50', '32', '47', '0.08', '50']\n", + "['AAPL', '2025-09-19', '270.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '25', '4', '42.85', '50', '35', '4', '44.05', '50']\n", + "['AAPL', '2025-08-15', '340.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '38', '7', '0.59', '50', '24', '7', '0.63', '50']\n", + "['AAPL', '2025-01-17', '295.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:23:41.253', '0.06', '0.06', '0.06', '0.06', '1', '1', '27', '7', '0.06', '50', '34', '7', '0.07', '50']\n", + "['AAPL', '2027-01-15', '95.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '7', '0.36', '50', '35', '11', '0.95', '50']\n", + "['AAPL', '2024-11-08', '197.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:41:32.176', '29.54', '29.54', '29.54', '29.54', '10', '1', '4', '60', '29.45', '50', '10', '60', '30.75', '50']\n", + "['AAPL', '2026-01-16', '85.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '22', '0.00', '50', '101', '4', '0.34', '50']\n", + "['AAPL', '2024-12-20', '290.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:12:22.021', '0.03', '0.03', '0.02', '0.02', '7', '2', '44', '7', '0.02', '50', '30', '11', '0.10', '50']\n", + "['AAPL', '2025-02-21', '185.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:32:06.07', '0.96', '0.96', '0.85', '0.85', '5', '3', '31', '47', '0.81', '50', '11', '42', '0.86', '50']\n", + "['AAPL', '2024-11-08', '227.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:59:53.742', '3.40', '3.40', '1.00', '1.12', '12038', '2203', '1', '7', '1.00', '50', '18', '11', '1.25', '50']\n", + "['AAPL', '2024-12-20', '330.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '29', '76', '102.20', '50', '30', '76', '102.80', '50']\n", + "['AAPL', '2025-04-17', '120.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '7', '0.18', '50', '50', '11', '0.23', '50']\n", + "['AAPL', '2025-09-19', '15.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '10', '4', '0.03', '50']\n", + "['AAPL', '2024-11-29', '185.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:47:37.585', '41.06', '43.18', '41.06', '43.18', '9', '5', '15', '69', '42.70', '50', '12', '69', '43.30', '50']\n", + "['AAPL', '2025-03-21', '150.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:50:10.729', '78.75', '79.54', '78.75', '79.54', '5', '2', '30', '76', '79.70', '50', '3', '1', '81.95', '50']\n", + "['AAPL', '2025-04-17', '180.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:00:17.817', '50.85', '52.30', '50.85', '52.30', '41', '11', '20', '76', '52.35', '50', '1', '46', '53.65', '50']\n", + "['AAPL', '2025-01-17', '275.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:17.116', '0.18', '0.19', '0.17', '0.18', '92', '27', '47', '7', '0.17', '50', '32', '7', '0.19', '50']\n", + "['AAPL', '2024-12-06', '150.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '77.25', '50', '30', '76', '78.35', '50']\n", + "['AAPL', '2024-12-06', '240.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:32.499', '0.90', '1.09', '0.82', '1.06', '807', '181', '7', '60', '0.99', '50', '1', '7', '1.10', '50']\n", + "['AAPL', '2024-11-15', '135.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:00:01.713', '92.00', '92.45', '91.91', '92.45', '320', '20', '30', '76', '92.35', '50', '30', '76', '92.80', '50']\n", + "['AAPL', '2025-08-15', '195.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '5', '22', '42.05', '50', '7', '7', '45.85', '50']\n", + "['AAPL', '2025-02-21', '195.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:49:50.476', '34.10', '36.70', '34.10', '36.70', '16', '7', '20', '76', '36.35', '50', '23', '22', '37.35', '50']\n", + "['AAPL', '2025-06-20', '100.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:51:54.473', '0.19', '0.19', '0.19', '0.19', '1', '1', '93', '7', '0.18', '50', '49', '7', '0.21', '50']\n", + "['AAPL', '2025-06-20', '150.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:57:20.839', '0.84', '0.85', '0.77', '0.77', '566', '33', '32', '7', '0.74', '50', '34', '7', '0.78', '50']\n", + "['AAPL', '2024-11-29', '275.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '47.25', '50', '2', '60', '47.95', '50']\n", + "['AAPL', '2024-11-29', '145.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '32', '4', '0.24', '50']\n", + "['AAPL', '2024-11-29', '135.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '91.85', '50', '30', '76', '93.10', '50']\n", + "['AAPL', '2026-01-16', '190.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:45:37.243', '52.00', '53.56', '52.00', '53.56', '5', '5', '1', '69', '52.40', '50', '9', '76', '55.25', '50']\n", + "['AAPL', '2025-03-21', '5.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '1', '0.00', '50', '502', '60', '0.01', '50']\n", + "['AAPL', '2025-03-21', '220.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:30:40.557', '17.20', '18.40', '16.90', '18.34', '518', '102', '5', '7', '16.70', '50', '6', '76', '18.50', '50']\n", + "['AAPL', '2024-11-15', '225.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:55.049', '2.84', '4.40', '2.79', '4.25', '10725', '2081', '6', '60', '3.40', '50', '1', '7', '4.30', '50']\n", + "['AAPL', '2026-12-18', '120.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '44', '11', '1.56', '50', '53', '7', '1.67', '50']\n", + "['AAPL', '2025-08-15', '180.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T10:57:30.068', '55.16', '55.16', '55.16', '55.16', '1', '1', '6', '7', '54.40', '50', '6', '7', '58.30', '50']\n", + "['AAPL', '2025-06-20', '155.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:31:59.127', '75.25', '75.25', '75.25', '75.25', '1', '1', '1', '22', '75.45', '50', '21', '22', '77.90', '50']\n", + "['AAPL', '2024-12-06', '170.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '17', '7', '0.07', '50', '20', '7', '0.11', '50']\n", + "['AAPL', '2025-01-17', '370.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '36', '11', '0.02', '50']\n", + "['AAPL', '2025-03-21', '235.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:55:00.193', '15.20', '15.20', '13.85', '14.15', '60', '10', '15', '11', '13.75', '50', '30', '11', '16.00', '50']\n", + "['AAPL', '2024-11-22', '240.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:43:57.469', '14.70', '14.90', '12.65', '12.65', '107', '47', '6', '7', '11.20', '50', '45', '76', '13.05', '50']\n", + "['AAPL', '2024-11-08', '115.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '11', '111.95', '50', '30', '11', '113.05', '50']\n", + "['AAPL', '2024-11-08', '230.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:59.927', '0.16', '0.37', '0.14', '0.29', '69258', '8921', '20', '60', '0.28', '50', '15', '60', '0.30', '50']\n", + "['AAPL', '2025-09-19', '85.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '114', '7', '0.18', '50', '94', '7', '0.22', '50']\n", + "['AAPL', '2024-12-06', '205.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:42:04.538', '0.62', '0.62', '0.38', '0.39', '52', '28', '17', '7', '0.36', '50', '23', '7', '0.39', '50']\n", + "['AAPL', '2027-01-15', '210.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:51:15.439', '49.50', '50.60', '49.50', '50.60', '17', '7', '35', '22', '50.35', '50', '20', '76', '51.45', '50']\n", + "['AAPL', '2027-01-15', '110.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '42', '0.97', '50', '31', '5', '1.44', '50']\n", + "['AAPL', '2024-12-20', '255.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:31.827', '0.28', '0.38', '0.28', '0.35', '2211', '200', '42', '60', '0.34', '50', '7', '7', '0.36', '50']\n", + "['AAPL', '2024-11-15', '285.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '29', '76', '57.25', '50', '30', '76', '57.85', '50']\n", + "['AAPL', '2025-03-21', '90.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '44', '7', '0.05', '50', '31', '11', '0.10', '50']\n", + "['AAPL', '2025-01-17', '60.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:47:19.814', '166.85', '167.86', '166.68', '167.86', '57', '6', '30', '76', '167.50', '50', '30', '76', '169.25', '50']\n", + "['AAPL', '2026-06-18', '25.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '9', '7', '201.05', '50', '8', '7', '204.65', '50']\n", + "['AAPL', '2024-11-29', '100.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '31', '0.00', '50', '14', '42', '0.28', '50']\n", + "['AAPL', '2025-12-19', '215.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:20:57.116', '33.90', '35.10', '33.85', '35.10', '22', '9', '2', '11', '32.50', '50', '11', '5', '35.15', '50']\n", + "['AAPL', '2024-12-20', '320.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:48:04.385', '0.01', '0.01', '0.01', '0.01', '50', '7', '0', '76', '0.00', '50', '35', '11', '0.02', '50']\n", + "['AAPL', '2026-12-18', '330.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '100.65', '50', '7', '7', '104.60', '50']\n", + "['AAPL', '2024-12-20', '75.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:02:43.33', '152.80', '152.80', '152.80', '152.80', '16', '1', '2', '7', '151.20', '50', '30', '76', '153.10', '50']\n", + "['AAPL', '2025-03-21', '40.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '186.00', '50', '7', '7', '189.60', '50']\n", + "['AAPL', '2024-12-06', '220.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:43:05.437', '8.65', '10.26', '8.65', '10.20', '206', '46', '1', '43', '9.10', '50', '1', '11', '11.25', '50']\n", + "['AAPL', '2025-02-21', '245.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:50:28.132', '4.30', '4.70', '4.05', '4.40', '1950', '119', '30', '11', '3.80', '50', '5', '31', '5.00', '50']\n", + "['AAPL', '2026-12-18', '40.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '8', '7', '187.55', '50', '7', '7', '191.15', '50']\n", + "['AAPL', '2025-09-19', '260.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '18', '60', '34.60', '50', '116', '4', '36.35', '50']\n", + "['AAPL', '2024-11-15', '185.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:38:00.726', '41.00', '42.75', '40.65', '42.50', '254', '19', '30', '76', '42.40', '50', '4', '60', '42.80', '50']\n", + "['AAPL', '2025-04-17', '275.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:15:15.668', '1.61', '1.65', '1.52', '1.65', '162', '14', '23', '60', '1.65', '50', '31', '7', '2.01', '50']\n", + "['AAPL', '2024-12-13', '120.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '46', '0.00', '50', '19', '69', '0.21', '50']\n", + "['AAPL', '2026-06-18', '240.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:46:48.607', '27.27', '28.08', '27.27', '28.05', '101', '17', '1', '11', '27.85', '50', '20', '76', '28.20', '50']\n", + "['AAPL', '2026-12-18', '85.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '69', '0.62', '50', '32', '7', '0.67', '50']\n", + "['AAPL', '2024-12-27', '155.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:11:02.815', '73.23', '73.23', '73.23', '73.23', '2', '2', '30', '76', '71.60', '50', '30', '76', '75.00', '50']\n", + "['AAPL', '2025-03-21', '80.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '148.45', '50', '1', '7', '150.15', '50']\n", + "['AAPL', '2025-09-19', '125.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:26:50.446', '106.96', '106.96', '106.96', '106.96', '8', '1', '7', '7', '105.20', '50', '30', '76', '109.25', '50']\n", + "['AAPL', '2025-03-21', '290.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T10:35:44.607', '64.58', '64.58', '64.58', '64.58', '1', '1', '4', '60', '62.10', '50', '2', '60', '63.35', '50']\n", + "['AAPL', '2026-06-18', '60.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '26', '22', '168.50', '50', '8', '7', '172.25', '50']\n", + "['AAPL', '2026-06-18', '35.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '9', '7', '191.75', '50', '30', '76', '195.35', '50']\n", + "['AAPL', '2024-11-29', '190.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:37:59.737', '37.48', '37.97', '37.48', '37.97', '17', '3', '13', '76', '37.70', '50', '7', '7', '38.35', '50']\n", + "['AAPL', '2025-06-20', '125.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '81', '7', '0.34', '50', '56', '7', '0.37', '50']\n", + "['AAPL', '2024-11-15', '295.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '29', '76', '0.01', '50']\n", + "['AAPL', '2024-11-15', '192.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:42:40.4', '34.97', '34.97', '34.51', '34.51', '9', '3', '30', '76', '34.50', '50', '30', '76', '35.40', '50']\n", + "['AAPL', '2025-08-15', '270.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '12', '60', '42.70', '50', '20', '76', '43.60', '50']\n", + "['AAPL', '2024-12-13', '110.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '117.20', '50', '30', '76', '118.25', '50']\n", + "['AAPL', '2024-12-20', '160.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:43:55.586', '65.25', '68.60', '65.25', '68.60', '61', '4', '1', '60', '67.30', '50', '1', '46', '69.35', '50']\n", + "['AAPL', '2025-03-21', '135.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:24:15.081', '0.24', '0.24', '0.24', '0.24', '52', '19', '64', '7', '0.23', '50', '42', '7', '0.25', '50']\n", + "['AAPL', '2026-06-18', '220.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:25:20.365', '37.51', '38.60', '37.51', '38.60', '7', '6', '1', '42', '37.25', '50', '1', '42', '39.65', '50']\n", + "['AAPL', '2025-02-21', '335.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '219', '4', '0.03', '50', '16', '4', '0.06', '50']\n", + "['AAPL', '2026-12-18', '145.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '7', '96.25', '50', '47', '76', '97.35', '50']\n", + "['AAPL', '2025-09-19', '110.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '78', '7', '0.36', '50', '98', '7', '0.40', '50']\n", + "['AAPL', '2025-02-21', '310.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '60', '82.10', '50', '8', '60', '83.35', '50']\n", + "['AAPL', '2025-01-17', '35.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '20', '76', '0.01', '50']\n", + "['AAPL', '2024-12-27', '220.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:42:59.555', '4.00', '4.00', '3.11', '3.11', '10', '5', '355', '9', '2.29', '50', '1', '1', '5.00', '50']\n", + "['AAPL', '2026-06-18', '140.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T11:59:58.693', '2.19', '2.19', '2.19', '2.19', '1', '1', '27', '7', '2.13', '50', '25', '7', '2.22', '50']\n", + "['AAPL', '2024-12-13', '160.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '67.55', '50', '30', '76', '68.55', '50']\n", + "['AAPL', '2025-09-19', '220.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:34:04.798', '12.95', '13.05', '12.85', '12.85', '119', '22', '1', '7', '11.70', '50', '8', '7', '14.75', '50']\n", + "['AAPL', '2025-12-19', '225.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:31:53.073', '17.56', '17.56', '17.00', '17.00', '26', '12', '9', '5', '16.75', '50', '9', '7', '18.80', '50']\n", + "['AAPL', '2025-08-15', '205.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:37:22.62', '35.33', '35.33', '35.33', '35.33', '1', '1', '9', '7', '34.50', '50', '46', '4', '36.70', '50']\n", + "['AAPL', '2025-08-15', '280.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '6', '7', '50.80', '50', '1', '6', '54.65', '50']\n", + "['AAPL', '2025-01-17', '370.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '142.15', '50', '30', '76', '142.70', '50']\n", + "['AAPL', '2024-12-13', '155.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '60', '72.45', '50', '30', '76', '73.55', '50']\n", + "['AAPL', '2025-12-19', '350.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '13', '60', '120.95', '50', '8', '60', '123.90', '50']\n", + "['AAPL', '2024-12-13', '200.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:58:37.189', '0.47', '0.47', '0.33', '0.36', '32', '22', '9', '7', '0.32', '50', '9', '7', '0.37', '50']\n", + "['AAPL', '2026-12-18', '50.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '4', '178.50', '50', '19', '22', '181.95', '50']\n", + "['AAPL', '2025-03-21', '205.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:12:48.008', '28.32', '29.20', '28.03', '29.20', '24', '13', '10', '4', '29.20', '50', '5', '7', '31.25', '50']\n", + "['AAPL', '2025-03-21', '225.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:43:48.806', '10.50', '10.50', '9.05', '9.05', '54', '23', '3', '6', '8.20', '50', '1', '60', '10.15', '50']\n", + "['AAPL', '2025-01-17', '135.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:01:48.976', '93.00', '93.75', '93.00', '93.75', '52', '3', '30', '76', '93.60', '50', '9', '60', '94.15', '50']\n", + "['AAPL', '2025-01-17', '120.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:43:17.118', '106.69', '107.55', '106.69', '107.55', '21', '4', '30', '76', '108.60', '50', '1', '43', '109.95', '50']\n", + "['AAPL', '2024-12-13', '265.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '37.20', '50', '30', '76', '37.75', '50']\n", + "['AAPL', '2025-02-21', '150.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:00:57.225', '78.50', '78.50', '78.50', '78.50', '1', '1', '30', '76', '77.65', '50', '30', '76', '80.65', '50']\n", + "['AAPL', '2024-11-15', '175.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T11:39:11.665', '0.01', '0.03', '0.01', '0.02', '56', '10', '3', '46', '0.02', '50', '26', '11', '0.03', '50']\n", + "['AAPL', '2025-08-15', '170.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '6', '76', '64.85', '50', '6', '76', '65.50', '50']\n", + "['AAPL', '2024-12-20', '125.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T10:06:25.456', '0.05', '0.05', '0.05', '0.05', '37', '4', '22', '7', '0.04', '50', '58', '7', '0.09', '50']\n", + "['AAPL', '2025-06-20', '140.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:27:31.168', '0.57', '0.57', '0.56', '0.56', '3', '3', '22', '7', '0.54', '50', '30', '76', '0.56', '50']\n", + "['AAPL', '2025-02-21', '350.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '60', '121.60', '50', '9', '60', '122.85', '50']\n", + "['AAPL', '2026-06-18', '150.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '31', '7', '2.87', '50', '31', '7', '2.99', '50']\n", + "['AAPL', '2024-12-27', '240.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:21:44.461', '2.27', '2.50', '1.93', '2.25', '35', '18', '64', '22', '1.74', '50', '10', '76', '2.71', '50']\n", + "['AAPL', '2026-12-18', '150.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:01:51.396', '91.63', '91.63', '91.63', '91.63', '2', '2', '20', '76', '92.50', '50', '8', '7', '94.60', '50']\n", + "['AAPL', '2025-08-15', '240.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T11:43:19.573', '21.95', '21.95', '21.95', '21.95', '30', '1', '24', '60', '21.15', '50', '17', '7', '23.15', '50']\n", + "['AAPL', '2024-11-22', '125.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '100.75', '50', '30', '76', '102.90', '50']\n", + "['AAPL', '2025-04-17', '205.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:45:00.331', '4.90', '4.90', '4.19', '4.20', '164', '39', '37', '9', '4.10', '50', '31', '47', '4.25', '50']\n", + "['AAPL', '2024-11-29', '135.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '60', '0.00', '50', '35', '4', '0.23', '50']\n", + "['AAPL', '2025-06-20', '95.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '70', '7', '0.16', '50', '44', '11', '0.18', '50']\n", + "['AAPL', '2026-12-18', '380.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '21', '11', '3.55', '50', '45', '47', '3.85', '50']\n", + "['AAPL', '2025-01-17', '220.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:57.806', '12.30', '13.80', '12.30', '13.59', '851', '177', '3', '7', '12.55', '50', '1', '31', '13.70', '50']\n", + "['AAPL', '2025-04-17', '145.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:38:09.31', '0.39', '0.39', '0.38', '0.38', '11', '2', '78', '7', '0.35', '50', '67', '7', '0.39', '50']\n", + "['AAPL', '2024-12-20', '30.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '197.25', '50', '30', '76', '197.85', '50']\n", + "['AAPL', '2024-11-15', '210.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:52:31.219', '15.64', '17.87', '15.49', '17.27', '545', '87', '1', '60', '16.70', '50', '30', '76', '18.75', '50']\n", + "['AAPL', '2025-12-19', '260.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:50:06.97', '12.73', '13.60', '12.72', '13.40', '17', '6', '1', '7', '11.80', '50', '20', '76', '13.60', '50']\n", + "['AAPL', '2027-01-15', '450.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '76', '220.00', '50', '2', '76', '225.00', '50']\n", + "['AAPL', '2025-02-21', '120.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '80', '7', '0.12', '50', '78', '7', '0.16', '50']\n", + "['AAPL', '2026-01-16', '290.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '60.45', '50', '7', '7', '64.40', '50']\n", + "['AAPL', '2026-12-18', '165.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '22', '11', '80.60', '50', '11', '7', '82.90', '50']\n", + "['AAPL', '2024-11-08', '145.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '402', '7', '0.01', '50']\n", + "['AAPL', '2025-03-21', '280.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '9', '60', '52.15', '50', '4', '60', '53.40', '50']\n", + "['AAPL', '2026-01-16', '30.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '196.25', '50', '30', '76', '199.85', '50']\n", + "['AAPL', '2024-11-22', '205.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:45:57.058', '20.85', '23.10', '20.85', '23.10', '26', '10', '1', '46', '22.10', '50', '1', '7', '24.20', '50']\n", + "['AAPL', '2024-12-27', '200.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '76', '29.00', '50', '2', '11', '30.50', '50']\n", + "['AAPL', '2024-11-08', '195.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:39:33.549', '0.01', '0.01', '0.01', '0.01', '4', '2', '0', '76', '0.00', '50', '33', '76', '0.01', '50']\n", + "['AAPL', '2025-03-21', '300.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T10:35:44.607', '74.58', '74.58', '74.58', '74.58', '2', '1', '9', '60', '72.10', '50', '2', '60', '73.35', '50']\n", + "['AAPL', '2025-06-20', '10.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '215.70', '50', '1', '7', '219.05', '50']\n", + "['AAPL', '2024-11-15', '265.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:37:20.538', '0.01', '0.01', '0.01', '0.01', '23', '10', '0', '60', '0.00', '50', '139', '7', '0.01', '50']\n", + "['AAPL', '2025-03-21', '270.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '60', '42.15', '50', '7', '60', '43.45', '50']\n", + "['AAPL', '2026-12-18', '195.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:37:36.042', '59.20', '59.20', '59.20', '59.20', '1', '1', '28', '11', '59.15', '50', '11', '7', '61.45', '50']\n", + "['AAPL', '2027-01-15', '160.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '34', '22', '84.65', '50', '1', '7', '87.85', '50']\n", + "['AAPL', '2024-11-22', '150.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '7', '0.01', '50', '23', '4', '0.25', '50']\n", + "['AAPL', '2025-08-15', '250.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:30:47.061', '11.27', '11.75', '11.24', '11.75', '14', '9', '48', '11', '10.75', '50', '7', '7', '13.75', '50']\n", + "['AAPL', '2024-11-15', '197.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:41:32.176', '28.50', '29.63', '28.14', '29.63', '19', '10', '30', '76', '29.95', '50', '2', '7', '30.40', '50']\n", + "['AAPL', '2027-01-15', '350.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:50:01.104', '6.33', '6.40', '6.33', '6.40', '2', '2', '15', '5', '6.20', '50', '37', '11', '6.55', '50']\n", + "['AAPL', '2024-12-20', '40.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '186.85', '50', '30', '76', '187.90', '50']\n", + "['AAPL', '2025-12-19', '70.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '100', '7', '0.18', '50', '49', '7', '0.21', '50']\n", + "['AAPL', '2025-09-19', '235.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:07:51.696', '19.55', '19.55', '19.55', '19.55', '9', '6', '25', '60', '19.20', '50', '8', '7', '21.25', '50']\n", + "['AAPL', '2025-09-19', '170.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '76', '65.80', '50', '30', '76', '67.25', '50']\n", + "['AAPL', '2026-06-18', '200.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:34:37.506', '50.75', '51.00', '50.61', '50.97', '19', '5', '10', '76', '50.70', '50', '32', '22', '52.05', '50']\n", + "['AAPL', '2024-11-29', '210.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:20:16.969', '16.95', '18.55', '16.66', '18.55', '70', '14', '41', '76', '18.15', '50', '10', '76', '18.70', '50']\n", + "['AAPL', '2025-04-17', '155.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:50:10.816', '75.45', '75.45', '75.45', '75.45', '6', '2', '30', '76', '74.95', '50', '30', '76', '77.80', '50']\n", + "['AAPL', '2025-04-17', '190.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T10:43:14.623', '41.70', '41.70', '41.70', '41.70', '1', '1', '25', '9', '43.15', '50', '11', '60', '43.65', '50']\n", + "['AAPL', '2026-06-18', '135.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '9', '7', '100.25', '50', '33', '22', '103.40', '50']\n", + "['AAPL', '2025-02-21', '265.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '60', '37.20', '50', '3', '60', '38.50', '50']\n", + "['AAPL', '2025-01-17', '260.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:10:34.216', '34.50', '34.70', '33.00', '33.00', '7', '5', '29', '76', '32.20', '50', '30', '76', '33.15', '50']\n", + "['AAPL', '2026-06-18', '120.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '8', '7', '113.60', '50', '38', '22', '116.60', '50']\n", + "['AAPL', '2025-03-21', '240.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:00:16.565', '17.20', '17.20', '17.20', '17.20', '1', '1', '2', '42', '16.65', '50', '19', '22', '18.85', '50']\n", + "['AAPL', '2025-02-21', '380.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '105', '11', '0.12', '50']\n", + "['AAPL', '2024-11-15', '115.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '43', '111.40', '50', '30', '76', '112.80', '50']\n", + "['AAPL', '2024-11-08', '105.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '46', '0.00', '50', '36', '76', '0.01', '50']\n", + "['AAPL', '2026-12-18', '390.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '160.70', '50', '8', '7', '164.30', '50']\n", + "['AAPL', '2024-12-13', '105.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:47:39.018', '121.60', '121.60', '121.60', '121.60', '2', '1', '30', '76', '122.10', '50', '30', '76', '123.25', '50']\n", + "['AAPL', '2024-11-15', '130.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '96.50', '50', '30', '76', '97.80', '50']\n", + "['AAPL', '2024-12-13', '200.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:49:10.565', '26.45', '28.09', '26.45', '28.00', '29', '5', '4', '7', '28.05', '50', '4', '69', '29.05', '50']\n", + "['AAPL', '2024-11-08', '217.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:47:55.06', '7.65', '10.35', '7.65', '10.35', '1337', '53', '14', '9', '9.60', '50', '20', '76', '10.30', '50']\n", + "['AAPL', '2026-12-18', '130.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T11:55:16.793', '2.32', '2.32', '2.21', '2.21', '55', '5', '44', '11', '2.12', '50', '49', '7', '2.23', '50']\n", + "['AAPL', '2024-12-06', '195.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:41:05.588', '0.21', '0.22', '0.18', '0.20', '33', '13', '9', '4', '0.19', '50', '48', '7', '0.21', '50']\n", + "['AAPL', '2024-11-15', '20.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '43', '0.00', '50', '501', '7', '0.01', '50']\n", + "['AAPL', '2025-06-20', '150.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:41:07.519', '81.77', '81.77', '81.77', '81.77', '1', '1', '1', '6', '80.15', '50', '24', '22', '82.60', '50']\n", + "['AAPL', '2026-12-18', '30.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '35', '7', '0.12', '50', '1', '1', '0.16', '50']\n", + "['AAPL', '2026-06-18', '65.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T10:59:37.161', '164.54', '164.80', '164.54', '164.80', '45', '2', '1', '4', '164.00', '50', '9', '7', '167.75', '50']\n", + "['AAPL', '2026-01-16', '215.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:33:38.111', '34.71', '35.13', '34.71', '35.13', '14', '5', '48', '11', '34.85', '50', '20', '76', '36.20', '50']\n", + "['AAPL', '2025-08-15', '165.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '43', '68.30', '50', '6', '7', '71.40', '50']\n", + "['AAPL', '2025-01-17', '270.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:39:22.586', '0.24', '0.28', '0.23', '0.27', '708', '48', '10', '7', '0.25', '50', '42', '7', '0.27', '50']\n", + "['AAPL', '2025-01-17', '100.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:03:21.707', '127.84', '127.84', '127.84', '127.84', '51', '2', '30', '76', '128.10', '50', '2', '7', '129.75', '50']\n", + "['AAPL', '2025-01-17', '360.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '20', '4', '0.02', '50']\n", + "['AAPL', '2024-11-08', '215.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:59:48.387', '0.03', '0.05', '0.02', '0.03', '2712', '392', '217', '7', '0.03', '50', '229', '5', '0.04', '50']\n", + "['AAPL', '2025-12-19', '320.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '32', '60', '2.77', '50', '41', '7', '3.30', '50']\n", + "['AAPL', '2025-02-21', '285.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:11:05.506', '0.33', '0.35', '0.32', '0.35', '11', '5', '32', '11', '0.33', '50', '54', '7', '0.36', '50']\n", + "['AAPL', '2024-11-22', '105.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '46', '0.00', '50', '15', '60', '0.21', '50']\n", + "['AAPL', '2024-11-29', '215.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:58:28.85', '1.34', '1.34', '0.72', '0.76', '760', '150', '1', '65', '0.70', '50', '4', '65', '0.86', '50']\n", + "['AAPL', '2024-11-29', '195.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:21:48.111', '0.14', '0.17', '0.12', '0.13', '31', '12', '14', '7', '0.11', '50', '13', '7', '0.16', '50']\n", + "['AAPL', '2024-11-15', '160.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:22:31.822', '65.94', '67.24', '65.94', '66.95', '148', '7', '3', '60', '67.30', '50', '30', '76', '67.85', '50']\n", + "['AAPL', '2025-02-21', '315.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '9', '60', '87.15', '50', '6', '60', '87.85', '50']\n", + "['AAPL', '2025-03-21', '65.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '69', '7', '0.01', '50', '44', '9', '0.05', '50']\n", + "['AAPL', '2024-11-22', '110.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '6', '115.55', '50', '30', '76', '117.85', '50']\n", + "['AAPL', '2025-03-21', '15.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '46', '0.00', '50', '23', '22', '0.22', '50']\n", + "['AAPL', '2026-06-18', '195.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:49:57.029', '10.00', '10.00', '10.00', '10.00', '1', '1', '10', '76', '9.95', '50', '28', '60', '10.25', '50']\n", + "['AAPL', '2027-01-15', '80.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '7', '0.45', '50', '285', '22', '0.97', '50']\n", + "['AAPL', '2025-12-19', '300.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:28:33.994', '4.57', '4.75', '4.45', '4.70', '72', '12', '40', '11', '4.75', '50', '18', '76', '4.90', '50']\n", + "['AAPL', '2024-11-08', '212.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:58:41.782', '0.02', '0.03', '0.01', '0.01', '1543', '190', '38', '7', '0.01', '50', '31', '11', '0.03', '50']\n", + "['AAPL', '2024-11-08', '202.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:30:28.748', '23.10', '24.70', '23.10', '24.50', '115', '7', '1', '7', '23.55', '50', '20', '76', '25.45', '50']\n", + "['AAPL', '2025-12-19', '280.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '20', '76', '52.40', '50', '20', '7', '53.55', '50']\n", + "['AAPL', '2025-01-17', '280.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '52.20', '50', '30', '76', '52.90', '50']\n", + "['AAPL', '2026-01-16', '350.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:09:05.312', '1.46', '1.52', '1.39', '1.52', '17', '9', '24', '7', '1.49', '50', '34', '7', '1.58', '50']\n", + "['AAPL', '2026-06-18', '330.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '41', '4', '4.75', '50', '10', '11', '5.05', '50']\n", + "['AAPL', '2025-01-17', '125.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:19:57.591', '102.20', '103.05', '102.20', '103.05', '37', '2', '3', '60', '103.50', '50', '12', '60', '104.05', '50']\n", + "['AAPL', '2024-12-06', '175.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:29:16.393', '0.11', '0.12', '0.10', '0.12', '75', '9', '44', '7', '0.09', '50', '58', '7', '0.12', '50']\n", + "['AAPL', '2025-02-21', '270.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '60', '42.15', '50', '5', '60', '43.40', '50']\n", + "['AAPL', '2025-03-21', '5.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '221.40', '50', '1', '7', '223.90', '50']\n", + "['AAPL', '2026-06-18', '255.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '4', '35.30', '50', '1', '11', '35.95', '50']\n", + "['AAPL', '2026-12-18', '185.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '23', '4', '9.55', '50', '39', '60', '9.90', '50']\n", + "['AAPL', '2025-06-20', '90.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '89', '7', '0.13', '50', '64', '7', '0.16', '50']\n", + "['AAPL', '2027-01-15', '230.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:07:00.51', '25.25', '25.25', '25.25', '25.25', '2', '1', '2', '69', '24.00', '50', '40', '76', '25.65', '50']\n", + "['AAPL', '2024-12-06', '170.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '57.95', '50', '30', '76', '58.45', '50']\n", + "['AAPL', '2024-12-06', '190.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:00:04.7', '36.50', '37.67', '36.50', '37.67', '5', '4', '15', '7', '37.95', '50', '15', '7', '38.60', '50']\n", + "['AAPL', '2025-01-17', '135.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T10:20:56.99', '0.11', '0.11', '0.11', '0.11', '1', '1', '48', '7', '0.09', '50', '58', '7', '0.11', '50']\n", + "['AAPL', '2025-03-21', '260.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T10:25:43.221', '34.25', '34.75', '34.25', '34.75', '6', '3', '16', '76', '32.45', '50', '3', '22', '34.75', '50']\n", + "['AAPL', '2024-11-15', '315.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '30', '76', '0.01', '50']\n", + "['AAPL', '2024-11-08', '160.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '11', '0.00', '50', '600', '11', '0.01', '50']\n", + "['AAPL', '2025-03-21', '235.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:55:00.162', '9.51', '10.11', '9.10', '9.70', '332', '77', '30', '11', '9.45', '50', '1', '46', '10.20', '50']\n", + "['AAPL', '2025-03-21', '125.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '102.70', '50', '3', '1', '106.30', '50']\n", + "['AAPL', '2024-11-29', '260.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '32.25', '50', '30', '76', '32.95', '50']\n", + "['AAPL', '2025-01-17', '55.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '40', '42', '0.01', '50', '28', '4', '0.02', '50']\n", + "['AAPL', '2025-09-19', '55.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '172.10', '50', '30', '76', '175.65', '50']\n", + "['AAPL', '2026-06-18', '50.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '6', '7', '177.60', '50', '8', '7', '181.50', '50']\n", + "['AAPL', '2026-12-18', '140.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '20', '76', '100.70', '50', '30', '76', '102.85', '50']\n", + "['AAPL', '2024-12-06', '140.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '11', '0.01', '50', '50', '4', '0.19', '50']\n", + "['AAPL', '2026-12-18', '30.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '8', '7', '196.65', '50', '7', '7', '200.25', '50']\n", + "['AAPL', '2024-11-15', '295.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:55:00.192', '68.00', '68.00', '68.00', '68.00', '1', '1', '30', '76', '67.25', '50', '30', '76', '67.80', '50']\n", + "['AAPL', '2025-03-21', '45.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '181.10', '50', '3', '1', '184.70', '50']\n", + "['AAPL', '2024-12-06', '150.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '20', '7', '0.03', '50', '31', '7', '0.14', '50']\n", + "['AAPL', '2024-12-06', '145.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '20', '7', '0.02', '50', '55', '4', '0.16', '50']\n", + "['AAPL', '2025-12-19', '145.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '55', '7', '1.59', '50', '47', '11', '1.68', '50']\n", + "['AAPL', '2025-06-20', '280.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '5', '7', '50.80', '50', '5', '7', '54.40', '50']\n", + "['AAPL', '2027-01-15', '410.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '76', '2.38', '50', '12', '7', '2.78', '50']\n", + "['AAPL', '2025-04-17', '225.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:22:00.859', '10.80', '11.20', '10.00', '10.00', '85', '47', '10', '7', '9.15', '50', '7', '7', '11.90', '50']\n", + "['AAPL', '2024-12-13', '225.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:58:12.376', '4.65', '5.15', '3.89', '4.00', '120', '29', '12', '76', '3.05', '50', '6', '42', '4.95', '50']\n", + "['AAPL', '2025-12-19', '15.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '8', '7', '210.70', '50', '30', '76', '214.30', '50']\n", + "['AAPL', '2025-02-21', '130.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '31', '7', '0.15', '50', '60', '11', '0.19', '50']\n", + "['AAPL', '2025-12-19', '125.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '8', '7', '106.60', '50', '19', '60', '109.30', '50']\n", + "['AAPL', '2025-06-20', '155.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:45:50.34', '1.02', '1.02', '0.89', '0.90', '116', '24', '40', '7', '0.88', '50', '23', '7', '0.93', '50']\n", + "['AAPL', '2024-11-08', '197.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:35:08.378', '0.01', '0.01', '0.01', '0.01', '15', '4', '0', '76', '0.00', '50', '32', '11', '0.01', '50']\n", + "['AAPL', '2026-01-16', '40.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '42', '7', '0.05', '50', '43', '7', '0.11', '50']\n", + "['AAPL', '2025-12-19', '150.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:50:06.995', '2.01', '2.02', '1.90', '1.90', '17', '3', '41', '7', '1.88', '50', '42', '60', '1.98', '50']\n", + "['AAPL', '2024-12-06', '195.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:46:30.642', '31.80', '32.57', '31.50', '32.57', '10', '6', '15', '69', '33.05', '50', '8', '7', '33.65', '50']\n", + "['AAPL', '2026-01-16', '240.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:44:29.802', '25.45', '25.45', '24.50', '24.50', '6', '6', '25', '22', '24.30', '50', '36', '11', '24.75', '50']\n", + "['AAPL', '2025-01-17', '325.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '97.15', '50', '30', '76', '98.15', '50']\n", + "['AAPL', '2026-12-18', '210.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T09:30:06.267', '17.82', '17.82', '17.82', '17.82', '1', '1', '10', '76', '16.70', '50', '30', '11', '17.15', '50']\n", + "['AAPL', '2026-06-18', '50.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '123', '7', '0.18', '50', '95', '7', '0.22', '50']\n", + "['AAPL', '2025-04-17', '200.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:54:43.546', '33.56', '35.10', '33.15', '34.35', '195', '33', '1', '7', '33.70', '50', '17', '11', '35.80', '50']\n", + "['AAPL', '2026-01-16', '75.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '123', '7', '0.23', '50', '107', '7', '0.27', '50']\n", + "['AAPL', '2024-11-22', '130.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '39', '11', '0.22', '50']\n", + "['AAPL', '2026-01-16', '70.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '42', '7', '0.19', '50', '42', '7', '0.25', '50']\n", + "['AAPL', '2024-11-29', '250.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:59.247', '0.12', '0.15', '0.12', '0.15', '378', '81', '18', '7', '0.13', '50', '188', '76', '0.15', '50']\n", + "['AAPL', '2025-06-20', '180.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:41:07.519', '2.60', '2.62', '2.30', '2.35', '292', '95', '1', '60', '2.19', '50', '28', '60', '2.35', '50']\n", + "['AAPL', '2024-11-15', '230.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:55:41.264', '6.25', '6.25', '3.80', '4.20', '2048', '278', '1', '1', '3.90', '50', '2', '7', '4.30', '50']\n", + "['AAPL', '2026-12-18', '400.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '170.70', '50', '8', '7', '174.30', '50']\n", + "['AAPL', '2024-11-15', '235.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:59.123', '0.31', '0.50', '0.30', '0.47', '31980', '2668', '25', '60', '0.44', '50', '1004', '46', '0.50', '50']\n", + "['AAPL', '2024-12-20', '95.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '132.20', '50', '30', '76', '133.25', '50']\n", + "['AAPL', '2024-11-15', '270.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:24:57.795', '0.01', '0.02', '0.01', '0.01', '53', '7', '0', '76', '0.00', '50', '102', '60', '0.01', '50']\n", + "['AAPL', '2026-12-18', '70.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '84', '7', '0.40', '50', '96', '7', '0.49', '50']\n", + "['AAPL', '2024-11-22', '200.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:55:48.3', '0.15', '0.15', '0.11', '0.12', '105', '32', '1', '1', '0.12', '50', '34', '7', '0.13', '50']\n", + "['AAPL', '2025-09-19', '330.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '76', '100.00', '50', '2', '76', '105.00', '50']\n", + "['AAPL', '2025-01-17', '365.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '69', '0.00', '50', '75', '69', '0.01', '50']\n", + "['AAPL', '2026-12-18', '105.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '19', '22', '129.55', '50', '36', '22', '132.70', '50']\n", + "['AAPL', '2025-08-15', '330.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '3', '4', '0.79', '50', '16', '69', '0.86', '50']\n", + "['AAPL', '2024-11-15', '220.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:56.101', '6.06', '8.45', '6.00', '8.10', '1874', '306', '1', '7', '7.40', '50', '1', '1', '8.50', '50']\n", + "['AAPL', '2024-12-27', '265.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '36.15', '50', '1', '60', '39.55', '50']\n", + "['AAPL', '2024-12-06', '180.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:40:07.289', '46.93', '46.93', '46.93', '46.93', '3', '1', '12', '7', '47.90', '50', '15', '69', '48.50', '50']\n", + "['AAPL', '2025-09-19', '290.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:42:00.137', '3.60', '3.85', '3.60', '3.85', '30', '5', '30', '11', '3.75', '50', '39', '11', '3.95', '50']\n", + "['AAPL', '2024-12-20', '315.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '87.20', '50', '30', '76', '88.20', '50']\n", + "['AAPL', '2025-02-21', '245.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:50:00.088', '20.90', '20.90', '19.45', '19.45', '3', '3', '2', '43', '19.25', '50', '1', '6', '21.50', '50']\n", + "['AAPL', '2026-12-18', '115.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:20:36.197', '122.00', '122.00', '122.00', '122.00', '60', '1', '23', '22', '120.35', '50', '37', '22', '123.75', '50']\n", + "['AAPL', '2025-01-17', '185.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:49:59.101', '0.40', '0.42', '0.33', '0.33', '147', '21', '24', '7', '0.32', '50', '23', '60', '0.35', '50']\n", + "['AAPL', '2024-11-15', '150.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T09:57:02.027', '0.01', '0.01', '0.01', '0.01', '2', '1', '0', '76', '0.00', '50', '25', '69', '0.01', '50']\n", + "['AAPL', '2024-11-29', '125.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '101.60', '50', '30', '76', '103.05', '50']\n", + "['AAPL', '2024-11-29', '195.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:04:19.267', '32.61', '32.61', '32.61', '32.61', '1', '1', '11', '7', '32.85', '50', '22', '69', '33.40', '50']\n", + "['AAPL', '2026-01-16', '245.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:43:33.943', '28.40', '28.40', '27.30', '27.30', '61', '2', '6', '43', '27.10', '50', '13', '7', '29.30', '50']\n", + "['AAPL', '2024-12-06', '225.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:51.525', '5.39', '6.80', '5.35', '6.65', '1155', '249', '5', '7', '4.60', '50', '1', '7', '7.25', '50']\n", + "['AAPL', '2024-11-22', '232.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:01:40.245', '8.30', '8.30', '6.58', '6.58', '29', '16', '1', '11', '5.35', '50', '47', '69', '7.10', '50']\n", + "['AAPL', '2025-12-19', '90.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '92', '7', '0.31', '50', '68', '7', '0.35', '50']\n", + "['AAPL', '2024-12-20', '295.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '67.20', '50', '30', '76', '67.85', '50']\n", + "['AAPL', '2025-03-21', '165.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:11:43.461', '0.55', '0.55', '0.51', '0.51', '18', '3', '20', '7', '0.50', '50', '37', '7', '0.53', '50']\n", + "['AAPL', '2024-12-06', '125.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '102.00', '50', '3', '1', '104.40', '50']\n", + "['AAPL', '2024-11-08', '105.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '5', '60', '122.00', '50', '7', '60', '123.05', '50']\n", + "['AAPL', '2024-11-08', '222.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:59:57.977', '0.78', '0.78', '0.08', '0.09', '16214', '2479', '12', '7', '0.08', '50', '32', '60', '0.10', '50']\n", + "['AAPL', '2027-01-15', '25.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '73', '22', '0.33', '50']\n", + "['AAPL', '2024-12-20', '140.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:40:07.007', '87.79', '87.95', '87.79', '87.95', '3', '2', '4', '60', '88.00', '50', '1', '46', '89.15', '50']\n", + "['AAPL', '2024-12-06', '280.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '28', '76', '52.20', '50', '1', '60', '53.30', '50']\n", + "['AAPL', '2024-12-20', '325.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '18', '76', '0.02', '50']\n", + "['AAPL', '2024-11-22', '270.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:10:43.988', '0.02', '0.02', '0.01', '0.01', '21', '7', '0', '31', '0.00', '50', '65', '31', '0.01', '50']\n", + "['AAPL', '2025-04-17', '280.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:50:00.134', '1.20', '1.30', '1.20', '1.30', '69', '10', '11', '42', '1.26', '50', '1', '22', '1.33', '50']\n", + "['AAPL', '2025-09-19', '300.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '70.40', '50', '7', '7', '74.35', '50']\n", + "['AAPL', '2024-11-15', '20.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '205.60', '50', '30', '76', '207.80', '50']\n", + "['AAPL', '2025-08-15', '265.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:51:55.865', '6.95', '7.14', '6.95', '7.14', '9', '3', '1', '22', '5.85', '50', '3', '5', '7.45', '50']\n", + "['AAPL', '2025-02-21', '240.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:55:00.197', '5.40', '6.30', '5.40', '6.00', '1143', '195', '13', '7', '6.10', '50', '1', '46', '6.50', '50']\n", + "['AAPL', '2024-11-08', '242.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T10:45:52.276', '16.95', '16.95', '16.85', '16.85', '4', '2', '5', '60', '14.45', '50', '18', '7', '15.75', '50']\n", + "['AAPL', '2024-11-08', '270.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '12', '47', '41.90', '50', '5', '60', '43.15', '50']\n", + "['AAPL', '2026-06-18', '180.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:12:08.634', '6.88', '6.88', '6.88', '6.88', '8', '1', '19', '11', '6.75', '50', '41', '11', '6.95', '50']\n", + "['AAPL', '2024-11-15', '232.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:59.065', '0.58', '0.95', '0.55', '0.88', '8739', '2387', '10', '60', '0.85', '50', '1116', '1', '0.94', '50']\n", + "['AAPL', '2024-12-06', '135.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:14:04.314', '0.04', '0.04', '0.04', '0.04', '50', '1', '49', '7', '0.01', '50', '10', '46', '0.04', '50']\n", + "['AAPL', '2026-06-18', '275.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:07:20.066', '14.29', '14.61', '14.29', '14.61', '13', '2', '25', '4', '14.70', '50', '16', '7', '16.85', '50']\n", + "['AAPL', '2025-01-17', '110.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T09:46:06.198', '0.06', '0.06', '0.06', '0.06', '20', '3', '36', '7', '0.05', '50', '49', '7', '0.08', '50']\n", + "['AAPL', '2024-12-06', '185.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '11', '7', '42.95', '50', '13', '7', '43.55', '50']\n", + "['AAPL', '2025-08-15', '135.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '22', '95.40', '50', '30', '76', '98.40', '50']\n", + "['AAPL', '2026-12-18', '310.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '11', '9.65', '50', '10', '76', '11.75', '50']\n", + "['AAPL', '2025-02-21', '205.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:35:59.592', '3.08', '3.08', '2.62', '2.65', '146', '44', '1', '7', '2.17', '50', '21', '60', '2.73', '50']\n", + "['AAPL', '2024-11-22', '195.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:57:42.74', '31.50', '31.50', '31.50', '31.50', '6', '1', '12', '7', '32.55', '50', '10', '7', '33.15', '50']\n", + "['AAPL', '2025-02-21', '380.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '60', '152.05', '50', '10', '60', '153.35', '50']\n", + "['AAPL', '2025-08-15', '125.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '4', '0.47', '50', '48', '11', '0.52', '50']\n", + "['AAPL', '2024-11-22', '232.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:42.838', '1.16', '1.77', '1.15', '1.70', '2627', '371', '19', '1', '1.50', '50', '1', '60', '1.75', '50']\n", + "['AAPL', '2025-09-19', '55.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '39', '7', '0.04', '50', '6', '4', '0.09', '50']\n", + "['AAPL', '2025-09-19', '160.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:45:14.334', '2.01', '2.01', '1.82', '1.82', '31', '4', '35', '7', '1.76', '50', '15', '11', '1.83', '50']\n", + "['AAPL', '2026-12-18', '190.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '5', '4', '10.80', '50', '30', '11', '11.10', '50']\n", + "['AAPL', '2025-01-17', '220.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:54:50.112', '5.05', '5.09', '3.90', '4.15', '4974', '425', '1', '69', '3.50', '50', '1', '7', '4.50', '50']\n", + "['AAPL', '2024-12-20', '250.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:33:06.113', '24.55', '24.55', '22.88', '22.88', '78', '25', '1', '46', '22.40', '50', '1', '5', '23.75', '50']\n", + "['AAPL', '2025-03-21', '45.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '20', '11', '0.03', '50']\n", + "['AAPL', '2024-11-08', '100.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '27', '11', '127.00', '50', '27', '11', '128.15', '50']\n", + "['AAPL', '2026-01-16', '170.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:47:48.935', '4.05', '4.05', '3.75', '3.75', '12', '6', '30', '11', '3.70', '50', '30', '11', '3.85', '50']\n", + "['AAPL', '2026-06-18', '40.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '40', '7', '0.11', '50', '40', '7', '0.18', '50']\n", + "['AAPL', '2025-01-17', '305.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '77.15', '50', '30', '76', '77.90', '50']\n", + "['AAPL', '2025-03-21', '280.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:26:44.554', '0.82', '0.88', '0.76', '0.86', '49', '25', '21', '11', '0.83', '50', '31', '7', '0.87', '50']\n", + "['AAPL', '2025-04-17', '290.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '43', '61.05', '50', '5', '7', '64.35', '50']\n", + "['AAPL', '2025-09-19', '60.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '114', '7', '0.07', '50', '108', '7', '0.11', '50']\n", + "['AAPL', '2024-11-08', '220.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:59:56.974', '0.29', '0.29', '0.04', '0.04', '13614', '1718', '8', '7', '0.04', '50', '39', '11', '0.06', '50']\n", + "['AAPL', '2024-12-13', '255.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:33:39.786', '0.21', '0.23', '0.19', '0.23', '46', '14', '30', '5', '0.21', '50', '103', '5', '0.25', '50']\n", + "['AAPL', '2025-06-20', '85.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:05:16.974', '144.53', '144.53', '144.53', '144.53', '4', '1', '30', '76', '143.75', '50', '14', '22', '145.10', '50']\n", + "['AAPL', '2024-11-15', '320.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:14:32.052', '0.01', '0.01', '0.01', '0.01', '1', '1', '0', '76', '0.00', '50', '29', '4', '0.01', '50']\n", + "['AAPL', '2026-01-16', '255.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:51:04.435', '15.96', '16.00', '15.96', '16.00', '3', '2', '1', '7', '14.10', '50', '1', '7', '17.30', '50']\n", + "['AAPL', '2025-06-20', '240.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:42.525', '12.46', '13.07', '12.17', '13.05', '136', '44', '1', '60', '11.45', '50', '13', '22', '13.10', '50']\n", + "['AAPL', '2027-01-15', '25.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '11', '201.00', '50', '30', '76', '205.05', '50']\n", + "['AAPL', '2025-02-21', '295.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '9', '60', '67.15', '50', '3', '60', '68.40', '50']\n", + "['AAPL', '2024-11-29', '220.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:59:28.588', '2.26', '2.26', '1.42', '1.45', '374', '130', '31', '11', '1.25', '50', '30', '11', '1.51', '50']\n", + "['AAPL', '2024-12-20', '145.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:41:01.559', '0.07', '0.08', '0.06', '0.07', '1309', '102', '38', '7', '0.07', '50', '22', '7', '0.08', '50']\n", + "['AAPL', '2024-12-20', '325.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '29', '76', '97.20', '50', '30', '76', '98.20', '50']\n", + "['AAPL', '2027-01-15', '320.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '11', '90.00', '50', '2', '11', '95.00', '50']\n", + "['AAPL', '2025-12-19', '25.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '8', '7', '201.00', '50', '30', '76', '204.60', '50']\n", + "['AAPL', '2025-09-19', '50.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '176.85', '50', '14', '76', '180.35', '50']\n", + "['AAPL', '2024-11-15', '55.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '172.25', '50', '30', '76', '172.80', '50']\n", + "['AAPL', '2025-02-21', '305.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:05:24.147', '0.14', '0.14', '0.14', '0.14', '2', '2', '75', '7', '0.11', '50', '80', '7', '0.14', '50']\n", + "['AAPL', '2026-01-16', '95.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:54:37.594', '136.76', '136.76', '136.76', '136.76', '10', '1', '30', '76', '135.60', '50', '28', '76', '138.30', '50']\n", + "['AAPL', '2027-01-15', '30.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '12', '22', '196.50', '50', '30', '76', '200.50', '50']\n", + "['AAPL', '2025-01-17', '160.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:28:07.793', '68.00', '68.73', '68.00', '68.65', '49', '11', '20', '7', '68.90', '50', '7', '60', '69.50', '50']\n", + "['AAPL', '2024-12-20', '275.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '47.20', '50', '30', '76', '47.85', '50']\n", + "['AAPL', '2024-11-08', '130.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '60', '97.00', '50', '7', '60', '98.20', '50']\n", + "['AAPL', '2025-09-19', '215.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:51:08.845', '11.55', '11.55', '11.00', '11.00', '2', '2', '15', '7', '9.10', '50', '1', '65', '12.10', '50']\n", + "['AAPL', '2025-04-17', '330.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '43', '101.05', '50', '4', '7', '104.30', '50']\n", + "['AAPL', '2025-04-17', '110.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '117.80', '50', '1', '7', '121.20', '50']\n", + "['AAPL', '2024-12-20', '185.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:39:52.773', '0.22', '0.22', '0.19', '0.21', '991', '59', '33', '7', '0.19', '50', '20', '7', '0.21', '50']\n", + "['AAPL', '2025-04-17', '115.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '31', '7', '0.16', '50', '56', '11', '0.21', '50']\n", + "['AAPL', '2024-12-27', '205.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:38:11.494', '0.99', '0.99', '0.57', '0.85', '23', '4', '37', '11', '0.66', '50', '34', '11', '1.00', '50']\n", + "['AAPL', '2027-01-15', '260.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '6', '40.30', '50', '5', '7', '41.90', '50']\n", + "['AAPL', '2024-12-20', '70.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '7', '0.00', '50', '250', '7', '0.01', '50']\n", + "['AAPL', '2024-11-08', '135.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '46', '0.00', '50', '31', '47', '0.01', '50']\n", + "['AAPL', '2025-01-17', '290.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '62.20', '50', '30', '76', '62.75', '50']\n", + "['AAPL', '2025-09-19', '110.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:29:31.916', '121.25', '121.25', '121.25', '121.25', '1', '1', '30', '76', '120.60', '50', '30', '76', '122.40', '50']\n", + "['AAPL', '2024-11-15', '100.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '127.25', '50', '30', '76', '127.80', '50']\n", + "['AAPL', '2025-03-21', '250.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:01:59.424', '24.45', '24.45', '24.45', '24.45', '1', '1', '6', '69', '23.80', '50', '10', '76', '24.30', '50']\n", + "['AAPL', '2024-12-27', '265.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:30:34.097', '0.16', '0.18', '0.16', '0.18', '12', '6', '0', '7', '0.00', '50', '4', '7', '0.22', '50']\n", + "['AAPL', '2024-11-08', '242.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:57:50.29', '0.01', '0.01', '0.01', '0.01', '24', '11', '0', '22', '0.00', '50', '331', '11', '0.01', '50']\n", + "['AAPL', '2024-11-08', '240.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:55:00.347', '0.01', '0.01', '0.01', '0.01', '601', '104', '0', '43', '0.00', '50', '481', '11', '0.01', '50']\n", + "['AAPL', '2025-01-17', '350.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:57:54.119', '0.02', '0.02', '0.01', '0.01', '40', '2', '501', '60', '0.01', '50', '31', '11', '0.02', '50']\n", + "['AAPL', '2026-12-18', '440.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '17', '7', '1.48', '50', '31', '11', '1.60', '50']\n", + "['AAPL', '2024-12-06', '105.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '65', '0.00', '50', '49', '11', '0.26', '50']\n", + "['AAPL', '2024-12-20', '275.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:26:35.962', '0.05', '0.07', '0.05', '0.07', '64', '25', '43', '7', '0.05', '50', '202', '69', '0.07', '50']\n", + "['AAPL', '2025-03-21', '190.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:28:36.318', '1.85', '1.86', '1.55', '1.60', '224', '129', '28', '11', '1.53', '50', '20', '5', '1.60', '50']\n", + "['AAPL', '2025-02-21', '115.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '112.15', '50', '30', '76', '114.40', '50']\n", + "['AAPL', '2025-04-17', '325.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '38', '7', '0.15', '50', '31', '7', '0.21', '50']\n", + "['AAPL', '2024-11-08', '280.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:50:00.088', '52.50', '52.50', '52.50', '52.50', '1', '1', '30', '11', '51.90', '50', '30', '11', '53.15', '50']\n", + "['AAPL', '2024-11-22', '260.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '32.25', '50', '30', '76', '32.80', '50']\n", + "['AAPL', '2025-12-19', '155.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T09:59:52.294', '2.35', '2.35', '2.35', '2.35', '35', '1', '41', '7', '2.19', '50', '45', '7', '2.31', '50']\n", + "['AAPL', '2024-11-22', '237.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:57:08.454', '0.45', '0.68', '0.45', '0.62', '615', '156', '31', '11', '0.61', '50', '10', '46', '0.67', '50']\n", + "['AAPL', '2025-03-21', '75.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '79', '7', '0.02', '50', '51', '7', '0.07', '50']\n", + "['AAPL', '2025-03-21', '340.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:57:08.097', '0.08', '0.08', '0.08', '0.08', '1', '1', '47', '7', '0.07', '50', '60', '7', '0.09', '50']\n", + "['AAPL', '2025-03-21', '200.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:51:51.722', '32.40', '33.75', '31.85', '33.21', '367', '58', '20', '76', '33.35', '50', '1', '46', '34.30', '50']\n", + "['AAPL', '2027-01-15', '330.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:42:54.611', '8.44', '8.55', '8.44', '8.55', '11', '2', '30', '11', '8.45', '50', '31', '11', '9.05', '50']\n", + "['AAPL', '2024-11-08', '120.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '4', '60', '107.00', '50', '7', '60', '108.20', '50']\n", + "['AAPL', '2026-12-18', '10.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '215.40', '50', '30', '76', '219.35', '50']\n", + "['AAPL', '2024-12-06', '240.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T10:18:08.438', '14.35', '14.74', '14.35', '14.72', '22', '3', '10', '76', '12.75', '50', '20', '76', '13.40', '50']\n", + "['AAPL', '2024-12-06', '190.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:14:17.439', '0.16', '0.17', '0.15', '0.15', '145', '12', '29', '76', '0.15', '50', '48', '7', '0.17', '50']\n", + "['AAPL', '2027-01-15', '110.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '13', '22', '125.00', '50', '30', '76', '128.85', '50']\n", + "['AAPL', '2027-01-15', '340.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '11', '110.00', '50', '2', '11', '115.00', '50']\n", + "['AAPL', '2024-12-06', '205.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:13:47.566', '21.90', '23.43', '21.90', '23.43', '14', '6', '2', '60', '23.30', '50', '2', '11', '23.90', '50']\n", + "['AAPL', '2025-12-19', '105.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '88', '7', '0.46', '50', '83', '7', '0.51', '50']\n", + "['AAPL', '2024-12-27', '290.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '61.15', '50', '30', '76', '64.55', '50']\n", + "['AAPL', '2024-12-27', '225.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:58:30.745', '7.49', '8.61', '7.49', '8.51', '66', '17', '129', '9', '7.95', '50', '146', '9', '9.10', '50']\n", + "['AAPL', '2026-12-18', '440.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '210.70', '50', '8', '7', '214.30', '50']\n", + "['AAPL', '2025-12-19', '45.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '8', '7', '181.95', '50', '30', '76', '185.55', '50']\n", + "['AAPL', '2024-12-20', '235.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:54:50.113', '11.40', '11.40', '9.60', '10.15', '176', '59', '30', '11', '9.35', '50', '6', '60', '10.05', '50']\n", + "['AAPL', '2024-12-27', '160.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '67', '4', '2.23', '50']\n", + "['AAPL', '2027-01-15', '390.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '76', '160.00', '50', '2', '76', '165.00', '50']\n", + "['AAPL', '2025-09-19', '340.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '6', '7', '110.70', '50', '7', '7', '114.30', '50']\n", + "['AAPL', '2025-12-19', '160.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:50:42.982', '75.98', '77.11', '75.90', '77.11', '3', '3', '18', '76', '76.80', '50', '1', '22', '77.35', '50']\n", + "['AAPL', '2025-08-15', '115.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:16:00.813', '116.19', '116.59', '116.08', '116.59', '56', '3', '30', '76', '116.00', '50', '28', '76', '117.60', '50']\n", + "['AAPL', '2025-04-17', '195.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:56:00.249', '38.14', '39.00', '37.40', '38.75', '43', '12', '26', '11', '38.90', '50', '1', '6', '41.05', '50']\n", + "['AAPL', '2024-12-20', '225.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:52.136', '6.72', '8.27', '6.72', '8.10', '1588', '471', '28', '76', '7.95', '50', '30', '11', '8.30', '50']\n", + "['AAPL', '2025-09-19', '90.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:54:37.594', '140.10', '140.35', '140.10', '140.35', '139', '2', '30', '76', '140.10', '50', '1', '43', '142.15', '50']\n", + "['AAPL', '2025-03-21', '30.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '46', '0.00', '50', '23', '22', '0.22', '50']\n", + "['AAPL', '2026-06-18', '250.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '8', '7', '30.75', '50', '13', '7', '34.70', '50']\n", + "['AAPL', '2026-12-18', '250.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '23', '11', '34.65', '50', '21', '4', '35.30', '50']\n", + "['AAPL', '2024-12-13', '135.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '92.60', '50', '15', '60', '93.40', '50']\n", + "['AAPL', '2024-11-15', '250.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:52:35.355', '0.03', '0.04', '0.03', '0.03', '2606', '242', '40', '7', '0.03', '50', '102', '5', '0.04', '50']\n", + "['AAPL', '2024-12-13', '250.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:56:30.086', '0.39', '0.43', '0.35', '0.39', '385', '40', '21', '11', '0.39', '50', '17', '7', '0.42', '50']\n", + "['AAPL', '2024-12-20', '270.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:57:52.033', '0.08', '0.10', '0.07', '0.09', '476', '51', '28', '47', '0.08', '50', '37', '7', '0.09', '50']\n", + "['AAPL', '2024-12-06', '215.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:56:26.416', '1.72', '1.72', '1.07', '1.12', '468', '125', '1', '22', '1.05', '50', '7', '22', '1.10', '50']\n", + "['AAPL', '2025-02-21', '160.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:00:05.57', '69.80', '69.80', '69.80', '69.80', '8', '5', '30', '76', '68.00', '50', '3', '1', '71.50', '50']\n", + "['AAPL', '2025-12-19', '180.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:38:58.717', '5.10', '5.10', '4.95', '4.95', '15', '3', '10', '76', '4.80', '50', '30', '11', '4.95', '50']\n", + "['AAPL', '2024-11-08', '232.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:51:07.939', '7.50', '7.50', '5.00', '5.55', '276', '76', '8', '76', '4.90', '50', '3', '60', '5.40', '50']\n", + "['AAPL', '2025-06-20', '350.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '5', '7', '120.75', '50', '5', '7', '124.35', '50']\n", + "['AAPL', '2025-03-21', '310.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T10:35:44.607', '84.63', '84.63', '84.63', '84.63', '1', '1', '9', '60', '82.10', '50', '4', '60', '83.35', '50']\n", + "['AAPL', '2026-06-18', '5.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '9', '7', '220.70', '50', '30', '76', '224.30', '50']\n", + "['AAPL', '2026-01-16', '15.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '12', '22', '210.50', '50', '30', '76', '214.35', '50']\n", + "['AAPL', '2026-12-18', '370.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '60', '140.50', '50', '8', '7', '144.30', '50']\n", + "['AAPL', '2026-12-18', '45.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '4', '183.00', '50', '7', '7', '186.60', '50']\n", + "['AAPL', '2024-11-29', '245.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T11:00:20.035', '18.95', '18.95', '18.95', '18.95', '1', '1', '3', '9', '16.10', '50', '3', '7', '19.45', '50']\n", + "['AAPL', '2025-04-17', '190.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:20:32.756', '2.57', '2.57', '2.13', '2.16', '159', '144', '33', '4', '2.05', '50', '30', '11', '2.12', '50']\n", + "['AAPL', '2024-12-13', '175.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:50:36.488', '0.11', '0.13', '0.11', '0.13', '21', '7', '25', '7', '0.12', '50', '21', '7', '0.15', '50']\n", + "['AAPL', '2025-01-17', '240.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:59.384', '2.94', '3.65', '2.88', '3.50', '2466', '527', '2', '1', '3.30', '50', '2', '7', '3.60', '50']\n", + "['AAPL', '2024-11-22', '265.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:29:36.106', '0.02', '0.02', '0.02', '0.02', '21', '8', '21', '7', '0.01', '50', '8', '46', '0.02', '50']\n", + "['AAPL', '2026-12-18', '350.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '120.70', '50', '8', '7', '124.30', '50']\n", + "['AAPL', '2026-12-18', '160.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '20', '76', '84.55', '50', '8', '7', '86.70', '50']\n", + "['AAPL', '2024-11-08', '185.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '32', '11', '0.01', '50']\n", + "['AAPL', '2025-06-20', '250.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:21:15.849', '27.40', '27.40', '26.19', '26.19', '5', '4', '37', '9', '25.70', '50', '106', '9', '26.45', '50']\n", + "['AAPL', '2025-01-17', '50.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '6', '0.00', '50', '2', '6', '0.01', '50']\n", + "['AAPL', '2026-01-16', '75.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:00:09.082', '154.67', '154.67', '154.32', '154.32', '7', '2', '21', '22', '154.15', '50', '30', '76', '157.40', '50']\n", + "['AAPL', '2026-01-16', '165.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:07:13.697', '3.50', '3.50', '3.30', '3.30', '10', '4', '1', '46', '3.15', '50', '30', '11', '3.30', '50']\n", + "['AAPL', '2024-12-20', '340.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '20', '7', '0.01', '50']\n", + "['AAPL', '2024-12-13', '140.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '86.95', '50', '30', '76', '88.40', '50']\n", + "['AAPL', '2025-06-20', '205.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:56:59.888', '6.50', '6.57', '6.14', '6.15', '335', '25', '122', '46', '5.95', '50', '18', '60', '6.30', '50']\n", + "['AAPL', '2025-06-20', '290.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '5', '7', '60.80', '50', '5', '7', '64.35', '50']\n", + "['AAPL', '2024-12-20', '185.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:01:10.08', '40.95', '43.62', '40.95', '43.62', '36', '19', '26', '7', '43.40', '50', '6', '60', '43.95', '50']\n", + "['AAPL', '2024-12-13', '285.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '57.25', '50', '1', '60', '58.25', '50']\n", + "['AAPL', '2024-12-06', '110.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '43', '0.00', '50', '10', '76', '0.23', '50']\n", + "['AAPL', '2026-06-18', '160.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '12', '69', '80.75', '50', '1', '11', '81.35', '50']\n", + "['AAPL', '2025-06-20', '220.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:17:06.077', '22.25', '23.75', '22.20', '23.75', '122', '22', '30', '11', '21.55', '50', '2', '69', '23.70', '50']\n", + "['AAPL', '2024-11-15', '80.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:07:39.569', '147.63', '147.63', '147.63', '147.63', '1', '1', '30', '76', '146.90', '50', '30', '76', '147.80', '50']\n", + "['AAPL', '2024-11-15', '215.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:58:47.647', '0.53', '0.53', '0.23', '0.23', '3188', '840', '16', '7', '0.22', '50', '55', '60', '0.25', '50']\n", + "['AAPL', '2024-11-15', '170.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:36:24.164', '56.20', '57.50', '55.65', '57.41', '10', '8', '30', '76', '57.30', '50', '4', '60', '57.75', '50']\n", + "['AAPL', '2025-03-21', '290.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:50:01.28', '0.45', '0.51', '0.45', '0.50', '17', '8', '20', '11', '0.48', '50', '27', '7', '0.51', '50']\n", + "['AAPL', '2024-11-15', '70.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '157.25', '50', '30', '76', '157.80', '50']\n", + "['AAPL', '2025-02-21', '295.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '54', '4', '0.19', '50', '48', '7', '0.21', '50']\n", + "['AAPL', '2026-06-18', '175.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '23', '4', '68.75', '50', '1', '11', '69.30', '50']\n", + "['AAPL', '2025-09-19', '155.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:40:31.313', '78.11', '78.11', '78.11', '78.11', '2', '2', '30', '76', '79.00', '50', '30', '76', '80.15', '50']\n", + "['AAPL', '2025-03-21', '195.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:21:59.986', '36.81', '38.05', '36.21', '38.00', '95', '19', '38', '11', '37.60', '50', '5', '7', '39.45', '50']\n", + "['AAPL', '2024-12-20', '350.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:50:00.092', '122.50', '122.50', '122.50', '122.50', '1', '1', '30', '76', '122.20', '50', '30', '76', '122.85', '50']\n", + "['AAPL', '2025-02-21', '325.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '60', '97.10', '50', '3', '60', '98.40', '50']\n", + "['AAPL', '2025-03-21', '55.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T10:56:52.238', '171.84', '171.84', '171.84', '171.84', '13', '1', '30', '76', '171.25', '50', '1', '76', '174.65', '50']\n", + "['AAPL', '2025-04-17', '170.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '5', '7', '59.90', '50', '30', '76', '62.20', '50']\n", + "['AAPL', '2025-04-17', '170.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:07:44.754', '0.98', '0.98', '0.88', '0.88', '10', '2', '24', '7', '0.84', '50', '38', '11', '0.88', '50']\n", + "['AAPL', '2025-08-15', '190.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '14', '11', '47.80', '50', '14', '22', '48.35', '50']\n", + "['AAPL', '2025-09-19', '75.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '153.00', '50', '30', '76', '156.40', '50']\n", + "['AAPL', '2024-12-20', '175.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:44:12.3', '0.16', '0.16', '0.14', '0.15', '110', '14', '20', '7', '0.15', '50', '28', '7', '0.16', '50']\n", + "['AAPL', '2025-09-19', '265.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:14:14.975', '8.30', '8.40', '8.30', '8.34', '4', '4', '30', '11', '6.55', '50', '2', '46', '8.60', '50']\n", + "['AAPL', '2025-02-21', '205.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:59.83', '26.65', '27.90', '26.25', '27.70', '180', '34', '1', '76', '26.80', '50', '1', '7', '28.90', '50']\n", + "['AAPL', '2024-12-27', '295.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '7', '0.01', '50', '90', '22', '2.14', '50']\n", + "['AAPL', '2024-12-13', '175.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '51.50', '50', '11', '7', '53.70', '50']\n", + "['AAPL', '2025-01-17', '240.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:52:30.03', '16.14', '16.14', '14.64', '14.65', '15', '12', '1', '43', '14.10', '50', '20', '76', '14.50', '50']\n", + "['AAPL', '2024-11-08', '265.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '5', '60', '37.10', '50', '6', '60', '38.20', '50']\n", + "['AAPL', '2024-12-13', '295.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '32', '76', '0.04', '50']\n", + "['AAPL', '2024-12-06', '100.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '3', '7', '125.90', '50', '30', '76', '128.10', '50']\n", + "['AAPL', '2024-12-20', '60.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '7', '0.00', '50', '100', '7', '0.01', '50']\n", + "['AAPL', '2025-01-17', '235.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:57:47.875', '4.40', '5.35', '4.40', '5.08', '2583', '588', '30', '11', '5.05', '50', '90', '7', '5.35', '50']\n", + "['AAPL', '2025-06-20', '195.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:13:23.249', '4.65', '4.65', '4.10', '4.20', '386', '165', '281', '5', '4.05', '50', '57', '5', '4.20', '50']\n", + "['AAPL', '2024-11-15', '340.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '200', '46', '0.01', '50']\n", + "['AAPL', '2026-06-18', '340.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T10:04:36.111', '3.79', '3.79', '3.79', '3.79', '1', '1', '36', '60', '3.85', '50', '25', '11', '4.10', '50']\n", + "['AAPL', '2025-09-19', '190.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:07:09.626', '5.35', '5.35', '5.05', '5.05', '12', '7', '21', '5', '4.95', '50', '20', '76', '5.15', '50']\n", + "['AAPL', '2025-02-21', '375.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '60', '147.05', '50', '6', '60', '148.40', '50']\n", + "['AAPL', '2025-12-19', '75.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '20', '22', '154.30', '50', '18', '22', '156.40', '50']\n", + "['AAPL', '2024-12-20', '130.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:20:57.168', '0.06', '0.06', '0.05', '0.05', '24', '4', '43', '7', '0.04', '50', '31', '11', '0.07', '50']\n", + "['AAPL', '2025-01-17', '310.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '29', '76', '82.15', '50', '30', '76', '82.85', '50']\n", + "['AAPL', '2025-09-19', '20.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '35', '76', '0.03', '50']\n", + "['AAPL', '2025-12-19', '165.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T10:55:37.298', '3.25', '3.25', '3.20', '3.20', '6', '3', '41', '7', '2.68', '50', '39', '60', '3.15', '50']\n", + "['AAPL', '2025-03-21', '105.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '122.25', '50', '3', '1', '125.90', '50']\n", + "['AAPL', '2025-12-19', '100.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '131.35', '50', '30', '76', '133.85', '50']\n", + "['AAPL', '2024-11-29', '245.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:58:25.169', '0.27', '0.30', '0.23', '0.29', '368', '88', '13', '60', '0.27', '50', '95', '46', '0.30', '50']\n", + "['AAPL', '2027-01-15', '390.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '40', '11', '3.25', '50', '65', '4', '3.70', '50']\n", + "['AAPL', '2024-12-06', '215.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:55:15.138', '12.86', '14.50', '12.45', '14.20', '604', '51', '4', '7', '12.55', '50', '4', '7', '15.65', '50']\n", + "['AAPL', '2025-12-19', '245.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:49:02.234', '18.60', '19.05', '18.60', '19.02', '24', '11', '30', '43', '18.00', '50', '1', '46', '20.20', '50']\n", + "['AAPL', '2024-11-08', '300.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:30:05.284', '0.01', '0.01', '0.01', '0.01', '10', '1', '0', '76', '0.00', '50', '2430', '11', '0.01', '50']\n", + "['AAPL', '2025-01-17', '255.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:21:55.269', '29.32', '29.70', '27.48', '27.48', '39', '23', '15', '7', '27.25', '50', '30', '76', '27.95', '50']\n", + "['AAPL', '2024-11-15', '330.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '30', '4', '0.01', '50']\n", + "['AAPL', '2026-06-18', '145.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:14:49.913', '93.19', '93.19', '93.19', '93.19', '5', '1', '39', '22', '93.05', '50', '1', '42', '95.00', '50']\n", + "['AAPL', '2025-06-20', '115.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:16:00.813', '112.63', '115.87', '112.63', '115.87', '37', '3', '30', '76', '114.80', '50', '9', '60', '116.15', '50']\n", + "['AAPL', '2026-06-18', '270.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:06:00.271', '16.20', '16.20', '16.20', '16.20', '5', '1', '10', '76', '16.25', '50', '1', '11', '16.50', '50']\n", + "['AAPL', '2026-12-18', '270.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '110', '22', '46.60', '50', '16', '11', '48.35', '50']\n", + "['AAPL', '2024-12-27', '230.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:57:47.711', '7.35', '8.20', '7.00', '8.20', '23', '4', '1', '5', '5.55', '50', '103', '76', '7.40', '50']\n", + "['AAPL', '2026-01-16', '110.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:41:39.551', '121.90', '121.90', '121.90', '121.90', '39', '2', '2', '60', '122.45', '50', '30', '76', '124.65', '50']\n", + "['AAPL', '2025-01-17', '90.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '138.10', '50', '2', '7', '139.65', '50']\n", + "['AAPL', '2024-11-15', '300.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '72.25', '50', '30', '76', '72.85', '50']\n", + "['AAPL', '2025-03-21', '70.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '156.55', '50', '1', '76', '159.95', '50']\n", + "['AAPL', '2026-06-18', '245.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:01:16.564', '25.55', '25.55', '25.45', '25.45', '13', '5', '6', '11', '25.55', '50', '1', '60', '25.90', '50']\n", + "['AAPL', '2024-12-27', '275.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '69', '0.00', '50', '100', '22', '2.19', '50']\n", + "['AAPL', '2025-09-19', '265.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '129', '4', '38.60', '50', '365', '9', '40.20', '50']\n", + "['AAPL', '2025-06-20', '230.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:55:05.478', '17.00', '17.95', '16.75', '17.65', '217', '53', '30', '11', '17.65', '50', '2', '43', '18.00', '50']\n", + "['AAPL', '2025-09-19', '275.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '46.05', '50', '7', '7', '49.95', '50']\n", + "['AAPL', '2025-03-21', '145.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:52:25.716', '84.70', '84.70', '84.70', '84.70', '48', '1', '30', '76', '84.40', '50', '3', '6', '86.80', '50']\n", + "['AAPL', '2024-11-15', '195.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:57:01.586', '31.00', '32.95', '30.97', '32.23', '439', '48', '1', '76', '32.40', '50', '2', '7', '33.75', '50']\n", + "['AAPL', '2026-06-18', '195.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:00:46.163', '53.05', '54.01', '53.05', '54.01', '3', '3', '10', '76', '54.10', '50', '11', '7', '56.30', '50']\n", + "['AAPL', '2025-08-15', '320.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '16', '7', '1.08', '50', '35', '4', '1.19', '50']\n", + "['AAPL', '2025-01-17', '25.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '82', '7', '0.01', '50']\n", + "['AAPL', '2024-11-08', '262.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '5', '60', '34.60', '50', '15', '47', '35.70', '50']\n", + "['AAPL', '2024-12-27', '190.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '37.10', '50', '30', '76', '40.45', '50']\n", + "['AAPL', '2026-12-18', '185.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:55:00.462', '65.05', '66.06', '65.05', '66.00', '4', '4', '18', '11', '66.00', '50', '11', '7', '68.25', '50']\n", + "['AAPL', '2024-11-15', '205.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:58:18.24', '0.13', '0.13', '0.08', '0.09', '852', '174', '30', '47', '0.09', '50', '28', '7', '0.10', '50']\n", + "['AAPL', '2025-09-19', '245.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:03:17.423', '14.55', '14.97', '14.28', '14.85', '33', '11', '13', '7', '13.25', '50', '40', '76', '15.35', '50']\n", + "['AAPL', '2024-11-29', '270.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '42.25', '50', '30', '76', '43.30', '50']\n", + "['AAPL', '2025-06-20', '245.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T09:39:40.008', '24.07', '24.07', '24.07', '24.07', '1', '1', '52', '5', '22.35', '50', '22', '60', '23.05', '50']\n", + "['AAPL', '2024-11-29', '240.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:18:59.419', '13.25', '13.25', '12.75', '12.75', '3', '2', '30', '43', '12.55', '50', '1', '9', '14.95', '50']\n", + "['AAPL', '2024-11-15', '190.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:45:37.667', '35.88', '37.80', '35.45', '37.80', '1560', '59', '30', '76', '37.10', '50', '1', '7', '38.00', '50']\n", + "['AAPL', '2024-12-13', '300.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '72.15', '50', '30', '76', '73.25', '50']\n", + "['AAPL', '2024-12-27', '170.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '56.70', '50', '30', '76', '60.20', '50']\n", + "['AAPL', '2024-11-15', '305.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '77.25', '50', '30', '76', '77.85', '50']\n", + "['AAPL', '2025-12-19', '20.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '1', '0.00', '50', '28', '76', '0.04', '50']\n", + "['AAPL', '2025-08-15', '260.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:03:21.737', '8.25', '8.69', '8.05', '8.69', '32', '12', '30', '11', '8.00', '50', '12', '76', '8.75', '50']\n", + "['AAPL', '2024-12-20', '115.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:25:45.045', '112.08', '113.40', '112.08', '113.25', '696', '15', '30', '76', '112.85', '50', '3', '7', '114.40', '50']\n", + "['AAPL', '2025-08-15', '200.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:01:01.658', '39.20', '39.20', '39.20', '39.20', '1', '1', '8', '7', '38.20', '50', '8', '4', '40.40', '50']\n", + "['AAPL', '2025-08-15', '225.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:01:25.372', '22.60', '23.40', '22.60', '23.15', '15', '6', '10', '7', '21.40', '50', '1', '11', '24.55', '50']\n", + "['AAPL', '2025-09-19', '230.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:32:50.024', '17.15', '17.15', '16.95', '17.05', '45', '17', '25', '60', '16.80', '50', '48', '11', '18.05', '50']\n", + "['AAPL', '2027-01-15', '290.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '110', '4', '62.20', '50', '96', '4', '65.15', '50']\n", + "['AAPL', '2025-02-21', '260.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '60', '32.25', '50', '8', '60', '33.45', '50']\n", + "['AAPL', '2025-09-19', '240.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '31', '4', '21.85', '50', '7', '7', '23.90', '50']\n", + "['AAPL', '2024-11-15', '242.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:52:27.025', '15.37', '15.55', '15.37', '15.55', '26', '8', '1', '7', '13.85', '50', '32', '47', '15.75', '50']\n", + "['AAPL', '2026-06-18', '215.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:16:08.133', '41.06', '41.10', '41.06', '41.10', '25', '4', '1', '42', '40.20', '50', '1', '42', '42.60', '50']\n", + "['AAPL', '2025-03-21', '110.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '51', '7', '0.13', '50', '54', '7', '0.15', '50']\n", + "['AAPL', '2025-02-21', '220.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:47:48.939', '7.20', '7.20', '6.00', '6.00', '538', '160', '2', '1', '6.00', '50', '41', '76', '6.80', '50']\n", + "['AAPL', '2025-03-21', '195.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:12:13.58', '2.36', '2.41', '2.03', '2.10', '206', '181', '10', '76', '2.00', '50', '23', '60', '2.08', '50']\n", + "['AAPL', '2025-08-15', '105.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '28', '76', '124.55', '50', '30', '76', '127.05', '50']\n", + "['AAPL', '2025-02-21', '230.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:39.685', '9.85', '10.70', '9.55', '10.60', '619', '158', '30', '11', '10.00', '50', '1', '42', '10.95', '50']\n", + "['AAPL', '2025-02-21', '230.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:48:38.513', '11.30', '11.50', '10.00', '10.00', '410', '98', '30', '11', '9.50', '50', '1', '22', '12.25', '50']\n", + "['AAPL', '2025-01-17', '210.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:41:23.99', '20.48', '21.65', '19.68', '21.45', '415', '61', '17', '22', '20.50', '50', '1', '9', '22.25', '50']\n", + "['AAPL', '2025-02-21', '310.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:08:55.774', '0.09', '0.09', '0.09', '0.09', '1', '1', '61', '7', '0.09', '50', '88', '7', '0.12', '50']\n", + "['AAPL', '2026-01-16', '235.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:52:31.401', '23.70', '24.50', '23.70', '24.50', '52', '4', '18', '11', '24.60', '50', '32', '11', '24.95', '50']\n", + "['AAPL', '2024-12-13', '205.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:50:01.609', '0.69', '0.69', '0.50', '0.54', '306', '42', '15', '7', '0.50', '50', '17', '7', '0.54', '50']\n", + "['AAPL', '2025-08-15', '310.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '15', '42', '1.52', '50', '40', '11', '1.61', '50']\n", + "['AAPL', '2025-03-21', '310.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:58:26.444', '0.19', '0.20', '0.19', '0.20', '43', '10', '59', '7', '0.18', '50', '53', '7', '0.20', '50']\n", + "['AAPL', '2025-12-19', '130.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '49', '7', '0.98', '50', '32', '7', '1.04', '50']\n", + "['AAPL', '2024-11-15', '60.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '103', '7', '0.01', '50']\n", + "['AAPL', '2024-12-27', '285.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '69', '0.00', '50', '71', '22', '2.15', '50']\n", + "['AAPL', '2024-12-13', '265.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:25:48.175', '0.08', '0.08', '0.08', '0.08', '3', '2', '128', '9', '0.07', '50', '12', '47', '0.09', '50']\n", + "['AAPL', '2025-12-19', '35.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '39', '7', '0.02', '50', '6', '4', '0.07', '50']\n", + "['AAPL', '2024-12-13', '270.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '214', '9', '0.04', '50', '330', '9', '0.08', '50']\n", + "['AAPL', '2024-11-22', '215.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:58:17.135', '11.80', '13.50', '11.50', '13.15', '52', '33', '9', '7', '11.45', '50', '30', '76', '14.95', '50']\n", + "['AAPL', '2027-01-15', '360.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '60', '130.50', '50', '2', '11', '135.00', '50']\n", + "['AAPL', '2024-11-08', '180.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:17:50.187', '45.76', '47.35', '45.67', '47.17', '196', '13', '2', '11', '47.30', '50', '5', '60', '47.90', '50']\n", + "['AAPL', '2024-11-15', '237.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:17:56.943', '11.99', '12.14', '10.40', '10.85', '30', '15', '1', '7', '10.10', '50', '1', '46', '11.25', '50']\n", + "['AAPL', '2026-12-18', '420.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '43', '1.95', '50', '20', '76', '2.14', '50']\n", + "['AAPL', '2026-06-18', '55.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '27', '22', '173.00', '50', '30', '76', '176.85', '50']\n", + "['AAPL', '2025-06-20', '135.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:30:03.522', '93.48', '93.48', '93.48', '93.48', '1', '1', '30', '76', '95.50', '50', '19', '22', '96.90', '50']\n", + "['AAPL', '2025-12-19', '45.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '39', '7', '0.05', '50', '11', '7', '0.09', '50']\n", + "['AAPL', '2024-12-13', '215.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:54:13.425', '13.10', '15.10', '13.10', '14.40', '143', '17', '3', '69', '14.70', '50', '3', '7', '16.00', '50']\n", + "['AAPL', '2024-11-29', '170.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '57.55', '50', '30', '76', '58.25', '50']\n", + "['AAPL', '2024-11-22', '255.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:50.622', '0.05', '0.05', '0.03', '0.03', '104', '14', '88', '5', '0.03', '50', '200', '46', '0.04', '50']\n", + "['AAPL', '2027-01-15', '190.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:23:03.213', '11.53', '11.53', '11.15', '11.15', '2', '2', '37', '11', '11.00', '50', '20', '76', '11.40', '50']\n", + "['AAPL', '2027-01-15', '150.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T09:30:06.434', '4.50', '4.50', '4.50', '4.50', '5', '1', '40', '22', '3.90', '50', '20', '76', '4.20', '50']\n", + "['AAPL', '2027-01-15', '140.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:39:25.662', '3.10', '3.10', '3.10', '3.10', '1', '1', '54', '76', '2.93', '50', '20', '76', '3.20', '50']\n", + "['AAPL', '2027-01-15', '370.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '17', '5', '4.35', '50', '23', '4', '4.95', '50']\n", + "['AAPL', '2025-09-19', '230.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:47:12.536', '21.50', '22.06', '21.15', '22.06', '44', '20', '1', '76', '21.10', '50', '1', '7', '23.30', '50']\n", + "['AAPL', '2025-01-17', '130.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:32:33.281', '0.09', '0.10', '0.09', '0.10', '25', '5', '51', '7', '0.08', '50', '48', '7', '0.10', '50']\n", + "['AAPL', '2027-01-15', '185.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '142', '22', '66.30', '50', '4', '46', '67.75', '50']\n", + "['AAPL', '2024-11-15', '125.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '32', '76', '0.01', '50']\n", + "['AAPL', '2026-12-18', '60.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T10:53:53.257', '169.70', '169.70', '169.70', '169.70', '22', '1', '1', '4', '169.50', '50', '18', '22', '172.30', '50']\n", + "['AAPL', '2025-09-19', '70.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '60', '158.05', '50', '30', '76', '161.20', '50']\n", + "['AAPL', '2025-02-21', '320.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '9', '60', '92.10', '50', '5', '60', '93.35', '50']\n", + "['AAPL', '2024-11-29', '140.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '87.00', '50', '6', '60', '88.10', '50']\n", + "['AAPL', '2024-11-15', '290.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '35', '76', '0.01', '50']\n", + "['AAPL', '2026-12-18', '20.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '8', '7', '205.80', '50', '30', '76', '209.40', '50']\n", + "['AAPL', '2025-02-21', '155.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '51', '7', '0.27', '50', '49', '7', '0.29', '50']\n", + "['AAPL', '2025-01-17', '215.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:55:52.04', '15.45', '17.51', '15.45', '17.02', '660', '56', '1', '60', '16.20', '50', '1', '60', '18.50', '50']\n", + "['AAPL', '2024-12-27', '200.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:34:16.788', '0.50', '0.54', '0.50', '0.54', '2', '2', '0', '76', '0.00', '50', '58', '76', '0.95', '50']\n", + "['AAPL', '2025-02-21', '140.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '76', '7', '0.19', '50', '31', '7', '0.21', '50']\n", + "['AAPL', '2024-11-22', '170.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:34:14.505', '0.04', '0.04', '0.03', '0.03', '7', '2', '1', '4', '0.02', '50', '1', '69', '0.06', '50']\n", + "['AAPL', '2026-01-16', '280.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:18:20.964', '8.60', '9.04', '8.57', '9.04', '141', '32', '1', '7', '7.85', '50', '20', '76', '9.05', '50']\n", + "['AAPL', '2024-11-29', '200.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:48:23.584', '26.64', '28.44', '26.29', '28.44', '51', '12', '18', '69', '27.80', '50', '10', '7', '28.45', '50']\n", + "['AAPL', '2024-12-20', '95.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:42:23.666', '0.03', '0.03', '0.02', '0.02', '110', '5', '41', '7', '0.01', '50', '30', '11', '0.03', '50']\n", + "['AAPL', '2025-01-17', '230.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:58:37.942', '9.50', '9.50', '7.75', '8.05', '812', '174', '1', '31', '5.95', '50', '30', '11', '8.60', '50']\n", + "['AAPL', '2024-11-15', '45.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '182.25', '50', '28', '76', '182.80', '50']\n", + "['AAPL', '2025-12-19', '200.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:36:09.625', '44.30', '44.50', '43.61', '44.50', '7', '5', '1', '1', '43.00', '50', '1', '5', '46.25', '50']\n", + "['AAPL', '2026-01-16', '20.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '1', '0.00', '50', '26', '76', '0.04', '50']\n", + "['AAPL', '2025-02-21', '120.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '108.10', '50', '3', '9', '110.70', '50']\n", + "['AAPL', '2026-12-18', '230.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:21:01.604', '37.93', '39.05', '37.75', '39.05', '18', '14', '9', '76', '38.75', '50', '1', '7', '40.20', '50']\n", + "['AAPL', '2025-01-17', '295.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '60', '67.15', '50', '1', '46', '69.15', '50']\n", + "['AAPL', '2027-01-15', '40.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '29', '22', '187.50', '50', '30', '76', '191.50', '50']\n", + "['AAPL', '2024-11-22', '235.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:59:32.493', '11.20', '11.20', '8.25', '8.25', '39', '16', '32', '11', '8.10', '50', '32', '11', '8.70', '50']\n", + "['AAPL', '2027-01-15', '260.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:03:34.186', '25.63', '26.33', '25.63', '26.33', '27', '7', '1', '7', '24.25', '50', '30', '11', '26.85', '50']\n", + "['AAPL', '2026-12-18', '25.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '8', '7', '201.20', '50', '7', '7', '204.80', '50']\n", + "['AAPL', '2024-12-06', '250.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '20', '76', '22.25', '50', '31', '47', '22.95', '50']\n", + "['AAPL', '2026-06-18', '280.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:54:31.17', '12.82', '13.25', '12.82', '13.25', '11', '2', '1', '11', '13.40', '50', '1', '46', '14.50', '50']\n", + "['AAPL', '2024-12-06', '300.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:53:40.868', '0.01', '0.01', '0.01', '0.01', '2', '2', '0', '76', '0.00', '50', '32', '11', '0.02', '50']\n", + "['AAPL', '2026-06-18', '310.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:49:26.29', '7.26', '7.40', '7.25', '7.40', '14', '4', '19', '60', '7.30', '50', '31', '47', '7.50', '50']\n", + "['AAPL', '2024-12-06', '300.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '72.20', '50', '30', '76', '72.95', '50']\n", + "['AAPL', '2026-01-16', '70.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '22', '22', '158.85', '50', '30', '76', '162.15', '50']\n", + "['AAPL', '2025-02-21', '250.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:59.802', '2.94', '3.45', '2.94', '3.35', '445', '78', '24', '60', '3.25', '50', '1', '7', '3.50', '50']\n", + "['AAPL', '2025-09-19', '65.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:07:12.063', '162.60', '162.60', '162.60', '162.60', '1', '1', '7', '7', '162.35', '50', '30', '76', '165.80', '50']\n", + "['AAPL', '2024-12-06', '135.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '60', '92.10', '50', '1', '42', '94.25', '50']\n", + "['AAPL', '2026-12-18', '310.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '5', '7', '80.65', '50', '9', '60', '84.40', '50']\n", + "['AAPL', '2025-01-17', '10.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '215.55', '50', '3', '1', '219.10', '50']\n", + "['AAPL', '2025-02-21', '350.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '68', '7', '0.02', '50', '99', '7', '0.10', '50']\n", + "['AAPL', '2027-01-15', '20.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '34', '76', '0.26', '50']\n", + "['AAPL', '2026-01-16', '115.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '8', '7', '116.50', '50', '30', '76', '120.10', '50']\n", + "['AAPL', '2026-01-16', '225.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:18:49.016', '18.15', '18.20', '17.33', '17.33', '12', '6', '6', '22', '17.20', '50', '30', '11', '17.60', '50']\n", + "['AAPL', '2024-11-29', '230.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:50:13.462', '6.85', '6.90', '5.12', '5.62', '551', '64', '1', '43', '4.15', '50', '1', '5', '5.35', '50']\n", + "['AAPL', '2025-02-21', '155.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:03:44.936', '74.80', '74.80', '74.80', '74.80', '8', '1', '1', '9', '72.75', '50', '9', '60', '75.10', '50']\n", + "['AAPL', '2025-03-21', '10.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '215.70', '50', '1', '76', '218.95', '50']\n", + "['AAPL', '2025-03-21', '95.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '42', '7', '0.08', '50', '63', '7', '0.10', '50']\n", + "['AAPL', '2026-12-18', '95.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '57', '7', '0.74', '50', '86', '60', '0.83', '50']\n", + "['AAPL', '2026-06-18', '55.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '108', '7', '0.20', '50', '120', '7', '0.26', '50']\n", + "['AAPL', '2027-01-15', '85.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '599', '22', '0.19', '50', '479', '22', '1.08', '50']\n", + "['AAPL', '2024-11-22', '190.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:50:13.457', '0.08', '0.09', '0.07', '0.08', '108', '22', '37', '7', '0.07', '50', '39', '7', '0.09', '50']\n", + "['AAPL', '2024-11-22', '247.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T10:49:53.646', '21.85', '22.10', '21.60', '21.60', '14', '10', '1', '7', '18.80', '50', '1', '9', '22.15', '50']\n", + "['AAPL', '2025-08-15', '235.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '14', '22', '18.45', '50', '8', '7', '20.50', '50']\n", + "['AAPL', '2025-09-19', '350.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:03:58.803', '0.58', '0.64', '0.58', '0.60', '128', '6', '31', '7', '0.60', '50', '23', '7', '0.64', '50']\n", + "['AAPL', '2026-06-18', '320.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '19', '60', '5.95', '50', '16', '4', '6.15', '50']\n", + "['AAPL', '2024-11-22', '300.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:55:02.357', '0.01', '0.01', '0.01', '0.01', '100', '2', '0', '76', '0.00', '50', '36', '76', '0.01', '50']\n", + "['AAPL', '2025-03-21', '30.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '196.70', '50', '3', '1', '199.45', '50']\n", + "['AAPL', '2025-06-20', '45.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '22', '181.40', '50', '27', '76', '184.65', '50']\n", + "['AAPL', '2027-01-15', '160.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T11:50:14.998', '5.40', '5.40', '5.40', '5.40', '4', '1', '32', '11', '5.15', '50', '19', '5', '5.65', '50']\n", + "['AAPL', '2025-12-19', '180.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:39:27.336', '58.02', '60.21', '58.00', '60.19', '26', '9', '9', '7', '58.30', '50', '1', '46', '60.55', '50']\n", + "['AAPL', '2024-11-29', '240.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:30.121', '0.52', '0.68', '0.49', '0.65', '1676', '364', '5', '60', '0.62', '50', '10', '65', '0.70', '50']\n", + "['AAPL', '2025-08-15', '110.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '31', '7', '0.30', '50', '30', '76', '0.35', '50']\n", + "['AAPL', '2024-11-15', '80.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '53', '7', '0.01', '50']\n", + "['AAPL', '2025-06-20', '190.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:07:20.923', '44.75', '45.60', '44.60', '45.60', '23', '5', '6', '7', '44.10', '50', '1', '7', '47.10', '50']\n", + "['AAPL', '2026-01-16', '320.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '21', '60', '91.40', '50', '21', '60', '94.00', '50']\n", + "['AAPL', '2025-03-21', '330.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:20:07.689', '0.11', '0.11', '0.10', '0.11', '9', '9', '43', '7', '0.09', '50', '63', '7', '0.11', '50']\n", + "['AAPL', '2025-04-17', '125.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '31', '7', '0.21', '50', '10', '11', '0.24', '50']\n", + "['AAPL', '2024-11-29', '250.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '45', '76', '22.25', '50', '15', '76', '22.90', '50']\n", + "['AAPL', '2024-11-29', '175.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:12:01.701', '52.51', '52.51', '52.51', '52.51', '30', '2', '30', '76', '52.80', '50', '30', '76', '53.25', '50']\n", + "['AAPL', '2024-11-15', '90.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:55:00.175', '137.10', '137.10', '137.10', '137.10', '1', '1', '30', '76', '136.95', '50', '30', '76', '137.80', '50']\n", + "['AAPL', '2024-11-08', '100.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '22', '0.00', '50', '1536', '11', '0.01', '50']\n", + "['AAPL', '2026-12-18', '320.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '5', '7', '90.70', '50', '8', '7', '94.30', '50']\n", + "['AAPL', '2025-01-17', '155.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:48:33.119', '0.15', '0.16', '0.14', '0.15', '207', '23', '48', '7', '0.15', '50', '5', '46', '0.16', '50']\n", + "['AAPL', '2024-12-20', '205.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:39:16.096', '22.22', '24.50', '22.22', '24.15', '137', '34', '2', '7', '22.90', '50', '1', '69', '25.35', '50']\n", + "['AAPL', '2025-04-17', '240.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:07:23.65', '19.02', '19.02', '18.00', '18.00', '6', '3', '5', '22', '16.05', '50', '19', '22', '19.60', '50']\n", + "['AAPL', '2025-08-15', '320.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '6', '7', '90.80', '50', '6', '7', '94.35', '50']\n", + "['AAPL', '2026-06-18', '200.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '76', '11.30', '50', '20', '76', '11.55', '50']\n", + "['AAPL', '2024-11-22', '220.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:59:34.353', '1.95', '1.95', '1.06', '1.10', '1155', '351', '1', '7', '1.07', '50', '3', '65', '1.19', '50']\n", + "['AAPL', '2024-11-15', '175.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:21:30.878', '51.10', '52.73', '51.00', '52.73', '26', '7', '30', '76', '52.35', '50', '30', '76', '52.85', '50']\n", + "['AAPL', '2024-12-20', '195.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:49:17.593', '0.40', '0.40', '0.30', '0.31', '923', '112', '14', '7', '0.31', '50', '29', '60', '0.34', '50']\n", + "['AAPL', '2026-12-18', '340.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '110.70', '50', '8', '7', '114.30', '50']\n", + "['AAPL', '2025-06-20', '60.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '45', '7', '0.04', '50', '57', '7', '0.07', '50']\n", + "['AAPL', '2026-06-18', '190.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:17:58.634', '9.07', '9.07', '9.00', '9.00', '19', '4', '10', '76', '8.80', '50', '30', '60', '9.05', '50']\n", + "['AAPL', '2025-09-19', '200.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:15:59.988', '41.00', '41.58', '41.00', '41.58', '22', '10', '20', '76', '41.35', '50', '1', '69', '42.65', '50']\n", + "['AAPL', '2024-12-20', '285.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:16:17.123', '0.04', '0.04', '0.03', '0.04', '26', '6', '26', '7', '0.03', '50', '1', '7', '0.04', '50']\n", + "['AAPL', '2025-02-21', '115.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '29', '7', '0.10', '50', '36', '11', '0.14', '50']\n", + "['AAPL', '2024-12-13', '260.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:39:10.103', '0.15', '0.15', '0.12', '0.13', '48', '19', '38', '7', '0.12', '50', '18', '7', '0.14', '50']\n", + "['AAPL', '2025-04-17', '225.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:59.786', '15.30', '17.00', '15.30', '16.80', '187', '53', '30', '11', '15.00', '50', '10', '6', '17.90', '50']\n", + "['AAPL', '2026-12-18', '160.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T09:30:04.995', '5.50', '5.50', '5.50', '5.50', '1', '1', '37', '11', '5.05', '50', '14', '42', '5.25', '50']\n", + "['AAPL', '2025-03-21', '230.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:50:09.637', '12.64', '12.65', '11.25', '11.49', '130', '28', '10', '76', '11.15', '50', '20', '76', '11.40', '50']\n", + "['AAPL', '2025-02-21', '225.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:57:04.984', '12.25', '13.55', '12.15', '13.12', '800', '265', '7', '7', '12.10', '50', '3', '69', '13.60', '50']\n", + "['AAPL', '2025-12-19', '140.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T10:09:55.969', '1.46', '1.46', '1.46', '1.46', '1', '1', '25', '7', '1.37', '50', '61', '11', '1.44', '50']\n", + "['AAPL', '2026-01-16', '310.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '60', '81.40', '50', '2', '60', '84.05', '50']\n", + "['AAPL', '2025-09-19', '225.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:48:36.621', '23.26', '24.85', '23.26', '24.85', '22', '12', '30', '11', '24.00', '50', '1', '1', '26.10', '50']\n", + "['AAPL', '2024-12-06', '115.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '110.95', '50', '30', '76', '113.15', '50']\n", + "['AAPL', '2025-03-21', '370.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:34:34.973', '0.05', '0.05', '0.04', '0.05', '6', '4', '1', '7', '0.04', '50', '84', '7', '0.09', '50']\n", + "['AAPL', '2025-01-17', '235.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:58:30.852', '12.16', '12.30', '10.93', '11.00', '109', '32', '3', '7', '9.80', '50', '3', '7', '12.35', '50']\n", + "['AAPL', '2025-04-17', '230.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:47:38.315', '13.60', '14.20', '13.00', '14.20', '197', '64', '2', '1', '13.25', '50', '11', '22', '14.20', '50']\n", + "['AAPL', '2024-12-13', '125.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '101.85', '50', '6', '60', '103.35', '50']\n", + "['AAPL', '2024-12-27', '235.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:52:50.346', '3.40', '3.90', '3.15', '3.50', '65', '29', '1', '69', '3.40', '50', '1', '31', '3.90', '50']\n", + "['AAPL', '2025-04-17', '125.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:52:18.596', '105.13', '105.13', '105.03', '105.03', '15', '2', '5', '7', '103.15', '50', '10', '1', '106.85', '50']\n", + "['AAPL', '2025-01-17', '165.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:57:21.534', '0.19', '0.20', '0.18', '0.20', '455', '27', '52', '7', '0.18', '50', '48', '7', '0.20', '50']\n", + "['AAPL', '2025-04-17', '155.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '20', '7', '0.49', '50', '46', '7', '0.52', '50']\n", + "['AAPL', '2025-12-19', '110.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '7', '121.10', '50', '30', '22', '123.30', '50']\n", + "['AAPL', '2024-11-15', '150.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:39:04.457', '76.89', '77.65', '76.89', '77.52', '30', '6', '30', '76', '76.15', '50', '30', '76', '77.85', '50']\n", + "['AAPL', '2026-01-16', '100.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '8', '7', '130.35', '50', '20', '22', '133.20', '50']\n", + "['AAPL', '2026-01-16', '145.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '49', '7', '1.70', '50', '47', '7', '1.80', '50']\n", + "['AAPL', '2025-02-21', '255.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:50:59.615', '2.33', '2.45', '2.11', '2.34', '1469', '115', '19', '60', '2.33', '50', '1', '7', '2.68', '50']\n", + "['AAPL', '2025-02-21', '280.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:29:06.294', '0.43', '0.45', '0.42', '0.43', '26', '7', '31', '11', '0.45', '50', '26', '7', '0.48', '50']\n", + "['AAPL', '2024-12-27', '175.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '51.80', '50', '30', '76', '55.25', '50']\n", + "['AAPL', '2025-08-15', '190.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T09:44:05.277', '4.85', '4.85', '4.85', '4.85', '4', '1', '40', '46', '4.40', '50', '24', '60', '4.55', '50']\n", + "['AAPL', '2024-11-15', '370.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '30', '4', '0.01', '50']\n", + "['AAPL', '2025-01-17', '180.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:37:22.413', '48.04', '49.73', '47.52', '49.50', '116', '27', '30', '76', '48.10', '50', '2', '7', '50.90', '50']\n", + "['AAPL', '2025-06-20', '185.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:11:37.351', '2.96', '2.96', '2.87', '2.88', '69', '67', '30', '11', '2.76', '50', '16', '60', '2.84', '50']\n", + "['AAPL', '2024-11-08', '265.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:01:03.706', '0.01', '0.01', '0.01', '0.01', '153', '5', '0', '76', '0.00', '50', '900', '11', '0.01', '50']\n", + "['AAPL', '2024-11-29', '115.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:47:03.132', '111.68', '111.68', '111.68', '111.68', '2', '1', '30', '76', '111.55', '50', '30', '76', '113.00', '50']\n", + "['AAPL', '2026-01-16', '330.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:42:38.145', '2.35', '2.54', '2.35', '2.54', '20', '7', '1', '22', '2.47', '50', '2', '4', '2.56', '50']\n", + "['AAPL', '2025-12-19', '230.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:51:07.37', '25.57', '26.00', '25.23', '25.92', '22', '14', '11', '7', '24.30', '50', '31', '11', '26.40', '50']\n", + "['AAPL', '2024-11-29', '290.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '62.20', '50', '30', '76', '62.95', '50']\n", + "['AAPL', '2024-12-20', '200.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:58:17.663', '0.66', '0.66', '0.43', '0.46', '1870', '308', '13', '4', '0.44', '50', '41', '60', '0.47', '50']\n", + "['AAPL', '2025-06-20', '260.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:08.453', '5.70', '6.40', '5.70', '6.35', '188', '47', '30', '11', '6.10', '50', '10', '76', '6.45', '50']\n", + "['AAPL', '2025-09-19', '30.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '196.10', '50', '30', '76', '199.60', '50']\n", + "['AAPL', '2025-06-20', '5.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:04:51.14', '0.01', '0.01', '0.01', '0.01', '5000', '31', '0', '60', '0.00', '50', '619', '60', '0.01', '50']\n", + "['AAPL', '2024-12-13', '220.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:53:58.63', '3.00', '3.11', '2.37', '2.53', '122', '41', '11', '7', '2.23', '50', '3', '60', '2.46', '50']\n", + "['AAPL', '2024-12-13', '145.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '3', '7', '81.30', '50', '30', '76', '83.45', '50']\n", + "['AAPL', '2025-03-21', '115.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '49', '7', '0.15', '50', '56', '7', '0.17', '50']\n", + "['AAPL', '2024-11-15', '155.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:31:34.801', '72.20', '72.20', '72.20', '72.20', '1', '1', '30', '76', '72.15', '50', '30', '76', '72.85', '50']\n", + "['AAPL', '2025-02-21', '290.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T10:26:00.013', '0.25', '0.25', '0.25', '0.25', '5', '1', '53', '4', '0.25', '50', '37', '7', '0.27', '50']\n", + "['AAPL', '2025-06-20', '65.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '162.05', '50', '30', '76', '165.75', '50']\n", + "['AAPL', '2025-02-21', '125.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T10:08:33.71', '102.25', '102.25', '102.25', '102.25', '1', '1', '30', '76', '104.05', '50', '30', '76', '104.55', '50']\n", + "['AAPL', '2024-12-06', '260.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:38:06.767', '0.08', '0.08', '0.07', '0.08', '20', '5', '9', '31', '0.08', '50', '37', '7', '0.09', '50']\n", + "['AAPL', '2025-04-17', '260.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '66', '4', '32.65', '50', '136', '4', '33.95', '50']\n", + "['AAPL', '2025-01-17', '80.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '18', '7', '0.02', '50', '78', '9', '0.04', '50']\n", + "['AAPL', '2025-12-19', '95.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '98', '7', '0.35', '50', '102', '7', '0.40', '50']\n", + "['AAPL', '2024-11-22', '110.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '46', '0.00', '50', '15', '60', '0.21', '50']\n", + "['AAPL', '2025-03-21', '130.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:53:58.818', '99.51', '99.51', '99.51', '99.51', '1', '1', '30', '76', '99.50', '50', '1', '7', '101.20', '50']\n", + "['AAPL', '2024-12-06', '210.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:56:26.416', '0.92', '0.93', '0.61', '0.65', '443', '106', '1', '22', '0.59', '50', '27', '11', '0.63', '50']\n", + "['AAPL', '2025-09-19', '70.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '38', '7', '0.10', '50', '40', '7', '0.16', '50']\n", + "['AAPL', '2025-01-17', '380.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:26:26.945', '0.01', '0.01', '0.01', '0.01', '41', '4', '0', '31', '0.00', '50', '10', '31', '0.01', '50']\n", + "['AAPL', '2024-12-27', '225.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:18:02.957', '5.85', '6.25', '4.85', '4.85', '26', '8', '99', '22', '4.20', '50', '9', '11', '5.10', '50']\n", + "['AAPL', '2024-11-22', '105.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '47', '121.40', '50', '30', '76', '122.85', '50']\n", + "['AAPL', '2025-02-21', '370.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '44', '60', '0.01', '50', '1', '7', '0.31', '50']\n", + "['AAPL', '2024-12-06', '165.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '46', '0.00', '50', '17', '7', '0.10', '50']\n", + "['AAPL', '2024-11-08', '170.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '11', '0.00', '50', '4002', '42', '0.01', '50']\n", + "['AAPL', '2024-11-22', '190.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '11', '7', '37.05', '50', '9', '69', '38.15', '50']\n", + "['AAPL', '2024-12-13', '160.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '22', '7', '0.07', '50', '25', '7', '0.10', '50']\n", + "['AAPL', '2025-09-19', '330.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '31', '47', '1.05', '50', '26', '76', '1.12', '50']\n", + "['AAPL', '2025-03-21', '85.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '28', '7', '0.03', '50', '28', '7', '0.09', '50']\n", + "['AAPL', '2024-11-08', '180.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:10:21.029', '0.01', '0.01', '0.01', '0.01', '1', '1', '0', '4', '0.00', '50', '31', '11', '0.01', '50']\n", + "['AAPL', '2025-04-17', '320.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '4', '91.05', '50', '1', '4', '94.60', '50']\n", + "['AAPL', '2024-12-13', '185.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:57:19.975', '0.16', '0.19', '0.16', '0.19', '10', '3', '37', '7', '0.15', '50', '24', '7', '0.18', '50']\n", + "['AAPL', '2025-08-15', '220.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:04:55.338', '25.95', '26.38', '25.95', '26.38', '8', '5', '9', '7', '24.40', '50', '18', '76', '26.55', '50']\n", + "['AAPL', '2024-11-22', '247.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:53:36.497', '0.10', '0.11', '0.09', '0.11', '89', '13', '51', '46', '0.10', '50', '88', '5', '0.12', '50']\n", + "['AAPL', '2025-12-19', '240.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:17:20.316', '25.00', '25.00', '24.15', '24.15', '3', '2', '12', '7', '22.05', '50', '8', '7', '25.95', '50']\n", + "['AAPL', '2024-12-13', '115.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '111.10', '50', '3', '1', '114.45', '50']\n", + "['AAPL', '2024-11-08', '225.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:59:59.946', '1.74', '1.86', '0.27', '0.28', '44805', '6061', '20', '60', '0.27', '50', '44', '60', '0.37', '50']\n", + "['AAPL', '2025-01-17', '325.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:41:01.649', '0.02', '0.02', '0.02', '0.02', '4', '1', '1', '7', '0.02', '50', '18', '76', '0.03', '50']\n", + "['AAPL', '2025-06-20', '185.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:42:34.538', '48.63', '50.40', '48.63', '50.26', '32', '9', '20', '76', '49.95', '50', '1', '5', '51.35', '50']\n", + "['AAPL', '2024-11-15', '40.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '509', '7', '0.01', '50']\n", + "['AAPL', '2025-01-17', '195.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:37:55.506', '0.76', '0.76', '0.59', '0.60', '1043', '73', '10', '7', '0.58', '50', '14', '7', '0.61', '50']\n", + "['AAPL', '2027-01-15', '210.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '65', '17.00', '50', '1', '42', '18.35', '50']\n", + "['AAPL', '2025-06-20', '75.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:24:21.019', '153.55', '153.55', '153.55', '153.55', '39', '1', '17', '22', '153.40', '50', '25', '22', '154.80', '50']\n", + "['AAPL', '2025-08-15', '120.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T09:36:20.255', '0.45', '0.45', '0.45', '0.45', '1', '1', '67', '7', '0.41', '50', '86', '7', '0.45', '50']\n", + "['AAPL', '2024-12-20', '140.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:40:20.096', '0.07', '0.08', '0.07', '0.07', '1511', '133', '37', '7', '0.06', '50', '23', '7', '0.07', '50']\n", + "['AAPL', '2025-06-20', '320.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:41:36.993', '0.57', '0.60', '0.57', '0.59', '12', '4', '24', '11', '0.58', '50', '46', '11', '0.62', '50']\n", + "['AAPL', '2025-06-20', '175.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T10:46:37.738', '57.49', '57.49', '57.49', '57.49', '3', '3', '30', '76', '58.90', '50', '1', '7', '60.20', '50']\n", + "['AAPL', '2026-06-18', '215.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '15', '4', '15.95', '50', '20', '76', '16.30', '50']\n", + "['AAPL', '2024-12-27', '195.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '46', '0.00', '50', '51', '4', '0.76', '50']\n", + "['AAPL', '2024-12-06', '275.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '65', '46', '0.01', '50', '201', '5', '0.04', '50']\n", + "['AAPL', '2026-12-18', '100.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '42', '0.88', '50', '77', '60', '0.94', '50']\n", + "['AAPL', '2025-06-20', '205.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:50:12.497', '33.00', '34.14', '32.80', '33.71', '69', '14', '7', '7', '32.00', '50', '1', '7', '35.10', '50']\n", + "['AAPL', '2025-06-20', '235.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:56:33.376', '17.70', '17.70', '17.15', '17.15', '27', '4', '25', '60', '16.85', '50', '7', '7', '18.90', '50']\n", + "['AAPL', '2025-04-17', '240.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:23:22.352', '9.15', '9.47', '8.60', '9.47', '130', '55', '6', '11', '9.25', '50', '1', '7', '10.45', '50']\n", + "['AAPL', '2025-02-21', '110.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '118.75', '50', '1', '7', '120.30', '50']\n", + "['AAPL', '2026-06-18', '285.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:04:47.706', '12.00', '12.00', '12.00', '12.00', '10', '1', '10', '7', '10.35', '50', '9', '11', '12.35', '50']\n", + "['AAPL', '2024-12-27', '170.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '65', '22', '2.26', '50']\n", + "['AAPL', '2024-12-27', '165.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '61.65', '50', '30', '76', '65.15', '50']\n", + "['AAPL', '2025-02-21', '180.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '50.20', '50', '30', '76', '50.85', '50']\n", + "['AAPL', '2026-06-18', '30.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '40', '7', '0.06', '50', '37', '7', '0.13', '50']\n", + "['AAPL', '2025-06-20', '35.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '46', '0.00', '50', '51', '7', '0.23', '50']\n", + "['AAPL', '2025-01-17', '205.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:53:20.747', '1.62', '1.62', '1.25', '1.32', '1395', '131', '1', '46', '1.22', '50', '8', '11', '1.32', '50']\n", + "['AAPL', '2026-12-18', '15.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '210.40', '50', '30', '76', '214.40', '50']\n", + "['AAPL', '2027-01-15', '105.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '17', '22', '129.00', '50', '28', '76', '133.25', '50']\n", + "['AAPL', '2024-12-20', '65.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '7', '0.00', '50', '43', '1', '0.01', '50']\n", + "['AAPL', '2025-01-17', '360.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '132.15', '50', '30', '76', '132.70', '50']\n", + "['AAPL', '2024-11-29', '255.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '29', '76', '27.25', '50', '28', '76', '27.90', '50']\n", + "['AAPL', '2025-09-19', '10.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '10', '4', '0.03', '50']\n", + "['AAPL', '2024-11-22', '155.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '1', '0.01', '50', '20', '4', '0.03', '50']\n", + "['AAPL', '2025-04-17', '140.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '22', '0.00', '50', '29', '76', '0.35', '50']\n", + "['AAPL', '2025-01-17', '20.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '7', '0.00', '50', '1', '7', '0.01', '50']\n", + "['AAPL', '2025-09-19', '45.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '39', '7', '0.02', '50', '10', '1', '0.07', '50']\n", + "['AAPL', '2026-06-18', '60.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '36', '7', '0.22', '50', '40', '7', '0.30', '50']\n", + "['AAPL', '2024-12-13', '145.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '46', '0.00', '50', '21', '42', '0.11', '50']\n", + "['AAPL', '2025-09-19', '295.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:51:18.116', '3.10', '3.22', '3.10', '3.22', '2', '2', '45', '60', '3.20', '50', '62', '43', '3.40', '50']\n", + "['AAPL', '2025-04-17', '235.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:20:00.459', '16.00', '16.00', '14.90', '14.90', '44', '8', '10', '76', '14.65', '50', '10', '76', '14.95', '50']\n", + "['AAPL', '2024-11-22', '207.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '48', '76', '20.20', '50', '11', '76', '20.80', '50']\n", + "['AAPL', '2024-11-15', '15.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '1002', '7', '0.01', '50']\n", + "['AAPL', '2025-01-17', '10.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '503', '7', '0.01', '50']\n", + "['AAPL', '2025-01-17', '55.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:48:10.565', '171.52', '172.85', '171.52', '172.85', '46', '3', '30', '76', '172.55', '50', '2', '7', '174.35', '50']\n", + "['AAPL', '2027-01-15', '330.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '11', '100.00', '50', '2', '11', '105.00', '50']\n", + "['AAPL', '2025-08-15', '120.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:22:10.183', '111.52', '111.75', '111.52', '111.75', '65', '2', '30', '76', '111.00', '50', '30', '76', '113.55', '50']\n", + "['AAPL', '2024-11-15', '105.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '122.25', '50', '30', '76', '122.80', '50']\n", + "['AAPL', '2025-12-19', '280.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:57.042', '7.85', '8.25', '7.85', '8.24', '67', '5', '10', '42', '8.05', '50', '41', '7', '8.85', '50']\n", + "['AAPL', '2024-11-22', '205.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:50:10.724', '0.25', '0.25', '0.15', '0.17', '71', '29', '65', '42', '0.15', '50', '20', '60', '0.18', '50']\n", + "['AAPL', '2027-01-15', '45.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '404', '22', '0.01', '50', '337', '22', '0.58', '50']\n", + "['AAPL', '2025-08-15', '315.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '18', '7', '1.28', '50', '1', '4', '1.37', '50']\n", + "['AAPL', '2024-11-15', '227.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:59.928', '1.75', '2.87', '1.72', '2.75', '11137', '3091', '30', '11', '2.60', '50', '3', '7', '2.80', '50']\n", + "['AAPL', '2027-01-15', '240.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:39:28.566', '34.05', '34.20', '34.05', '34.20', '3', '2', '2', '69', '34.40', '50', '2', '1', '35.20', '50']\n", + "['AAPL', '2025-06-20', '235.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:22:55.733', '14.57', '15.40', '14.38', '15.40', '452', '66', '2', '4', '14.75', '50', '6', '1', '15.35', '50']\n", + "['AAPL', '2024-12-13', '225.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:31:38.835', '6.10', '7.50', '6.05', '7.35', '433', '81', '45', '11', '6.25', '50', '1', '7', '8.10', '50']\n", + "['AAPL', '2024-11-29', '140.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:56:10.485', '0.02', '0.02', '0.02', '0.02', '10', '3', '0', '46', '0.00', '50', '15', '60', '0.25', '50']\n", + "['AAPL', '2024-12-06', '210.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:47:27.733', '17.20', '19.05', '17.13', '18.99', '220', '19', '1', '11', '18.65', '50', '4', '7', '19.20', '50']\n", + "['AAPL', '2025-02-21', '190.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:48:53.313', '1.24', '1.24', '1.05', '1.05', '103', '15', '30', '76', '1.06', '50', '34', '11', '1.11', '50']\n", + "['AAPL', '2024-11-29', '120.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '22', '76', '0.02', '50']\n", + "['AAPL', '2024-11-08', '245.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:50:10.309', '0.01', '0.01', '0.01', '0.01', '78', '23', '0', '22', '0.00', '50', '450', '11', '0.01', '50']\n", + "['AAPL', '2027-01-15', '105.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '20', '76', '0.96', '50', '20', '76', '1.24', '50']\n", + "['AAPL', '2025-02-21', '175.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:50:10.812', '55.05', '55.05', '55.05', '55.05', '1', '1', '30', '76', '54.70', '50', '30', '76', '55.65', '50']\n", + "['AAPL', '2024-11-08', '235.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:55:50.157', '9.40', '10.00', '7.40', '7.86', '105', '51', '1', '7', '6.20', '50', '12', '76', '7.95', '50']\n", + "['AAPL', '2024-12-27', '260.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '11', '0.00', '50', '81', '22', '2.39', '50']\n", + "['AAPL', '2024-11-15', '140.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:32:31.566', '86.87', '87.60', '86.65', '87.59', '394', '25', '30', '76', '87.25', '50', '30', '76', '87.80', '50']\n", + "['AAPL', '2024-11-08', '192.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '32', '76', '0.01', '50']\n", + "['AAPL', '2024-11-29', '300.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '23', '47', '0.01', '50']\n", + "['AAPL', '2024-11-15', '145.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T09:30:00.325', '0.01', '0.01', '0.01', '0.01', '3', '1', '0', '76', '0.00', '50', '27', '76', '0.01', '50']\n", + "['AAPL', '2026-06-18', '110.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '61', '7', '0.86', '50', '69', '7', '0.93', '50']\n", + "['AAPL', '2025-03-21', '20.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '23', '11', '0.02', '50']\n", + "['AAPL', '2024-11-29', '180.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:05:19.339', '46.70', '47.54', '46.70', '47.54', '2', '2', '4', '47', '47.70', '50', '15', '7', '48.30', '50']\n", + "['AAPL', '2024-12-06', '110.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '117.00', '50', '30', '76', '118.15', '50']\n", + "['AAPL', '2026-12-18', '210.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:27:46.374', '48.89', '50.11', '48.89', '50.05', '10', '6', '20', '76', '49.75', '50', '32', '11', '50.30', '50']\n", + "['AAPL', '2026-01-16', '40.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '22', '22', '186.50', '50', '30', '76', '190.45', '50']\n", + "['AAPL', '2024-11-22', '100.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '5', '4', '0.01', '50']\n", + "['AAPL', '2024-11-22', '220.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:50:53.631', '7.55', '9.15', '7.35', '8.62', '324', '104', '2', '4', '8.40', '50', '3', '31', '10.00', '50']\n", + "['AAPL', '2025-12-19', '220.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:17:45.003', '15.85', '15.85', '14.90', '14.90', '8', '4', '1', '7', '13.80', '50', '9', '7', '16.80', '50']\n", + "['AAPL', '2026-06-18', '350.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:43:56.646', '3.10', '3.25', '3.06', '3.25', '26', '8', '32', '60', '3.20', '50', '41', '76', '3.35', '50']\n", + "['AAPL', '2027-01-15', '100.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '110', '22', '0.84', '50', '30', '11', '1.05', '50']\n", + "['AAPL', '2025-12-19', '185.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:37:39.074', '56.25', '56.25', '56.25', '56.25', '2', '1', '1', '76', '55.20', '50', '10', '76', '56.50', '50']\n", + "['AAPL', '2025-02-21', '170.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:31:00.443', '0.48', '0.48', '0.44', '0.44', '112', '7', '17', '7', '0.42', '50', '26', '7', '0.44', '50']\n", + "['AAPL', '2024-12-20', '315.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '46', '0.00', '50', '47', '22', '0.25', '50']\n", + "['AAPL', '2024-12-06', '225.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:51:36.525', '4.15', '4.65', '3.35', '3.60', '484', '77', '1', '60', '2.67', '50', '24', '7', '4.50', '50']\n", + "['AAPL', '2024-11-08', '225.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:57.2', '1.30', '3.10', '1.23', '2.67', '32757', '6204', '12', '46', '2.50', '50', '43', '7', '2.99', '50']\n", + "['AAPL', '2026-12-18', '190.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:43:12.358', '62.25', '63.00', '62.25', '63.00', '29', '15', '10', '76', '62.60', '50', '1', '69', '64.10', '50']\n", + "['AAPL', '2024-12-13', '155.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '21', '42', '0.09', '50']\n", + "['AAPL', '2024-12-06', '220.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:56:20.219', '2.56', '2.62', '1.85', '2.04', '208', '87', '1', '31', '1.80', '50', '49', '11', '2.01', '50']\n", + "['AAPL', '2024-12-20', '300.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '72.20', '50', '30', '76', '72.85', '50']\n", + "['AAPL', '2024-12-20', '305.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T10:12:01.415', '0.01', '0.01', '0.01', '0.01', '20', '1', '0', '76', '0.00', '50', '18', '76', '0.02', '50']\n", + "['AAPL', '2026-01-16', '260.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '119', '4', '36.35', '50', '26', '5', '37.35', '50']\n", + "['AAPL', '2024-11-15', '125.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '101.90', '50', '30', '76', '103.20', '50']\n", + "['AAPL', '2027-01-15', '240.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:11:49.955', '30.94', '30.94', '30.10', '30.10', '3', '3', '1', '46', '28.80', '50', '93', '11', '30.55', '50']\n", + "['AAPL', '2025-06-20', '165.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T10:12:52.384', '1.47', '1.48', '1.40', '1.40', '8', '3', '28', '7', '1.27', '50', '12', '42', '1.34', '50']\n", + "['AAPL', '2024-11-15', '40.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '187.25', '50', '3', '60', '187.80', '50']\n", + "['AAPL', '2024-12-20', '220.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:18.574', '9.77', '11.70', '9.70', '11.43', '895', '228', '1', '46', '10.50', '50', '48', '60', '12.00', '50']\n", + "['AAPL', '2024-12-06', '175.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '15', '7', '52.80', '50', '5', '60', '53.45', '50']\n", + "['AAPL', '2025-12-19', '80.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '110', '7', '0.23', '50', '75', '7', '0.27', '50']\n", + "['AAPL', '2025-01-17', '200.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:57:16.987', '28.25', '30.60', '28.25', '29.85', '606', '187', '48', '76', '29.20', '50', '2', '7', '31.50', '50']\n", + "['AAPL', '2024-12-06', '290.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '10', '4', '0.02', '50']\n", + "['AAPL', '2024-12-06', '255.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:46.432', '0.14', '0.15', '0.12', '0.15', '100', '22', '30', '7', '0.11', '50', '87', '6', '0.15', '50']\n", + "['AAPL', '2024-12-06', '130.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '97.70', '50', '3', '6', '99.40', '50']\n", + "['AAPL', '2026-01-16', '130.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T11:50:14.093', '1.14', '1.14', '1.14', '1.14', '1', '1', '54', '7', '1.06', '50', '33', '7', '1.13', '50']\n", + "['AAPL', '2024-11-29', '170.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T09:42:46.236', '0.05', '0.05', '0.05', '0.05', '25', '6', '13', '7', '0.03', '50', '17', '7', '0.10', '50']\n", + "['AAPL', '2025-01-17', '225.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:59:25.321', '7.35', '7.35', '5.65', '5.70', '1316', '292', '1', '31', '5.20', '50', '1', '60', '6.80', '50']\n", + "['AAPL', '2025-08-15', '205.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:45:00.541', '7.57', '7.57', '7.57', '7.57', '1', '1', '75', '4', '7.35', '50', '26', '4', '7.55', '50']\n", + "['AAPL', '2026-12-18', '90.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '11', '142.00', '50', '25', '22', '145.85', '50']\n", + "['AAPL', '2024-12-20', '215.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:18.574', '14.42', '15.60', '13.75', '15.39', '210', '53', '33', '22', '14.25', '50', '1', '7', '16.50', '50']\n", + "['AAPL', '2024-11-08', '150.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:30:28.748', '77.25', '77.25', '77.25', '77.25', '20', '1', '30', '11', '77.15', '50', '11', '60', '78.05', '50']\n", + "['AAPL', '2024-12-27', '245.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '107', '4', '16.65', '50', '95', '4', '18.25', '50']\n", + "['AAPL', '2025-04-17', '285.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:30:49.686', '0.90', '1.01', '0.90', '1.01', '14', '5', '31', '60', '0.98', '50', '41', '5', '1.04', '50']\n", + "['AAPL', '2025-06-20', '110.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '84', '7', '0.23', '50', '70', '7', '0.26', '50']\n", + "['AAPL', '2024-11-15', '195.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:35:13.755', '0.07', '0.07', '0.05', '0.06', '146', '34', '18', '7', '0.05', '50', '9', '42', '0.08', '50']\n", + "['AAPL', '2024-11-15', '165.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:55:00.206', '61.96', '62.10', '61.96', '62.10', '212', '5', '6', '47', '62.30', '50', '3', '76', '62.85', '50']\n", + "['AAPL', '2025-02-21', '130.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '99.00', '50', '30', '76', '99.65', '50']\n", + "['AAPL', '2024-11-29', '160.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:05:28.434', '0.04', '0.04', '0.04', '0.04', '1', '1', '20', '11', '0.01', '50', '30', '11', '0.06', '50']\n", + "['AAPL', '2026-12-18', '165.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '31', '11', '5.75', '50', '42', '60', '6.00', '50']\n", + "['AAPL', '2026-06-18', '20.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '8', '7', '205.80', '50', '30', '76', '209.35', '50']\n", + "['AAPL', '2025-09-19', '305.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:30:05.84', '2.14', '2.14', '2.14', '2.14', '32', '2', '4', '4', '2.35', '50', '1', '7', '2.63', '50']\n", + "['AAPL', '2024-12-13', '115.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '43', '0.00', '50', '27', '69', '0.22', '50']\n", + "['AAPL', '2024-11-22', '217.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:55:00.147', '1.21', '1.30', '0.74', '0.84', '290', '113', '37', '22', '0.70', '50', '32', '11', '0.81', '50']\n", + "['AAPL', '2024-12-20', '15.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '502', '7', '0.01', '50']\n", + "['AAPL', '2025-03-21', '160.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:47:38.316', '0.45', '0.46', '0.43', '0.44', '116', '8', '43', '11', '0.42', '50', '44', '7', '0.45', '50']\n", + "['AAPL', '2025-06-20', '120.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '110.60', '50', '18', '22', '111.30', '50']\n", + "['AAPL', '2024-11-29', '235.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:50:06.899', '10.15', '10.26', '8.55', '8.90', '29', '18', '15', '11', '8.40', '50', '20', '5', '8.80', '50']\n", + "['AAPL', '2025-01-17', '145.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:57:24.599', '81.90', '83.70', '81.90', '83.60', '123', '10', '30', '76', '83.65', '50', '30', '76', '84.60', '50']\n", + "['AAPL', '2025-01-17', '300.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:54:29.894', '0.06', '0.06', '0.05', '0.05', '1313', '84', '28', '7', '0.05', '50', '40', '65', '0.06', '50']\n", + "['AAPL', '2025-09-19', '320.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:19:57.389', '1.33', '1.46', '1.33', '1.46', '139', '6', '40', '60', '1.44', '50', '31', '11', '1.52', '50']\n", + "['AAPL', '2026-01-16', '35.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '40', '7', '0.03', '50', '42', '7', '0.09', '50']\n", + "['AAPL', '2025-01-17', '320.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:42:58.22', '0.03', '0.03', '0.03', '0.03', '2', '2', '30', '7', '0.02', '50', '2', '60', '0.07', '50']\n", + "['AAPL', '2024-12-27', '215.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:42:59.555', '2.63', '2.63', '1.95', '2.03', '26', '7', '45', '43', '0.77', '50', '26', '60', '2.94', '50']\n", + "['AAPL', '2024-11-22', '185.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T09:59:06.872', '0.06', '0.06', '0.06', '0.06', '1', '1', '26', '7', '0.06', '50', '42', '7', '0.08', '50']\n", + "['AAPL', '2025-08-15', '350.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:22:27.176', '0.46', '0.48', '0.45', '0.46', '6', '4', '35', '7', '0.45', '50', '56', '7', '0.49', '50']\n", + "['AAPL', '2027-01-15', '310.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:58:26.896', '11.90', '12.00', '11.75', '12.00', '28', '5', '30', '11', '11.20', '50', '2', '60', '12.45', '50']\n", + "['AAPL', '2024-11-08', '290.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '11', '62.05', '50', '30', '11', '63.15', '50']\n", + "['AAPL', '2025-02-21', '360.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '7', '0.02', '50', '47', '7', '0.19', '50']\n", + "['AAPL', '2027-01-15', '90.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '17', '22', '142.50', '50', '2', '11', '147.50', '50']\n", + "['AAPL', '2024-11-29', '300.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:50:00.124', '72.60', '72.60', '72.60', '72.60', '1', '1', '30', '76', '72.20', '50', '30', '76', '73.00', '50']\n", + "['AAPL', '2024-11-08', '140.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '401', '7', '0.01', '50']\n", + "['AAPL', '2025-09-19', '240.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:51:06.888', '16.55', '17.38', '16.55', '17.04', '35', '19', '1', '76', '16.20', '50', '1', '22', '17.40', '50']\n", + "['AAPL', '2024-12-06', '180.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T09:48:23.008', '0.11', '0.11', '0.11', '0.11', '5', '1', '31', '11', '0.10', '50', '31', '7', '0.14', '50']\n", + "['AAPL', '2026-12-18', '150.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:14:03.774', '3.99', '3.99', '3.90', '3.90', '13', '3', '57', '76', '3.80', '50', '48', '60', '4.00', '50']\n", + "['AAPL', '2026-06-18', '85.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T11:54:08.114', '0.47', '0.47', '0.47', '0.47', '1', '1', '106', '7', '0.43', '50', '98', '7', '0.49', '50']\n", + "['AAPL', '2025-09-19', '210.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:01:03.854', '10.25', '10.25', '9.60', '9.60', '95', '8', '39', '7', '9.05', '50', '51', '11', '9.60', '50']\n", + "['AAPL', '2024-12-13', '300.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '60', '0.00', '50', '10', '76', '0.03', '50']\n", + "['AAPL', '2024-11-15', '155.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:42:03.253', '0.01', '0.01', '0.01', '0.01', '500', '18', '0', '1', '0.00', '50', '100', '31', '0.01', '50']\n", + "['AAPL', '2026-01-16', '60.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '40', '7', '0.13', '50', '54', '4', '0.20', '50']\n", + "['AAPL', '2024-11-29', '115.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '20', '76', '0.02', '50']\n", + "['AAPL', '2024-11-22', '265.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '37.25', '50', '28', '76', '38.00', '50']\n", + "['AAPL', '2025-08-15', '150.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '13', '22', '82.05', '50', '30', '76', '84.60', '50']\n", + "['AAPL', '2024-12-06', '285.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '47', '11', '0.03', '50']\n", + "['AAPL', '2025-01-17', '65.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '55', '4', '0.03', '50']\n", + "['AAPL', '2026-01-16', '265.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '76', '40.00', '50', '61', '4', '42.25', '50']\n", + "['AAPL', '2026-01-16', '45.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '8', '7', '182.10', '50', '30', '76', '185.70', '50']\n", + "['AAPL', '2024-12-20', '20.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '207.25', '50', '30', '76', '207.80', '50']\n", + "['AAPL', '2024-11-22', '217.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:57:41.465', '9.75', '10.57', '9.35', '10.57', '74', '16', '4', '7', '9.60', '50', '4', '7', '12.60', '50']\n", + "['AAPL', '2026-06-18', '125.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '47', '7', '1.35', '50', '57', '7', '1.44', '50']\n", + "['AAPL', '2024-11-08', '110.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '46', '0.00', '50', '35', '76', '0.01', '50']\n", + "['AAPL', '2026-06-18', '5.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '46', '0.00', '50', '43', '42', '0.21', '50']\n", + "['AAPL', '2024-11-08', '210.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:39:04.457', '14.59', '17.67', '14.59', '17.42', '703', '43', '10', '76', '17.15', '50', '9', '11', '17.75', '50']\n", + "['AAPL', '2025-03-21', '135.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:53:58.818', '93.50', '94.65', '93.23', '94.65', '10', '10', '30', '60', '94.05', '50', '3', '6', '96.55', '50']\n", + "['AAPL', '2024-12-20', '240.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:56:45.645', '14.87', '15.21', '13.40', '13.70', '103', '38', '2', '7', '12.50', '50', '2', '7', '14.50', '50']\n", + "['AAPL', '2024-12-20', '65.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:08:13.606', '162.80', '162.80', '162.80', '162.80', '131', '1', '2', '7', '161.20', '50', '30', '76', '163.05', '50']\n", + "['AAPL', '2025-08-15', '310.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '31', '80.45', '50', '1', '22', '84.60', '50']\n", + "['AAPL', '2024-12-20', '80.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:35:12.722', '147.70', '147.70', '147.70', '147.70', '5', '1', '30', '76', '147.35', '50', '30', '76', '148.15', '50']\n", + "['AAPL', '2025-08-15', '325.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '6', '7', '95.80', '50', '7', '7', '99.35', '50']\n", + "['AAPL', '2024-12-20', '135.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:02:46.145', '91.75', '93.15', '91.75', '93.15', '11', '5', '30', '76', '92.75', '50', '30', '76', '93.50', '50']\n", + "['AAPL', '2024-11-08', '237.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:31.803', '0.01', '0.02', '0.01', '0.01', '1943', '213', '0', '76', '0.00', '50', '71', '7', '0.01', '50']\n", + "['AAPL', '2026-01-16', '115.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '1', '0.70', '50', '62', '7', '0.73', '50']\n", + "['AAPL', '2025-01-17', '20.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '205.65', '50', '3', '1', '209.20', '50']\n", + "['AAPL', '2025-04-17', '175.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:55:50.321', '55.75', '56.80', '55.75', '56.80', '18', '3', '5', '7', '55.05', '50', '8', '76', '57.50', '50']\n", + "['AAPL', '2024-12-27', '285.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '56.10', '50', '30', '76', '59.55', '50']\n", + "['AAPL', '2024-12-27', '180.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '46.85', '50', '30', '76', '50.30', '50']\n", + "['AAPL', '2025-09-19', '165.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:44:26.525', '2.29', '2.29', '2.14', '2.14', '7', '3', '42', '7', '2.09', '50', '19', '47', '2.19', '50']\n", + "['AAPL', '2025-04-17', '315.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T10:35:11.541', '0.25', '0.25', '0.25', '0.25', '1', '1', '31', '5', '0.24', '50', '41', '7', '0.29', '50']\n", + "['AAPL', '2024-12-27', '175.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:31:58.12', '0.11', '0.17', '0.11', '0.16', '31', '11', '0', '76', '0.00', '50', '78', '22', '2.28', '50']\n", + "['AAPL', '2025-01-17', '205.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:56:59.484', '24.52', '25.91', '24.00', '25.50', '100', '30', '30', '11', '25.55', '50', '2', '1', '26.85', '50']\n", + "['AAPL', '2025-09-19', '210.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:50:12.497', '33.01', '34.16', '33.01', '34.11', '21', '10', '8', '11', '34.20', '50', '8', '7', '36.25', '50']\n", + "['AAPL', '2024-11-22', '155.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '70.65', '50', '1', '42', '74.00', '50']\n", + "['AAPL', '2025-03-21', '110.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:16:37.26', '119.52', '119.52', '119.52', '119.52', '18', '1', '30', '76', '118.65', '50', '3', '1', '121.00', '50']\n", + "['AAPL', '2025-06-20', '20.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '9', '205.80', '50', '5', '7', '209.35', '50']\n", + "['AAPL', '2025-02-21', '215.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:51:13.785', '18.85', '19.95', '18.65', '19.63', '129', '31', '3', '11', '19.85', '50', '2', '22', '20.10', '50']\n", + "['AAPL', '2025-12-19', '185.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T11:48:33.33', '5.80', '5.80', '5.80', '5.80', '1', '1', '31', '11', '5.55', '50', '37', '11', '5.75', '50']\n", + "['AAPL', '2026-01-16', '60.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:51:13.04', '169.17', '169.17', '169.17', '169.17', '2', '1', '1', '4', '168.00', '50', '18', '22', '170.95', '50']\n", + "['AAPL', '2026-01-16', '340.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:09:05.298', '1.94', '1.94', '1.94', '1.94', '3', '1', '45', '60', '1.88', '50', '31', '47', '2.00', '50']\n", + "['AAPL', '2024-11-08', '245.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T11:48:35.312', '19.35', '19.40', '18.50', '18.50', '66', '14', '10', '76', '17.30', '50', '19', '7', '18.25', '50']\n", + "['AAPL', '2025-01-17', '105.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '48', '7', '0.04', '50', '44', '69', '0.07', '50']\n", + "['AAPL', '2025-09-19', '130.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:26:50.446', '102.31', '102.31', '102.31', '102.31', '8', '1', '2', '60', '102.15', '50', '30', '76', '103.85', '50']\n", + "['AAPL', '2025-01-17', '105.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:48:16.357', '122.43', '123.32', '122.43', '123.32', '41', '3', '30', '76', '123.40', '50', '7', '60', '123.90', '50']\n", + "['AAPL', '2024-11-22', '290.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '12', '69', '0.01', '50']\n", + "['AAPL', '2024-11-08', '275.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '11', '46.85', '50', '30', '11', '48.20', '50']\n", + "['AAPL', '2025-12-19', '210.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:49:48.654', '37.25', '37.95', '37.25', '37.95', '4', '3', '30', '11', '36.15', '50', '1', '42', '38.35', '50']\n", + "['AAPL', '2026-01-16', '145.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:15:00.531', '90.90', '90.90', '90.90', '90.90', '2', '1', '30', '76', '90.50', '50', '30', '76', '92.20', '50']\n", + "['AAPL', '2026-01-16', '255.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '153', '9', '33.05', '50', '20', '76', '35.40', '50']\n", + "['AAPL', '2025-02-21', '325.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '65', '7', '0.05', '50', '44', '7', '0.07', '50']\n", + "['AAPL', '2025-12-19', '195.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T10:17:23.142', '47.50', '47.50', '47.35', '47.35', '18', '4', '1', '7', '47.55', '50', '2', '5', '48.90', '50']\n", + "['AAPL', '2025-04-17', '295.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '31', '5', '0.60', '50', '42', '7', '0.64', '50']\n", + "['AAPL', '2026-06-18', '225.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '28', '4', '19.85', '50', '1', '42', '21.20', '50']\n", + "['AAPL', '2024-11-29', '130.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '43', '0.00', '50', '5', '1', '0.02', '50']\n", + "['AAPL', '2024-11-15', '185.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:42:28.49', '0.03', '0.04', '0.03', '0.03', '269', '28', '26', '7', '0.03', '50', '4', '7', '0.04', '50']\n", + "['AAPL', '2024-12-20', '85.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '1', '0.01', '50', '34', '76', '0.03', '50']\n", + "['AAPL', '2024-12-20', '30.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '102', '7', '0.01', '50']\n", + "['AAPL', '2025-03-21', '160.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '6', '68.60', '50', '5', '22', '72.15', '50']\n", + "['AAPL', '2024-11-29', '210.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:51:15.143', '0.71', '0.71', '0.38', '0.44', '528', '131', '12', '7', '0.38', '50', '8', '42', '0.42', '50']\n", + "['AAPL', '2025-01-17', '355.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '127.15', '50', '30', '76', '128.20', '50']\n", + "['AAPL', '2024-12-20', '180.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:28:41.031', '0.17', '0.18', '0.16', '0.18', '487', '55', '20', '7', '0.17', '50', '22', '7', '0.18', '50']\n", + "['AAPL', '2025-01-17', '315.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:32:45.484', '0.04', '0.04', '0.04', '0.04', '1', '1', '48', '7', '0.02', '50', '48', '7', '0.13', '50']\n", + "['AAPL', '2024-11-15', '205.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:51:03.382', '21.03', '22.85', '20.33', '22.30', '201', '26', '1', '6', '20.60', '50', '1', '47', '23.85', '50']\n", + "['AAPL', '2024-12-06', '120.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '106.00', '50', '30', '76', '108.20', '50']\n", + "['AAPL', '2024-12-13', '260.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '32.20', '50', '7', '60', '32.95', '50']\n", + "['AAPL', '2024-12-20', '35.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '102', '7', '0.01', '50']\n", + "['AAPL', '2025-06-20', '55.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:48:10.565', '173.40', '173.40', '173.29', '173.35', '50', '3', '30', '76', '171.70', '50', '30', '76', '175.35', '50']\n", + "['AAPL', '2025-09-19', '95.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:28:11.136', '135.29', '136.01', '135.29', '136.01', '18', '2', '30', '76', '135.20', '50', '30', '76', '136.95', '50']\n", + "['AAPL', '2024-11-15', '70.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '7', '0.00', '50', '1', '7', '0.01', '50']\n", + "['AAPL', '2027-01-15', '440.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '76', '1.62', '50', '67', '4', '1.91', '50']\n", + "['AAPL', '2024-11-22', '135.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:50:00.09', '92.65', '92.65', '92.65', '92.65', '1', '1', '30', '76', '92.40', '50', '9', '60', '92.95', '50']\n", + "['AAPL', '2024-11-15', '210.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:59:34.098', '0.23', '0.24', '0.12', '0.13', '2856', '376', '30', '11', '0.12', '50', '33', '11', '0.14', '50']\n", + "['AAPL', '2025-06-20', '15.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '10', '4', '0.02', '50']\n", + "['AAPL', '2025-06-20', '50.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:16:46.88', '0.04', '0.05', '0.03', '0.05', '806', '8', '184', '7', '0.02', '50', '39', '76', '0.06', '50']\n", + "['AAPL', '2024-12-27', '210.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:56:50.442', '19.09', '19.50', '18.87', '19.45', '14', '10', '39', '11', '18.80', '50', '85', '11', '22.05', '50']\n", + "['AAPL', '2026-12-18', '200.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:47:36.319', '14.20', '14.20', '13.60', '13.60', '179', '24', '19', '11', '13.45', '50', '20', '76', '13.80', '50']\n", + "['AAPL', '2025-01-17', '120.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:12:01.755', '0.07', '0.07', '0.07', '0.07', '11', '2', '49', '7', '0.06', '50', '41', '7', '0.08', '50']\n", + "['AAPL', '2025-08-15', '330.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '6', '7', '100.75', '50', '6', '7', '104.35', '50']\n", + "['AAPL', '2027-01-15', '45.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:23:03.305', '184.00', '184.00', '184.00', '184.00', '1', '1', '30', '22', '183.00', '50', '31', '76', '187.50', '50']\n", + "['AAPL', '2026-12-18', '220.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:23:54.825', '42.15', '44.55', '42.15', '44.55', '10', '7', '33', '11', '43.95', '50', '30', '11', '45.10', '50']\n", + "['AAPL', '2025-06-20', '20.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '23', '76', '0.02', '50']\n", + "['AAPL', '2026-12-18', '220.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T09:30:06.267', '21.72', '21.72', '21.72', '21.72', '1', '1', '1', '42', '19.40', '50', '30', '11', '20.75', '50']\n", + "['AAPL', '2026-01-16', '275.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '200', '4', '47.15', '50', '112', '4', '49.45', '50']\n", + "['AAPL', '2025-12-19', '10.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '215.70', '50', '7', '7', '219.30', '50']\n", + "['AAPL', '2025-01-17', '170.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:30:46.966', '58.20', '59.10', '57.60', '59.10', '18', '12', '1', '60', '58.25', '50', '5', '7', '59.60', '50']\n", + "['AAPL', '2024-11-22', '130.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '96.85', '50', '30', '76', '97.90', '50']\n", + "['AAPL', '2025-01-17', '375.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '36', '11', '0.02', '50']\n", + "['AAPL', '2025-12-19', '70.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '27', '22', '159.25', '50', '18', '22', '161.20', '50']\n", + "['AAPL', '2026-06-18', '170.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:46:11.607', '72.93', '72.93', '72.82', '72.82', '6', '6', '16', '76', '72.70', '50', '1', '11', '73.25', '50']\n", + "['AAPL', '2024-11-15', '315.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:55:00.199', '88.00', '88.00', '88.00', '88.00', '1', '1', '30', '76', '87.25', '50', '30', '76', '88.80', '50']\n", + "['AAPL', '2025-12-19', '125.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '36', '7', '0.85', '50', '76', '11', '0.91', '50']\n", + "['AAPL', '2027-01-15', '230.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:15:24.367', '39.20', '40.00', '38.90', '40.00', '44', '19', '76', '22', '39.35', '50', '1', '7', '41.35', '50']\n", + "['AAPL', '2024-12-20', '100.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:03:21.707', '127.35', '127.35', '127.35', '127.35', '51', '2', '30', '76', '127.35', '50', '30', '76', '128.30', '50']\n", + "['AAPL', '2026-01-16', '110.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '36', '7', '0.59', '50', '60', '7', '0.63', '50']\n", + "['AAPL', '2025-09-19', '5.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '220.85', '50', '30', '76', '224.30', '50']\n", + "['AAPL', '2025-08-15', '230.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:58:03.82', '19.20', '20.60', '19.20', '20.60', '31', '7', '10', '7', '18.65', '50', '8', '7', '22.55', '50']\n", + "['AAPL', '2024-11-22', '235.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:59.935', '0.73', '1.12', '0.73', '1.07', '2438', '511', '5', '65', '0.95', '50', '2', '69', '1.15', '50']\n", + "['AAPL', '2025-03-21', '100.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:05:48.22', '127.85', '127.85', '127.83', '127.83', '70', '2', '30', '76', '127.20', '50', '3', '1', '130.80', '50']\n", + "['AAPL', '2024-11-22', '255.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '27.25', '50', '28', '76', '27.85', '50']\n", + "['AAPL', '2024-11-15', '235.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:59:23.63', '10.45', '10.45', '7.77', '7.95', '215', '61', '2', '7', '7.25', '50', '2', '7', '8.85', '50']\n", + "['AAPL', '2025-06-20', '15.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '6', '7', '210.70', '50', '27', '76', '213.95', '50']\n", + "['AAPL', '2025-02-21', '165.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:51:14.621', '0.42', '0.42', '0.37', '0.37', '26', '5', '45', '7', '0.35', '50', '47', '7', '0.38', '50']\n", + "['AAPL', '2026-06-18', '310.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '15', '60', '80.75', '50', '15', '60', '84.15', '50']\n", + "['AAPL', '2025-02-21', '135.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '77', '7', '0.17', '50', '1', '1', '0.18', '50']\n", + "['AAPL', '2025-08-15', '305.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:03:38.852', '1.75', '1.75', '1.75', '1.75', '5', '1', '16', '42', '1.80', '50', '33', '43', '1.96', '50']\n", + "['AAPL', '2024-11-08', '110.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '60', '117.00', '50', '7', '60', '118.20', '50']\n", + "['AAPL', '2025-12-19', '215.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:51:20.758', '13.53', '13.53', '13.15', '13.15', '5', '3', '1', '7', '12.00', '50', '10', '7', '15.05', '50']\n", + "['AAPL', '2026-01-16', '265.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:16:58.845', '12.40', '12.40', '12.40', '12.40', '1', '1', '30', '11', '12.45', '50', '32', '11', '13.00', '50']\n", + "['AAPL', '2025-06-20', '40.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '22', '186.30', '50', '28', '76', '189.40', '50']\n", + "['AAPL', '2025-02-21', '300.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:36:44.167', '0.16', '0.16', '0.15', '0.16', '26', '3', '31', '11', '0.15', '50', '71', '7', '0.17', '50']\n", + "['AAPL', '2025-09-19', '310.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:28:51.845', '1.94', '2.06', '1.90', '2.06', '13', '10', '16', '42', '1.98', '50', '7', '69', '2.07', '50']\n", + "['AAPL', '2024-11-15', '100.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '252', '7', '0.01', '50']\n", + "['AAPL', '2025-03-21', '185.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:43:40.991', '1.57', '1.57', '1.21', '1.23', '46', '11', '31', '11', '1.18', '50', '10', '42', '1.24', '50']\n", + "['AAPL', '2025-02-21', '320.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:11:04.077', '0.06', '0.06', '0.06', '0.06', '1', '1', '63', '7', '0.06', '50', '46', '7', '0.08', '50']\n", + "['AAPL', '2025-09-19', '135.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '18', '22', '96.30', '50', '30', '76', '99.10', '50']\n", + "['AAPL', '2026-12-18', '330.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:50:55.291', '8.03', '8.30', '8.03', '8.30', '6', '3', '24', '60', '8.20', '50', '1', '11', '8.45', '50']\n", + "['AAPL', '2025-12-19', '330.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:42:48.493', '2.14', '2.14', '2.14', '2.14', '3', '2', '8', '22', '2.11', '50', '41', '7', '2.60', '50']\n", + "['AAPL', '2024-12-13', '195.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:11:52.566', '0.32', '0.32', '0.24', '0.25', '8', '4', '46', '4', '0.24', '50', '11', '42', '0.27', '50']\n", + "['AAPL', '2026-12-18', '35.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '33', '7', '0.15', '50', '33', '7', '0.22', '50']\n", + "['AAPL', '2027-01-15', '85.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '17', '22', '147.00', '50', '2', '11', '152.00', '50']\n", + "['AAPL', '2025-06-20', '55.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '35', '7', '0.03', '50', '30', '4', '0.06', '50']\n", + "['AAPL', '2024-11-29', '280.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '52.20', '50', '30', '76', '53.30', '50']\n", + "['AAPL', '2027-01-15', '155.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '42', '88.10', '50', '1', '42', '90.90', '50']\n", + "['AAPL', '2024-11-22', '215.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:59:20.226', '0.98', '0.98', '0.48', '0.51', '1587', '178', '1', '7', '0.48', '50', '30', '11', '0.57', '50']\n", + "['AAPL', '2025-04-17', '175.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T10:50:47.659', '1.14', '1.14', '1.14', '1.14', '2', '1', '19', '7', '1.04', '50', '44', '4', '1.08', '50']\n", + "['AAPL', '2025-03-21', '170.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:43:41.049', '0.70', '0.70', '0.63', '0.63', '38', '5', '23', '7', '0.60', '50', '31', '11', '0.63', '50']\n", + "['AAPL', '2024-11-29', '275.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:48:43.715', '0.01', '0.01', '0.01', '0.01', '3', '2', '17', '7', '0.01', '50', '32', '76', '0.03', '50']\n", + "['AAPL', '2024-12-20', '210.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:58:07.977', '18.75', '19.80', '18.10', '19.45', '257', '83', '10', '76', '18.75', '50', '2', '7', '20.50', '50']\n", + "['AAPL', '2024-11-22', '197.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:44:19.757', '28.98', '29.04', '28.98', '29.00', '5', '5', '9', '69', '30.10', '50', '30', '76', '30.70', '50']\n", + "['AAPL', '2025-12-19', '220.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T12:41:16.235', '31.28', '31.57', '30.80', '31.57', '4', '4', '11', '7', '29.80', '50', '20', '76', '32.05', '50']\n", + "['AAPL', '2024-11-15', '247.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:38:26.458', '0.04', '0.05', '0.03', '0.03', '193', '39', '30', '11', '0.03', '50', '201', '7', '0.04', '50']\n", + "['AAPL', '2024-12-20', '170.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:08:17.099', '56.56', '58.50', '56.56', '58.50', '15', '2', '30', '76', '57.15', '50', '4', '60', '58.75', '50']\n", + "['AAPL', '2025-01-17', '380.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '152.15', '50', '30', '76', '153.15', '50']\n", + "['AAPL', '2026-12-18', '300.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '5', '7', '70.75', '50', '4', '60', '74.50', '50']\n", + "['AAPL', '2025-09-19', '295.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '65.40', '50', '7', '7', '69.40', '50']\n", + "['AAPL', '2024-12-13', '110.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '32', '11', '0.06', '50']\n", + "['AAPL', '2025-12-19', '15.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '40', '76', '0.04', '50']\n", + "['AAPL', '2025-06-20', '85.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '73', '7', '0.11', '50', '83', '7', '0.14', '50']\n", + "['AAPL', '2025-03-21', '155.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:52:25.354', '74.91', '74.91', '74.91', '74.91', '6', '1', '30', '76', '74.95', '50', '9', '60', '75.80', '50']\n", + "['AAPL', '2024-11-15', '145.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:32:43.782', '82.10', '82.60', '82.10', '82.60', '32', '4', '30', '76', '82.25', '50', '30', '76', '82.85', '50']\n", + "['AAPL', '2025-08-15', '295.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '8', '7', '65.45', '50', '7', '7', '69.40', '50']\n", + "['AAPL', '2026-12-18', '340.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:06:10.564', '6.90', '6.90', '6.90', '6.90', '2', '1', '24', '60', '6.90', '50', '37', '7', '7.75', '50']\n", + "['AAPL', '2024-11-15', '10.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '5', '0.00', '50', '252', '7', '0.01', '50']\n", + "['AAPL', '2027-01-15', '10.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:12:16.35', '217.88', '217.88', '217.70', '217.70', '3', '3', '2', '11', '215.00', '50', '30', '76', '219.10', '50']\n", + "['AAPL', '2025-04-17', '160.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:09:40.971', '0.63', '0.63', '0.60', '0.61', '8', '3', '25', '7', '0.58', '50', '28', '7', '0.61', '50']\n", + "['AAPL', '2024-12-20', '150.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:55:00.161', '77.25', '78.25', '76.01', '77.75', '17', '5', '14', '76', '77.80', '50', '2', '7', '79.55', '50']\n", + "['AAPL', '2025-06-20', '120.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T10:03:43.945', '0.33', '0.33', '0.31', '0.31', '101', '3', '52', '7', '0.30', '50', '93', '7', '0.33', '50']\n", + "['AAPL', '2024-12-20', '80.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '45', '5', '0.03', '50']\n", + "['AAPL', '2025-09-19', '275.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:52:47.568', '6.00', '6.00', '5.80', '5.80', '3', '3', '30', '11', '6.15', '50', '7', '5', '6.35', '50']\n", + "['AAPL', '2026-01-16', '10.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '215.70', '50', '30', '76', '219.30', '50']\n", + "['AAPL', '2025-06-20', '30.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '22', '196.05', '50', '27', '76', '199.15', '50']\n", + "['AAPL', '2025-12-19', '270.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '96', '4', '43.40', '50', '80', '9', '45.20', '50']\n", + "['AAPL', '2025-09-19', '180.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '34', '11', '57.20', '50', '1', '5', '58.65', '50']\n", + "['AAPL', '2024-11-08', '207.500', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:47:39.652', '0.01', '0.02', '0.01', '0.01', '722', '77', '0', '4', '0.00', '50', '365', '4', '0.01', '50']\n", + "['AAPL', '2025-03-21', '90.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '136.95', '50', '3', '1', '140.60', '50']\n", + "['AAPL', '2025-06-20', '70.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '73', '7', '0.06', '50', '87', '7', '0.09', '50']\n", + "['AAPL', '2026-01-16', '175.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T09:57:34.501', '63.96', '63.96', '63.96', '63.96', '5', '2', '1', '60', '63.75', '50', '1', '60', '66.55', '50']\n", + "['AAPL', '2024-12-20', '165.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:01:47.726', '0.12', '0.12', '0.11', '0.12', '14', '8', '21', '7', '0.12', '50', '34', '7', '0.13', '50']\n", + "['AAPL', '2024-12-27', '190.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '64', '22', '2.39', '50']\n", + "['AAPL', '2026-06-18', '75.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:00:09.082', '155.13', '155.13', '155.13', '155.13', '5', '1', '9', '7', '154.55', '50', '9', '7', '158.50', '50']\n", + "['AAPL', '2024-12-20', '45.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '10', '4', '0.01', '50']\n", + "['AAPL', '2024-12-20', '190.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:47:41.711', '0.26', '0.27', '0.23', '0.25', '736', '98', '11', '7', '0.24', '50', '21', '7', '0.26', '50']\n", + "['AAPL', '2024-12-20', '155.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:15:17.717', '71.61', '71.95', '71.61', '71.95', '5', '2', '30', '76', '73.15', '50', '1', '46', '74.20', '50']\n", + "['AAPL', '2025-01-17', '180.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:05:40.646', '0.30', '0.31', '0.27', '0.29', '526', '38', '17', '7', '0.27', '50', '26', '76', '0.29', '50']\n", + "['AAPL', '2024-11-15', '15.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '212.25', '50', '28', '76', '212.80', '50']\n", + "['AAPL', '2027-01-15', '310.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '11', '80.00', '50', '2', '11', '85.00', '50']\n", + "['AAPL', '2024-12-20', '335.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '107.20', '50', '30', '76', '107.80', '50']\n", + "['AAPL', '2024-11-22', '290.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '62.20', '50', '2', '47', '63.00', '50']\n", + "['AAPL', '2025-04-17', '260.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:42.037', '3.45', '3.71', '3.34', '3.70', '128', '41', '18', '60', '3.60', '50', '32', '11', '3.80', '50']\n", + "['AAPL', '2026-06-18', '85.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '60', '145.55', '50', '30', '76', '149.20', '50']\n", + "['AAPL', '2024-12-20', '155.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:56:06.326', '0.09', '0.10', '0.08', '0.09', '20', '7', '5', '1', '0.05', '50', '42', '7', '0.11', '50']\n", + "['AAPL', '2025-08-15', '290.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T10:18:03.244', '2.95', '2.95', '2.95', '2.95', '1', '1', '30', '11', '3.05', '50', '41', '76', '3.20', '50']\n", + "['AAPL', '2024-11-22', '260.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:20:39.661', '0.02', '0.03', '0.02', '0.03', '243', '19', '10', '46', '0.02', '50', '56', '7', '0.11', '50']\n", + "['AAPL', '2024-12-13', '245.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '16', '76', '17.45', '50', '4', '46', '18.05', '50']\n", + "['AAPL', '2025-03-21', '150.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T12:23:06.564', '0.34', '0.34', '0.32', '0.32', '17', '4', '30', '11', '0.32', '50', '59', '7', '0.34', '50']\n", + "['AAPL', '2024-11-08', '205.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:29:30.217', '0.01', '0.02', '0.01', '0.01', '1409', '76', '0', '1', '0.00', '50', '629', '60', '0.01', '50']\n", + "['AAPL', '2025-09-19', '285.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '55.80', '50', '7', '7', '59.35', '50']\n", + "['AAPL', '2025-04-17', '275.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '9', '46.05', '50', '9', '60', '48.65', '50']\n", + "['AAPL', '2025-09-19', '300.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:37:04.693', '2.65', '2.82', '2.60', '2.82', '102', '22', '42', '60', '2.73', '50', '31', '11', '2.86', '50']\n", + "['AAPL', '2025-02-21', '285.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '17', '60', '57.15', '50', '6', '60', '58.45', '50']\n", + "['AAPL', '2025-12-19', '10.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '32', '47', '0.04', '50']\n", + "['AAPL', '2024-12-06', '130.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '46', '0.00', '50', '31', '7', '0.22', '50']\n", + "['AAPL', '2024-11-29', '295.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '47', '11', '0.02', '50']\n", + "['AAPL', '2025-08-15', '130.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '6', '7', '100.25', '50', '30', '76', '103.15', '50']\n", + "['AAPL', '2025-09-19', '100.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:05:48.22', '129.63', '129.63', '129.63', '129.63', '54', '1', '30', '76', '130.25', '50', '30', '76', '131.90', '50']\n", + "['AAPL', '2024-12-27', '245.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:31:59.242', '1.15', '1.34', '0.70', '1.34', '26', '17', '0', '43', '0.00', '50', '1', '7', '1.75', '50']\n", + "['AAPL', '2024-11-29', '265.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '37.25', '50', '29', '76', '37.95', '50']\n", + "['AAPL', '2024-11-29', '225.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:58:49.135', '4.05', '4.10', '2.78', '2.87', '726', '120', '1', '7', '2.69', '50', '1', '7', '2.93', '50']\n", + "['AAPL', '2025-02-21', '370.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '60', '142.05', '50', '2', '60', '143.30', '50']\n", + "['AAPL', '2025-04-17', '285.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '9', '56.05', '50', '1', '9', '59.60', '50']\n", + "['AAPL', '2025-12-19', '135.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:50:20.008', '1.21', '1.21', '1.19', '1.19', '13', '3', '33', '7', '1.17', '50', '49', '11', '1.24', '50']\n", + "['AAPL', '2024-12-06', '260.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:46:02.293', '33.30', '33.30', '33.30', '33.30', '1', '1', '30', '76', '32.20', '50', '21', '47', '33.75', '50']\n", + "['AAPL', '2026-12-18', '45.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '99', '7', '0.22', '50', '99', '7', '0.29', '50']\n", + "['AAPL', '2025-01-17', '150.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:43:39.681', '0.14', '0.14', '0.13', '0.14', '16', '3', '22', '7', '0.14', '50', '37', '7', '0.15', '50']\n", + "['AAPL', '2024-11-15', '200.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:59:34.098', '0.08', '0.09', '0.07', '0.08', '849', '171', '10', '7', '0.07', '50', '60', '65', '0.08', '50']\n", + "['AAPL', '2025-01-17', '115.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:52:59.242', '0.07', '0.07', '0.07', '0.07', '86', '37', '41', '7', '0.06', '50', '40', '11', '0.07', '50']\n", + "['AAPL', '2027-01-15', '320.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '20', '11', '10.20', '50', '27', '76', '10.60', '50']\n", + "['AAPL', '2026-12-18', '260.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:58:48.759', '25.04', '25.60', '25.04', '25.60', '16', '7', '10', '76', '25.40', '50', '30', '11', '26.75', '50']\n", + "['AAPL', '2025-08-15', '235.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:01:22.993', '17.05', '17.87', '17.05', '17.80', '12', '10', '45', '11', '17.00', '50', '1', '42', '19.20', '50']\n", + "['AAPL', '2026-12-18', '300.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:00:00.479', '13.28', '13.65', '13.20', '13.65', '288', '5', '10', '76', '13.00', '50', '10', '76', '13.80', '50']\n", + "['AAPL', '2025-02-21', '210.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:32:16.116', '4.35', '4.39', '3.45', '3.45', '4488', '212', '30', '11', '2.95', '50', '15', '60', '3.60', '50']\n", + "['AAPL', '2024-12-27', '185.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '102', '60', '0.50', '50']\n", + "['AAPL', '2024-12-13', '240.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:27.422', '1.13', '1.50', '1.12', '1.45', '493', '110', '5', '60', '1.40', '50', '5', '7', '1.49', '50']\n", + "['AAPL', '2025-04-17', '270.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '7', '41.10', '50', '1', '9', '44.65', '50']\n", + "['AAPL', '2025-01-17', '280.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:23:35.65', '0.13', '0.15', '0.13', '0.15', '81', '15', '13', '7', '0.13', '50', '50', '7', '0.14', '50']\n", + "['AAPL', '2025-03-21', '10.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '46', '0.00', '50', '19', '7', '0.25', '50']\n", + "['AAPL', '2026-12-18', '125.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:09:16.937', '113.53', '113.53', '113.53', '113.53', '1', '1', '30', '76', '112.25', '50', '32', '22', '115.00', '50']\n", + "['AAPL', '2025-04-17', '325.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '4', '96.05', '50', '1', '4', '99.60', '50']\n", + "['AAPL', '2024-12-13', '210.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:42:48.78', '1.13', '1.16', '0.82', '0.93', '117', '51', '10', '4', '0.80', '50', '4', '65', '0.91', '50']\n", + "['AAPL', '2026-01-16', '5.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '4', '0.00', '50', '30', '76', '0.04', '50']\n", + "['AAPL', '2025-04-17', '310.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T10:02:01.026', '0.30', '0.30', '0.30', '0.30', '10', '1', '29', '7', '0.30', '50', '44', '7', '0.33', '50']\n", + "['AAPL', '2025-04-17', '110.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T13:39:39.21', '0.17', '0.17', '0.17', '0.17', '1', '1', '30', '7', '0.13', '50', '48', '7', '0.19', '50']\n", + "['AAPL', '2026-01-16', '240.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:14:23.911', '21.75', '22.13', '21.30', '22.13', '48', '13', '30', '11', '20.40', '50', '30', '11', '23.60', '50']\n", + "['AAPL', '2027-01-15', '350.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '11', '120.00', '50', '2', '11', '125.00', '50']\n", + "['AAPL', '2026-12-18', '155.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:14:03.774', '4.50', '4.50', '4.50', '4.50', '3', '2', '32', '11', '4.40', '50', '48', '60', '4.60', '50']\n", + "['AAPL', '2024-11-15', '310.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '30', '76', '0.01', '50']\n", + "['AAPL', '2024-11-22', '120.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '65', '0.00', '50', '39', '11', '0.21', '50']\n", + "['AAPL', '2024-12-20', '310.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '1021', '1', '0.02', '50']\n", + "['AAPL', '2024-11-08', '235.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:52.049', '0.03', '0.05', '0.01', '0.01', '7592', '827', '516', '69', '0.01', '50', '361', '76', '0.02', '50']\n", + "['AAPL', '2024-12-27', '255.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:54:43.82', '0.50', '0.50', '0.41', '0.44', '25', '11', '5', '69', '0.40', '50', '11', '65', '0.50', '50']\n", + "['AAPL', '2026-01-16', '225.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:26:01.876', '29.15', '30.23', '28.73', '30.22', '120', '37', '10', '7', '28.15', '50', '20', '76', '30.25', '50']\n", + "['AAPL', '2027-01-15', '90.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '42', '0.27', '50', '23', '11', '1.00', '50']\n", + "['AAPL', '2024-11-22', '145.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T09:57:33.966', '0.02', '0.02', '0.02', '0.02', '1', '1', '0', '76', '0.00', '50', '26', '47', '0.02', '50']\n", + "['AAPL', '2025-06-20', '160.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:50:11.571', '72.00', '72.00', '72.00', '72.00', '1', '1', '5', '7', '70.75', '50', '20', '22', '73.25', '50']\n", + "['AAPL', '2025-08-15', '160.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '76', '73.85', '50', '33', '43', '74.90', '50']\n", + "['AAPL', '2024-12-27', '260.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '31.15', '50', '7', '60', '34.55', '50']\n", + "['AAPL', '2024-11-22', '165.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '62.20', '50', '30', '76', '63.00', '50']\n", + "['AAPL', '2024-11-08', '155.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '325', '7', '0.01', '50']\n", + "['AAPL', '2026-06-18', '35.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '36', '7', '0.08', '50', '43', '7', '0.15', '50']\n", + "['AAPL', '2024-11-15', '50.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:06:51.266', '177.63', '177.63', '177.63', '177.63', '1', '1', '30', '76', '177.25', '50', '28', '76', '177.80', '50']\n", + "['AAPL', '2026-12-18', '145.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '41', '7', '3.30', '50', '61', '7', '3.45', '50']\n", + "['AAPL', '2026-01-16', '120.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:59:22.256', '0.86', '0.86', '0.80', '0.80', '26', '3', '213', '1', '0.80', '50', '65', '7', '0.84', '50']\n", + "['AAPL', '2024-11-22', '180.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:56:18.099', '46.52', '47.56', '46.52', '47.56', '48', '4', '30', '76', '47.45', '50', '30', '76', '48.10', '50']\n", + "['AAPL', '2025-09-19', '320.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '6', '7', '90.70', '50', '6', '7', '94.65', '50']\n", + "['AAPL', '2026-01-16', '290.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:44:45.362', '6.50', '6.93', '6.50', '6.90', '51', '6', '27', '60', '6.85', '50', '68', '76', '7.10', '50']\n", + "['AAPL', '2025-06-20', '215.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:16:26.839', '9.20', '9.20', '8.72', '8.72', '15', '5', '30', '60', '8.60', '50', '28', '76', '8.85', '50']\n", + "['AAPL', '2025-03-21', '170.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:01:05.053', '60.85', '60.85', '60.85', '60.85', '3', '1', '1', '1', '58.90', '50', '30', '76', '62.65', '50']\n", + "['AAPL', '2026-06-18', '155.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '33', '4', '3.30', '50', '30', '11', '3.45', '50']\n", + "['AAPL', '2026-12-18', '410.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '180.65', '50', '8', '60', '184.40', '50']\n", + "['AAPL', '2024-12-20', '280.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '52.20', '50', '30', '76', '52.85', '50']\n", + "['AAPL', '2024-11-22', '140.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:01:16.59', '87.11', '87.11', '87.11', '87.11', '1', '1', '30', '76', '85.80', '50', '30', '76', '87.95', '50']\n", + "['AAPL', '2025-06-20', '215.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:18:35.738', '25.60', '27.05', '25.60', '27.00', '45', '8', '1', '60', '25.35', '50', '1', '60', '27.65', '50']\n", + "['AAPL', '2025-06-20', '300.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:15:53.948', '1.24', '1.30', '1.17', '1.30', '257', '33', '24', '60', '1.25', '50', '1', '7', '1.30', '50']\n", + "['AAPL', '2025-09-19', '25.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '7', '7', '200.90', '50', '7', '7', '204.50', '50']\n", + "['AAPL', '2026-06-18', '185.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:52:12.176', '61.00', '61.00', '61.00', '61.00', '1', '1', '10', '76', '61.30', '50', '1', '42', '62.75', '50']\n", + "['AAPL', '2024-12-27', '205.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:58:51.298', '23.15', '24.75', '23.08', '24.75', '4', '4', '8', '76', '23.95', '50', '13', '7', '26.50', '50']\n", + "['AAPL', '2024-11-15', '240.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:55:48.399', '14.15', '14.70', '12.80', '12.90', '57', '33', '1', '7', '11.65', '50', '30', '76', '13.80', '50']\n", + "['AAPL', '2024-11-29', '285.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '46', '0.00', '50', '31', '4', '0.22', '50']\n", + "['AAPL', '2025-04-17', '200.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:18:59.089', '3.80', '3.85', '3.33', '3.35', '1833', '364', '308', '5', '3.25', '50', '45', '60', '3.40', '50']\n", + "['AAPL', '2026-06-18', '10.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '6', '7', '215.40', '50', '30', '76', '219.35', '50']\n", + "['AAPL', '2026-01-16', '90.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '100', '7', '0.34', '50', '82', '7', '0.38', '50']\n", + "['AAPL', '2024-12-27', '220.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:50:07.678', '10.61', '12.08', '10.61', '11.65', '50', '10', '66', '22', '10.65', '50', '41', '9', '12.65', '50']\n", + "['AAPL', '2025-09-19', '260.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:18:03.857', '9.50', '9.90', '9.50', '9.90', '10', '5', '22', '11', '9.80', '50', '8', '7', '11.85', '50']\n", + "['AAPL', '2025-08-15', '270.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:43:33.477', '6.00', '6.16', '6.00', '6.16', '17', '3', '31', '11', '6.15', '50', '37', '7', '6.80', '50']\n", + "['AAPL', '2026-12-18', '60.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '97', '7', '0.32', '50', '101', '7', '0.40', '50']\n", + "['AAPL', '2026-01-16', '65.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '8', '7', '163.30', '50', '30', '76', '166.85', '50']\n", + "['AAPL', '2025-03-21', '215.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:43:43.174', '6.30', '6.30', '5.65', '5.65', '195', '23', '3', '6', '4.40', '50', '15', '60', '5.80', '50']\n", + "['AAPL', '2026-06-18', '90.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '14', '22', '141.80', '50', '26', '22', '144.20', '50']\n", + "['AAPL', '2026-01-16', '95.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '103', '7', '0.38', '50', '118', '7', '0.43', '50']\n", + "['AAPL', '2024-11-22', '222.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:55:54.233', '5.27', '7.20', '5.27', '6.70', '226', '95', '1', '7', '6.00', '50', '3', '6', '7.75', '50']\n", + "['AAPL', '2027-01-15', '100.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:23:05.049', '134.00', '136.00', '134.00', '136.00', '3', '2', '13', '22', '134.10', '50', '30', '76', '137.70', '50']\n", + "['AAPL', '2025-09-19', '205.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:55:00.17', '36.40', '37.95', '36.40', '37.45', '71', '5', '9', '7', '35.85', '50', '1', '47', '39.05', '50']\n", + "['AAPL', '2024-12-13', '130.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '25', '7', '0.02', '50', '39', '7', '0.18', '50']\n", + "['AAPL', '2024-11-15', '65.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '76', '0.00', '50', '33', '76', '0.01', '50']\n", + "['AAPL', '2025-09-19', '140.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:13:44.637', '92.78', '92.78', '92.78', '92.78', '10', '1', '7', '7', '91.15', '50', '30', '76', '94.05', '50']\n", + "['AAPL', '2024-11-15', '160.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:16:41.224', '0.01', '0.01', '0.01', '0.01', '228', '18', '844', '1', '0.01', '50', '34', '76', '0.02', '50']\n", + "['AAPL', '2025-06-20', '105.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '94', '7', '0.20', '50', '50', '7', '0.23', '50']\n", + "['AAPL', '2024-11-22', '145.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '81.50', '50', '30', '76', '82.95', '50']\n", + "['AAPL', '2026-06-18', '145.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '28', '7', '2.47', '50', '30', '11', '2.57', '50']\n", + "['AAPL', '2026-12-18', '280.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:13:16.194', '18.17', '18.30', '18.16', '18.25', '15', '5', '8', '7', '16.95', '50', '20', '76', '19.00', '50']\n", + "['AAPL', '2024-11-15', '170.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T09:57:15.961', '0.01', '0.02', '0.01', '0.02', '9', '4', '20', '1', '0.01', '50', '2', '7', '0.05', '50']\n", + "['AAPL', '2025-03-21', '50.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '11', '0.00', '50', '22', '7', '0.03', '50']\n", + "['AAPL', '2026-06-18', '130.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '11', '60', '105.65', '50', '30', '76', '108.00', '50']\n", + "['AAPL', '2025-12-19', '120.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:25:45.045', '112.90', '113.50', '112.90', '113.30', '648', '14', '24', '22', '112.15', '50', '24', '22', '113.90', '50']\n", + "['AAPL', '2024-11-15', '270.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '29', '76', '42.25', '50', '30', '76', '43.70', '50']\n", + "['AAPL', '2025-09-19', '175.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T14:45:14.334', '3.27', '3.27', '3.07', '3.07', '2', '2', '10', '76', '2.96', '50', '36', '60', '3.10', '50']\n", + "['AAPL', '2025-04-17', '255.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:55:54.701', '4.50', '4.78', '4.25', '4.63', '1121', '34', '24', '60', '4.60', '50', '1', '7', '5.80', '50']\n", + "['AAPL', '2026-01-16', '205.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T11:42:26.336', '41.20', '41.60', '41.20', '41.60', '3', '3', '48', '11', '41.35', '50', '20', '76', '42.75', '50']\n", + "['AAPL', '2025-06-20', '130.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:45:57.744', '0.42', '0.42', '0.41', '0.41', '5', '3', '65', '7', '0.39', '50', '51', '7', '0.42', '50']\n", + "['AAPL', '2025-04-17', '250.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:49:05.988', '5.50', '6.05', '5.40', '6.05', '128', '28', '45', '76', '5.90', '50', '10', '7', '6.10', '50']\n", + "['AAPL', '2026-06-18', '330.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '11', '60', '100.90', '50', '21', '60', '104.20', '50']\n", + "['AAPL', '2025-12-19', '50.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '110', '7', '0.08', '50', '44', '7', '0.11', '50']\n", + "['AAPL', '2025-09-19', '5.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '60', '0.00', '50', '750', '60', '0.01', '50']\n", + "['AAPL', '2026-01-16', '25.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '0', '46', '0.00', '50', '42', '42', '0.15', '50']\n", + "['AAPL', '2024-11-15', '330.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '12', '60', '102.25', '50', '30', '76', '102.80', '50']\n", + "['AAPL', '2025-02-21', '105.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '1', '6', '121.90', '50', '3', '1', '125.45', '50']\n", + "['AAPL', '2027-01-15', '430.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '2', '76', '200.00', '50', '2', '76', '205.00', '50']\n", + "['AAPL', '2025-08-15', '245.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T14:41:25.957', '13.07', '13.59', '13.07', '13.59', '113', '7', '1', '60', '12.20', '50', '1', '7', '14.00', '50']\n", + "['AAPL', '2024-11-22', '230.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T15:59:53.808', '1.73', '2.69', '1.73', '2.62', '4059', '828', '34', '11', '2.40', '50', '1', '22', '2.60', '50']\n", + "['AAPL', '2026-06-18', '45.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '9', '7', '182.50', '50', '8', '7', '186.10', '50']\n", + "['AAPL', '2026-06-18', '205.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T10:02:38.095', '46.48', '46.48', '46.48', '46.48', '1', '1', '12', '22', '47.35', '50', '1', '42', '48.85', '50']\n", + "['AAPL', '2024-11-08', '247.500', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T10:58:59.303', '0.01', '0.01', '0.01', '0.01', '1', '1', '0', '11', '0.00', '50', '300', '11', '0.01', '50']\n", + "['AAPL', '2024-11-15', '225.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:59:59.938', '3.05', '3.20', '1.48', '1.55', '13252', '1943', '10', '1', '1.50', '50', '30', '11', '1.65', '50']\n", + "['AAPL', '2025-09-19', '80.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '148.55', '50', '30', '76', '151.65', '50']\n", + "['AAPL', '2024-11-22', '150.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '77.20', '50', '6', '60', '78.00', '50']\n", + "['AAPL', '2025-12-19', '260.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '257', '4', '36.00', '50', '215', '4', '37.35', '50']\n", + "['AAPL', '2025-09-19', '180.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T15:45:18.772', '3.75', '3.75', '3.55', '3.55', '133', '19', '35', '5', '3.50', '50', '30', '60', '3.65', '50']\n", + "['AAPL', '2024-12-13', '165.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '25', '7', '0.09', '50', '21', '7', '0.12', '50']\n", + "['AAPL', '2026-12-18', '120.000', 'CALL', '2024-11-07T17:21:28.618', '2024-11-07T13:20:45.724', '117.28', '117.28', '117.28', '117.28', '20', '1', '61', '22', '116.55', '50', '27', '22', '119.20', '50']\n", + "['AAPL', '2025-04-17', '315.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '10', '4', '86.05', '50', '1', '6', '89.55', '50']\n", + "['AAPL', '2025-01-17', '315.000', 'PUT', '2024-11-07T17:21:28.618', '2024-11-07T00:00:00', '0.00', '0.00', '0.00', '0.00', '0', '0', '30', '76', '87.15', '50', '30', '76', '87.85', '50']\n" + ] + } + ], + "source": [ + "import httpx # install via pip install httpx\n", + "import csv\n", + "import io\n", + "from datetime import datetime, timedelta\n", + "\n", + "BASE_URL = \"http://localhost:25503/v3\" # all endpoints use this URL base\n", + "\n", + "# set params\n", + "RAW_PARAMS= {\n", + " 'start_date': '2024-12-07',\n", + " 'end_date': '2024-12-10',\n", + " 'symbol': 'AAPL',\n", + " 'expiration': '*',\n", + "}\n", + "\n", + "# define date range\n", + "start_date = datetime.strptime('2024-11-07', '%Y-%m-%d')\n", + "end_date = datetime.strptime('2024-11-07', '%Y-%m-%d')\n", + "\n", + "dates_to_run = []\n", + "while start_date <= end_date:\n", + " if start_date.weekday() < 5: # skip Sat/Sun\n", + " dates_to_run.append(start_date)\n", + " start_date += timedelta(days=1)\n", + "\n", + "print(\"Dates to request:\", [d.strftime(\"%Y-%m-%d (%A)\") for d in dates_to_run])\n", + "\n", + "#\n", + "# This is the streaming version, and will read line-by-line\n", + "#\n", + "for day in dates_to_run:\n", + " day_str = day.strftime(\"%Y%m%d\")\n", + "\n", + " # set params\n", + " params = RAW_PARAMS\n", + " if 'start_date' in params:\n", + " params['start_date'] = day_str\n", + " if 'end_date' in params:\n", + " params['end_date'] = day_str\n", + " url = BASE_URL + '/option/history/eod'\n", + "\n", + " with httpx.stream(\"GET\", url, params=params, timeout=60) as response:\n", + " response.raise_for_status() # make sure the request worked\n", + " for line in response.iter_lines():\n", + " for row in csv.reader(io.StringIO(line)):\n", + " print(row) # Now you get a parsed list of fields" + ] + }, { "cell_type": "code", "execution_count": null, diff --git a/tradingagents/agents/analysts/fundamentals_analyst.py b/tradingagents/agents/analysts/fundamentals_analyst.py index 989d174b..72e7cd33 100644 --- a/tradingagents/agents/analysts/fundamentals_analyst.py +++ b/tradingagents/agents/analysts/fundamentals_analyst.py @@ -13,11 +13,64 @@ def create_fundamentals_analyst(llm): tools = get_agent_tools("fundamentals") - system_message = ( - "You are a researcher tasked with analyzing fundamental information over the past week about a company. Please write a comprehensive report of the company's fundamental information such as financial documents, company profile, basic company financials, and company financial history to gain a full view of the company's fundamental information to inform traders. Make sure to include as much detail as possible. Do not simply state the trends are mixed, provide detailed and finegrained analysis and insights that may help traders make decisions." - + " Make sure to append a Markdown table at the end of the report to organize key points in the report, organized and easy to read." - + " Use the available tools: `get_fundamentals` for comprehensive company analysis, `get_balance_sheet`, `get_cashflow`, and `get_income_statement` for specific financial statements.", - ) + system_message = """You are a Fundamental Analyst assessing {ticker}'s financial health with SHORT-TERM trading relevance. + +**Analysis Date:** {current_date} + +## YOUR MISSION +Identify fundamental strengths/weaknesses and any SHORT-TERM catalysts hidden in the financials. + +## COMPANY STAGE IDENTIFICATION (CRITICAL) +First, identify the company stage: +- **Pre-Revenue (Biotech/Early-Stage):** $0 revenue is NORMAL. Focus on cash runway, pipeline, and catalysts. +- **Growth Stage:** High revenue growth, often unprofitable. Focus on revenue trajectory and path to profitability. +- **Mature:** Stable revenue, focus on margins, dividends, and valuation. + +Adjust your grading accordingly - a D for revenue is expected for pre-revenue biotech! + +## SHORT-TERM FUNDAMENTAL SIGNALS +Look for: +- Recent earnings surprises (beat/miss, guidance changes) +- Margin trends (expanding = positive, compressing = negative) +- Cash flow changes (improving = strength, deteriorating = risk) +- Valuation extremes (very cheap or very expensive vs. sector) + +## OUTPUT STRUCTURE (MANDATORY) + +### Financial Scorecard +| Dimension | Grade | Key Finding | Short-Term Impact | +|-----------|-------|-------------|-------------------| +| Recent Results | A-F | Revenue +25% YoY | Momentum positive | +| Margins | A-F | GM down 200bp | Pressure | +| Liquidity | A-F | $2B cash | Strong | +| Valuation | A-F | P/E 15 vs sector 25 | Undervalued | + +### Recent Performance +**Latest Quarter:** +- Revenue: $[X]B ([Y]% YoY) +- EPS: $[A] (beat/miss by $[B]) +- Margins: [C]% (trend: up/down) +- Guidance: [Raised/Lowered/Same] + +### Balance Sheet Health +- Cash: $[X]B | Debt: $[Y]B +- Free Cash Flow: $[Z]B +- **Assessment:** [Strong/Adequate/Weak] + +### Valuation +- P/E: [X] (Sector: [Y]) +- **Value:** [Cheap/Fair/Expensive] + +### Short-Term Takeaway +[1-2 sentences: Do fundamentals support short-term trade or create risk?] + +## QUALITY RULES +- ✅ Use specific numbers (not "strong") +- ✅ Compare to sector/history +- ✅ Note short-term relevance +- ❌ Avoid vague generalities + +Date: {current_date} | Ticker: {ticker}""" prompt = ChatPromptTemplate.from_messages( [ diff --git a/tradingagents/agents/analysts/market_analyst.py b/tradingagents/agents/analysts/market_analyst.py index 60b3434f..04fe5dd6 100644 --- a/tradingagents/agents/analysts/market_analyst.py +++ b/tradingagents/agents/analysts/market_analyst.py @@ -14,34 +14,93 @@ def create_market_analyst(llm): tools = get_agent_tools("market") - system_message = ( - """You are a trading assistant tasked with analyzing financial markets. Your role is to select the **most relevant indicators** for a given market condition or trading strategy from the following list. The goal is to choose up to **8 indicators** that provide complementary insights without redundancy. Categories and each category's indicators are: + system_message = """You are a Market Technical Analyst specializing in identifying actionable short-term trading signals through technical indicators. -Moving Averages: -- close_50_sma: 50 SMA: A medium-term trend indicator. Usage: Identify trend direction and serve as dynamic support/resistance. Tips: It lags price; combine with faster indicators for timely signals. -- close_200_sma: 200 SMA: A long-term trend benchmark. Usage: Confirm overall market trend and identify golden/death cross setups. Tips: It reacts slowly; best for strategic trend confirmation rather than frequent trading entries. -- close_10_ema: 10 EMA: A responsive short-term average. Usage: Capture quick shifts in momentum and potential entry points. Tips: Prone to noise in choppy markets; use alongside longer averages for filtering false signals. +## YOUR MISSION +Analyze {ticker}'s technical setup and identify the 3-5 most relevant trading signals for short-term opportunities (days to weeks, not months). -MACD Related: -- macd: MACD: Computes momentum via differences of EMAs. Usage: Look for crossovers and divergence as signals of trend changes. Tips: Confirm with other indicators in low-volatility or sideways markets. -- macds: MACD Signal: An EMA smoothing of the MACD line. Usage: Use crossovers with the MACD line to trigger trades. Tips: Should be part of a broader strategy to avoid false positives. -- macdh: MACD Histogram: Shows the gap between the MACD line and its signal. Usage: Visualize momentum strength and spot divergence early. Tips: Can be volatile; complement with additional filters in fast-moving markets. +## CRITICAL: DATE AWARENESS +**Current Analysis Date:** {current_date} +**Instructions:** +- Treat {current_date} as "TODAY" for all calculations. +- "Last 6 months" means 6 months ending on {current_date}. +- "Last week" means the 7 days ending on {current_date}. +- Do NOT use 2024 or 2025 unless {current_date} is actually in that year. +- When calling tools, ensure date parameters are relative to {current_date}. -Momentum Indicators: -- rsi: RSI: Measures momentum to flag overbought/oversold conditions. Usage: Apply 70/30 thresholds and watch for divergence to signal reversals. Tips: In strong trends, RSI may remain extreme; always cross-check with trend analysis. +## INDICATOR SELECTION FRAMEWORK -Volatility Indicators: -- boll: Bollinger Middle: A 20 SMA serving as the basis for Bollinger Bands. Usage: Acts as a dynamic benchmark for price movement. Tips: Combine with the upper and lower bands to effectively spot breakouts or reversals. -- boll_ub: Bollinger Upper Band: Typically 2 standard deviations above the middle line. Usage: Signals potential overbought conditions and breakout zones. Tips: Confirm signals with other tools; prices may ride the band in strong trends. -- boll_lb: Bollinger Lower Band: Typically 2 standard deviations below the middle line. Usage: Indicates potential oversold conditions. Tips: Use additional analysis to avoid false reversal signals. -- atr: ATR: Averages true range to measure volatility. Usage: Set stop-loss levels and adjust position sizes based on current market volatility. Tips: It's a reactive measure, so use it as part of a broader risk management strategy. +**For Trending Markets (Strong directional movement):** +- Trend: close_50_sma, close_10_ema +- Momentum: macd, macdh, rsi +- Volatility: atr -Volume-Based Indicators: -- vwma: VWMA: A moving average weighted by volume. Usage: Confirm trends by integrating price action with volume data. Tips: Watch for skewed results from volume spikes; use in combination with other volume analyses. +**For Range-Bound Markets (Sideways/choppy):** +- Oscillators: rsi, boll_ub, boll_lb +- Volume: vwma +- Support/Resistance: boll (middle band) -- Select indicators that provide diverse and complementary information. Avoid redundancy (e.g., do not select both rsi and stochrsi). Also briefly explain why they are suitable for the given market context. When you tool call, please use the exact name of the indicators provided above as they are defined parameters, otherwise your call will fail. Please make sure to call get_stock_data first to retrieve the CSV that is needed to generate indicators. Then call get_indicators SEPARATELY for EACH indicator you want to analyze (e.g., call get_indicators once with indicator="rsi", then call it again with indicator="macd", etc.). Do NOT pass multiple indicators in a single call. Write a very detailed and nuanced report of the trends you observe. Do not simply state the trends are mixed, provide detailed and finegrained analysis and insights that may help traders make decisions.""" - + """ Make sure to append a Markdown table at the end of the report to organize key points in the report, organized and easy to read.""" - ) +**For Breakout Setups:** +- Volatility squeeze: boll_ub, boll_lb, atr +- Volume confirmation: vwma +- Trend confirmation: macd, close_10_ema + +## ANALYSIS WORKFLOW + +1. **Call get_stock_data first** to understand recent price action (request only last 6 months) +2. **Identify current market regime** (trending up/down/sideways/breakout setup) +3. **Select 4-6 complementary indicators** based on regime +4. **Call get_indicators SEPARATELY for EACH** (e.g., first call with indicator="rsi", then indicator="macd") +5. **Synthesize findings** into specific trading signals + +## OUTPUT STRUCTURE (MANDATORY) + +### Market Regime +- **Current Trend:** [Uptrend/Downtrend/Sideways/Transition] +- **Volatility:** [Low/Normal/High/Expanding] +- **Recent Price Action:** [Specific % move over last 5 days] +- **Volume Trend:** [Increasing/Decreasing/Stable] + +### Key Technical Signals (3-5 signals) +For each signal: +- **Signal:** [Bullish/Bearish/Neutral] +- **Strength:** [Strong/Moderate/Weak] +- **Indicators Supporting:** [Which specific indicators confirm] +- **Specific Evidence:** [Exact values: "RSI at 72.5, above 70 threshold"] +- **Timeframe:** [How long signal typically lasts] + +### Trading Implications +- **Primary Setup:** [What short-term traders should watch for] +- **Entry Zone:** [Specific price range for entry] +- **Support Levels:** [Key price levels below current price] +- **Resistance Levels:** [Key price levels above current price] +- **Stop Loss Suggestion:** [Price level that invalidates setup] +- **Time Horizon:** [Expected duration: 1-3 days, 1-2 weeks, etc.] + +### Summary Table +| Indicator | Current Value | Signal | Interpretation | Timeframe | +|-----------|---------------|--------|----------------|-----------| +| RSI | 72.5 | Overbought | Potential pullback | 2-5 days | +| MACD | +2.1 | Bullish | Momentum strong | 1-2 weeks | +| 50 SMA | $145 | Support | Trend intact if held | Ongoing | + +## CRITICAL RULES +- ❌ DO NOT pass multiple indicators in one call: `indicator="rsi,macd"` +- ✅ DO call get_indicators separately: `indicator="rsi"` then `indicator="macd"` +- ❌ DO NOT say "trends are mixed" without specific examples +- ✅ DO provide concrete signals with specific price levels and timeframes +- ❌ DO NOT select redundant indicators (e.g., both close_50_sma and close_200_sma) +- ✅ DO focus on short-term actionable setups (days to 2 weeks max) +- ✅ DO include specific entry/exit guidance for traders + +Available Indicators: +**Moving Averages:** close_50_sma, close_200_sma, close_10_ema +**MACD:** macd, macds, macdh +**Momentum:** rsi +**Volatility:** boll, boll_ub, boll_lb, atr +**Volume:** vwma + +Current date: {current_date} | Ticker: {ticker}""" prompt = ChatPromptTemplate.from_messages( [ diff --git a/tradingagents/agents/analysts/news_analyst.py b/tradingagents/agents/analysts/news_analyst.py index ffe9f19e..a236153d 100644 --- a/tradingagents/agents/analysts/news_analyst.py +++ b/tradingagents/agents/analysts/news_analyst.py @@ -13,10 +13,62 @@ def create_news_analyst(llm): tools = get_agent_tools("news") - system_message = ( - "You are a news researcher tasked with analyzing recent news and trends over the past week. Please write a comprehensive report of the current state of the world that is relevant for trading and macroeconomics. Use the available tools: get_news(query, start_date, end_date) for company-specific or targeted news searches, and get_global_news(curr_date, look_back_days, limit) for broader macroeconomic news. Do not simply state the trends are mixed, provide detailed and finegrained analysis and insights that may help traders make decisions." - + """ Make sure to append a Markdown table at the end of the report to organize key points in the report, organized and easy to read.""" - ) + system_message = """You are a News Intelligence Analyst finding SHORT-TERM catalysts for {ticker}. + +**Analysis Date:** {current_date} + +## YOUR MISSION +Identify material catalysts and risks that could impact {ticker} over the NEXT 1-2 WEEKS. + +## SEARCH STRATEGY + +**Company News (use get_news):** +Focus on: Earnings, product launches, management changes, partnerships, regulatory actions, legal issues + +**Macro/Sector News (use get_global_news):** +Focus on: Fed policy, sector rotation, geopolitical events, competitor news + +## OUTPUT STRUCTURE (MANDATORY) + +### Executive Summary +[1-2 sentences: Most critical catalyst + biggest risk for next 2 weeks] + +### Material Catalysts (Bullish - max 4) +For each: +- **Event:** [What happened] +- **Date:** [When] +- **Impact:** [Stock reaction so far] +- **Forward Look:** [Why this matters for next 1-2 weeks] +- **Priced In?:** [Fully/Partially/Not Yet] +- **Confidence:** [High/Med/Low] + +### Key Risks (Bearish - max 4) +For each: +- **Risk:** [Description] +- **Probability:** [High/Med/Low in next 2 weeks] +- **Impact:** [Magnitude if realized] +- **Timeline:** [When could it hit] + +### Macro Context (Connect to {ticker}) +- **Market Sentiment:** [Risk-on/off] → How does this affect {ticker} specifically? +- **Sector Trends:** [Capital flows] → Is {ticker}'s sector receiving or losing capital? +- **Upcoming Events:** [Next 2 weeks] → Which events could move {ticker}? + +### News Timeline Table +| Date | Event | Source | Impact | Status | Implication | +|------|-------|--------|--------|--------|-------------| +| Dec 3 | Earnings | Co | +5% | Done | May extend | +| Dec 10 | Launch | Co | TBD | Pending | Watch | + +## QUALITY RULES +- ✅ Focus on events with SPECIFIC DATES +- ✅ Assess if news is priced in or fresh +- ✅ Include short-term timeline (next 2 weeks) +- ✅ Distinguish facts from speculation +- ❌ Avoid vague "positive sentiment" +- ❌ No stale news (>1 week old unless ongoing) + +Date: {current_date} | Ticker: {ticker}""" prompt = ChatPromptTemplate.from_messages( [ diff --git a/tradingagents/agents/analysts/social_media_analyst.py b/tradingagents/agents/analysts/social_media_analyst.py index 14e9e7a7..a9095ad6 100644 --- a/tradingagents/agents/analysts/social_media_analyst.py +++ b/tradingagents/agents/analysts/social_media_analyst.py @@ -13,10 +13,52 @@ def create_social_media_analyst(llm): tools = get_agent_tools("social") - system_message = ( - "You are a social media and company specific news researcher/analyst tasked with analyzing social media posts, recent company news, and public sentiment for a specific company over the past week. You will be given a company's name your objective is to write a comprehensive long report detailing your analysis, insights, and implications for traders and investors on this company's current state after looking at social media and what people are saying about that company, analyzing sentiment data of what people feel each day about the company, and looking at recent company news. Use the get_news(query, start_date, end_date) tool to search for company-specific news and social media discussions. Try to look at all sources possible from social media to sentiment to news. Do not simply state the trends are mixed, provide detailed and finegrained analysis and insights that may help traders make decisions." - + """ Make sure to append a Markdown table at the end of the report to organize key points in the report, organized and easy to read.""", - ) + system_message = """You are a Social Sentiment Analyst tracking {ticker}'s retail momentum for SHORT-TERM signals. + +**Analysis Date:** {current_date} + +## YOUR MISSION +QUANTIFY social sentiment and identify sentiment SHIFTS that could drive short-term price action. + +## SENTIMENT TRACKING +**Measure:** +- Volume: Mention count (trend: up/down?) +- Sentiment: Bullish/Neutral/Bearish % +- Change: Improving or deteriorating? +- Quality: Data-backed or speculation? + +## OUTPUT STRUCTURE (MANDATORY) + +### Sentiment Summary +- **Current:** [Strongly Bullish/Bullish/Neutral/Bearish/Strongly Bearish] +- **Trend:** [Improving/Stable/Deteriorating] +- **Volume:** [Surging/Stable/Declining] +- **Quality:** [High/Med/Low] (data vs hype) + +### Sentiment Timeline +| Date | Sentiment | Volume | Driver | Change | +|------|-----------|--------|--------|--------| +| Dec 3 | Bullish 70% | 1.2K posts | Earnings | +20% | +| Dec 4 | Mixed 50% | 800 posts | Selloff | -20% | + +### Key Themes (Top 3-4) +- **Theme:** [E.g., "Earnings beat"] +- **Prevalence:** [40% of mentions] +- **Quality:** [Data-backed/Speculation] +- **Impact:** [Short-term implication] + +### Trading Implications +- **Retail Flow:** [Buying/Selling/Mixed] +- **Momentum:** [Building/Fading] +- **Contrarian Signal:** [Extreme = reversal?] + +## QUANTIFICATION RULES +- ✅ Use %: "70% bullish, 20% neutral" +- ✅ Show changes: "Improved from 45% to 70%" +- ✅ Count volume: "Mentions up 300%" +- ❌ Don't use vague "positive sentiment" + +Date: {current_date} | Ticker: {ticker}""" prompt = ChatPromptTemplate.from_messages( [ diff --git a/tradingagents/agents/managers/research_manager.py b/tradingagents/agents/managers/research_manager.py index 4330ddd3..55638227 100644 --- a/tradingagents/agents/managers/research_manager.py +++ b/tradingagents/agents/managers/research_manager.py @@ -19,27 +19,131 @@ def create_research_manager(llm, memory): else: past_memories = [] - past_memory_str = "" - for i, rec in enumerate(past_memories, 1): - past_memory_str += rec["recommendation"] + "\n\n" - prompt = f"""As the portfolio manager and debate facilitator, your role is to critically evaluate this round of debate and make a definitive decision: align with the bear analyst, the bull analyst, or choose Hold only if it is strongly justified based on the arguments presented. + if past_memories: + past_memory_str = "### Past Lessons Applied\\n**Reflections from Similar Situations:**\\n" + for i, rec in enumerate(past_memories, 1): + past_memory_str += rec["recommendation"] + "\\n\\n" + past_memory_str += "\\n\\n**How I'm Using These Lessons:**\\n" + past_memory_str += "- [Specific adjustment based on past mistake/success]\\n" + past_memory_str += "- [Impact on current conviction level]\\n" + else: + past_memory_str = "" # Don't include placeholder when no memories -Summarize the key points from both sides concisely, focusing on the most compelling evidence or reasoning. Your recommendation—Buy, Sell, or Hold—must be clear and actionable. Avoid defaulting to Hold simply because both sides have valid points; commit to a stance grounded in the debate's strongest arguments. + prompt = f"""You are the Portfolio Manager judging the Bull vs Bear debate. Make a definitive SHORT-TERM decision: BUY, SELL, or HOLD (rare). -Additionally, develop a detailed investment plan for the trader. This should include: +## YOUR MISSION +Analyze the debate objectively and make a decisive SHORT-TERM (1-2 week) trading decision backed by evidence. -Your Recommendation: A decisive stance supported by the most convincing arguments. -Rationale: An explanation of why these arguments lead to your conclusion. -Strategic Actions: Concrete steps for implementing the recommendation. -Take into account your past mistakes on similar situations. Use these insights to refine your decision-making and ensure you are learning and improving. Present your analysis conversationally, as if speaking naturally, without special formatting. +## DECISION FRAMEWORK -Here are your past reflections on mistakes: -\"{past_memory_str}\" +### Score Each Side (0-10) +Evaluate both Bull and Bear arguments: -Here is the debate: -Debate History: -{history}""" +**Bull Score:** +- Evidence Strength: [0-10] (hard data vs speculation) +- Logic: [0-10] (sound reasoning?) +- Short-Term Relevance: [0-10] (matters in 1-2 weeks?) +- **Total Bull: [X]/30** + +**Bear Score:** +- Evidence Strength: [0-10] (hard data vs speculation) +- Logic: [0-10] (sound reasoning?) +- Short-Term Relevance: [0-10] (matters in 1-2 weeks?) +- **Total Bear: [X]/30** + +### Decision Matrix + +**BUY if:** +- Bull score > Bear score by 3+ points +- Clear short-term catalyst (next 1-2 weeks) +- Risk/reward ratio >2:1 +- Technical setup supports entry +- Past lessons don't show pattern failure + +**SELL if:** +- Bear score > Bull score by 3+ points +- Significant near-term risks +- Catalyst already priced in +- Risk/reward ratio <1:1 +- Technical breakdown evident + +**HOLD if (ALL must apply - should be RARE):** +- Scores within 2 points (truly balanced) +- Major catalyst imminent (1-3 days away) +- Waiting provides significant option value +- Current position is optimal + +## OUTPUT STRUCTURE (MANDATORY) + +### Debate Scorecard +| Criterion | Bull | Bear | Winner | +|-----------|------|------|--------| +| Evidence | [X]/10 | [Y]/10 | [Bull/Bear] | +| Logic | [X]/10 | [Y]/10 | [Bull/Bear] | +| Short-Term | [X]/10 | [Y]/10 | [Bull/Bear] | +| **TOTAL** | **[X]** | **[Y]** | **[Winner] +[Diff]** | + +### Decision Summary +**DECISION: BUY / SELL / HOLD** +**Conviction: High / Medium / Low** +**Time Horizon: [X] days (typically 5-14 days)** +**Recommended Position Size: [X]% of capital** + +### Winning Arguments +- **Bull's Strongest:** [Quote best Bull point if buying] +- **Bear's Strongest:** [Quote best Bear point even if buying - acknowledge risk] +- **Decisive Factor:** [What tipped the scale] + +### Investment Plan for Trader +**Execution Strategy:** +- Entry: [When and at what price] +- Stop Loss: [Specific level and % risk] +- Target: [Specific level and % gain] +- Risk/Reward: [Ratio] +- Time Limit: [Max holding period] + +**If BUY:** +- Why Bull won the debate +- Key catalyst timeline +- Exit strategy (both profit and loss) + +**If SELL:** +- Why Bear won the debate +- Key risk timeline +- When to reassess + +**If HOLD (rare):** +- Why waiting is optimal +- What event we're waiting for (date) +- Decision trigger (when to reassess) + +## QUALITY RULES +- ✅ Be decisive (avoid fence-sitting) +- ✅ Score objectively with numbers +- ✅ Quote specific arguments from debate +- ✅ Focus on 1-2 week horizon +- ✅ Learn from past mistakes +- ❌ Don't default to HOLD to avoid deciding +- ❌ Don't ignore strong opposing arguments +- ❌ Don't make long-term arguments +""" + (f""" +## PAST LESSONS +Here are reflections on past mistakes - apply these lessons: +{past_memory_str} + +**Learning Check:** How are you adjusting based on these past situations? +""" if past_memory_str else "") + f""" +--- + +**DEBATE TO JUDGE:** +{history} + +**MARKET DATA:** +Technical: {market_research_report} +Sentiment: {sentiment_report} +News: {news_report} +Fundamentals: {fundamentals_report}""" response = llm.invoke(prompt) new_investment_debate_state = { diff --git a/tradingagents/agents/managers/risk_manager.py b/tradingagents/agents/managers/risk_manager.py index dd556584..9d5faea5 100644 --- a/tradingagents/agents/managers/risk_manager.py +++ b/tradingagents/agents/managers/risk_manager.py @@ -22,30 +22,146 @@ def create_risk_manager(llm, memory): else: past_memories = [] - past_memory_str = "" - for i, rec in enumerate(past_memories, 1): - past_memory_str += rec["recommendation"] + "\n\n" - prompt = f"""As the Risk Management Judge and Debate Facilitator, your goal is to evaluate the debate between three risk analysts—Risky, Neutral, and Safe/Conservative—and determine the best course of action for the trader. Your decision must result in a clear recommendation: Buy, Sell, or Hold. Choose Hold only if strongly justified by specific arguments, not as a fallback when all sides seem valid. Strive for clarity and decisiveness. + if past_memories: + past_memory_str = "### Past Lessons Applied\\n**Reflections from Similar Situations:**\\n" + for i, rec in enumerate(past_memories, 1): + past_memory_str += rec["recommendation"] + "\\n\\n" + past_memory_str += "\\n\\n**How I'm Using These Lessons:**\\n" + past_memory_str += "- [Specific adjustment based on past mistake/success]\\n" + past_memory_str += "- [Impact on current conviction level]\\n" + else: + past_memory_str = "" # Don't include placeholder when no memories -Guidelines for Decision-Making: -1. **Summarize Key Arguments**: Extract the strongest points from each analyst, focusing on relevance to the context. -2. **Provide Rationale**: Support your recommendation with direct quotes and counterarguments from the debate. -3. **Refine the Trader's Plan**: Start with the trader's original plan, **{trader_plan}**, and adjust it based on the analysts' insights. -4. **Learn from Past Mistakes**: Use lessons from **{past_memory_str}** to address prior misjudgments and improve the decision you are making now to make sure you don't make a wrong BUY/SELL/HOLD call that loses money. + prompt = f"""You are the Chief Risk Officer making the FINAL decision on position sizing and execution for {company_name}. -Deliverables: -- A clear and actionable recommendation: Buy, Sell, or Hold. -- Detailed reasoning anchored in the debate and past reflections. +## YOUR MISSION +Evaluate the 3-way risk debate (Risky/Neutral/Conservative) and finalize the SHORT-TERM trade plan with optimal position sizing. +## DECISION FRAMEWORK + +### Score Each Perspective (0-10) +Rate how well each analyst's arguments apply to THIS specific situation: + +**Risky Analyst Score:** +- Opportunity Assessment: [0-10] (how big is the opportunity?) +- Risk/Reward Math: [0-10] (is aggressive sizing justified?) +- Short-Term Conviction: [0-10] (high probability in 1-2 weeks?) +- **Total Risky: [X]/30** + +**Neutral Analyst Score:** +- Balance: [0-10] (acknowledges both sides fairly?) +- Pragmatism: [0-10] (is moderate sizing wise?) +- Risk Mitigation: [0-10] (does hedging make sense?) +- **Total Neutral: [X]/30** + +**Conservative Analyst Score:** +- Risk Identification: [0-10] (are the risks real?) +- Downside Protection: [0-10] (is caution warranted?) +- Opportunity Cost: [0-10] (is this the best use of capital?) +- **Total Conservative: [X]/30** + +### Position Sizing Matrix + +**Large Position (8-12% of capital):** +- High conviction (Research Manager scored Bull 25+ or Bear 25+) +- Clear short-term catalyst (1-5 days away) +- Risk/reward >3:1 +- Risky score >24/30 AND Conservative score <18/30 +- Past lessons support aggressive sizing + +**Medium Position (4-7% of capital):** +- Medium conviction +- Catalyst in 5-14 days +- Risk/reward 2:1 to 3:1 +- Neutral score highest OR scores balanced +- Standard risk management sufficient + +**Small Position (1-3% of capital):** +- Lower conviction but interesting setup +- Uncertain timing +- Risk/reward 1.5:1 to 2:1 +- Conservative score >24/30 OR high uncertainty +- Exploratory position + +**NO POSITION (0%):** +- Conservative score >25/30 AND Risky score <15/30 +- Risk/reward <1.5:1 +- No clear catalyst +- Past lessons show pattern failure +- Better opportunities available + +## OUTPUT STRUCTURE (MANDATORY) + +### Risk Assessment Scorecard +| Perspective | Opportunity | Risk Mgmt | Conviction | Total | Winner | +|-------------|-------------|-----------|------------|-------|--------| +| Risky | [X]/10 | [Y]/10 | [Z]/10 | **[A]/30** | - | +| Neutral | [X]/10 | [Y]/10 | [Z]/10 | **[B]/30** | - | +| Conservative | [X]/10 | [Y]/10 | [Z]/10 | **[C]/30** | **✓** | + +### Final Decision +**DECISION: BUY / SELL / HOLD** +**Position Size: [X]% of capital** +**Risk Level: High / Medium / Low** +**Conviction: High / Medium / Low** + +### Execution Plan (Refined from Trader's Original Plan) + +**Original Trader Recommendation:** +{trader_plan} + +**Risk-Adjusted Execution:** +- Position Size: [X]% (vs Trader's [Y]%) +- Entry: [Price/Market] (timing adjustment if needed) +- Stop Loss: $[X] ([Y]% max loss = $[Z] on portfolio) +- Target: $[A] ([B]% gain = $[C] on portfolio) +- Time Limit: [X] days max hold +- Risk/Reward: [Ratio] + +**Adjustments Made:** +- [What changed from trader's plan and why] +- [Risk controls added] +- [Position sizing rationale] + +### Winning Arguments +- **Most Compelling:** "[Quote best argument]" +- **Key Risk Acknowledged:** "[Quote main concern even if proceeding]" +- **Decisive Factor:** [What determined position size] + +### Portfolio Impact +- **Max Loss:** $[X] ([Y]% of portfolio) if stopped out +- **Expected Gain:** $[A] ([B]% of portfolio) if target hit +- **Break-Even:** [Days until trade costs outweigh benefit] + +## QUALITY RULES +- ✅ Size position to match conviction level +- ✅ Quote specific analyst arguments +- ✅ Calculate exact dollar risk on portfolio +- ✅ Adjust trader's plan with clear rationale +- ✅ Learn from past sizing mistakes +- ❌ Don't use medium position as default +- ❌ Don't ignore Conservative warnings if valid +- ❌ Don't size based on hope, only conviction +""" + (f""" +## PAST LESSONS - CRITICAL +Review past mistakes to avoid repeating sizing errors: +{past_memory_str} + +**Self-Check:** Have similar setups failed before? What was the sizing mistake? +""" if past_memory_str else "") + f""" --- -**Analysts Debate History:** +**RISK DEBATE TO JUDGE:** {history} ---- +**MARKET DATA:** +Technical: {market_research_report} +Sentiment: {sentiment_report} +News: {news_report} +Fundamentals: {fundamentals_report} -Focus on actionable insights and continuous improvement. Build on past lessons, critically evaluate all perspectives, and ensure each decision advances better outcomes.""" +**REMEMBER:** Position sizing is your PRIMARY tool for risk management. When uncertain, go smaller. When conviction is high AND risks are managed, go bigger.""" response = llm.invoke(prompt) diff --git a/tradingagents/agents/researchers/bear_researcher.py b/tradingagents/agents/researchers/bear_researcher.py index 634a3899..aa33df3b 100644 --- a/tradingagents/agents/researchers/bear_researcher.py +++ b/tradingagents/agents/researchers/bear_researcher.py @@ -22,31 +22,72 @@ def create_bear_researcher(llm, memory): else: past_memories = [] - past_memory_str = "" - for i, rec in enumerate(past_memories, 1): - past_memory_str += rec["recommendation"] + "\n\n" - prompt = f"""You are a Bear Analyst making the case against investing in the stock. Your goal is to present a well-reasoned argument emphasizing risks, challenges, and negative indicators. Leverage the provided research and data to highlight potential downsides and counter bullish arguments effectively. + if past_memories: + past_memory_str = "### Past Lessons Applied\n**Reflections from Similar Situations:**\n" + for i, rec in enumerate(past_memories, 1): + past_memory_str += rec["recommendation"] + "\n\n" + past_memory_str += "\n\n**How I'm Using These Lessons:**\n" + past_memory_str += "- [Specific adjustment based on past mistake/success]\n" + past_memory_str += "- [Impact on current conviction level]\n" + else: + past_memory_str = "" -Key points to focus on: + prompt = f"""You are the Bear Analyst making the case for SHORT-TERM SELL/AVOID (1-2 weeks). -- Risks and Challenges: Highlight factors like market saturation, financial instability, or macroeconomic threats that could hinder the stock's performance. -- Competitive Weaknesses: Emphasize vulnerabilities such as weaker market positioning, declining innovation, or threats from competitors. -- Negative Indicators: Use evidence from financial data, market trends, or recent adverse news to support your position. -- Bull Counterpoints: Critically analyze the bull argument with specific data and sound reasoning, exposing weaknesses or over-optimistic assumptions. -- Engagement: Present your argument in a conversational style, directly engaging with the bull analyst's points and debating effectively rather than simply listing facts. +## YOUR OBJECTIVE +Build evidence-based bear case emphasizing SHORT-TERM risks and refute Bull claims. -Resources available: +## STRUCTURE -Market research report: {market_research_report} -Social media sentiment report: {sentiment_report} -Latest world affairs news: {news_report} -Company fundamentals report: {fundamentals_report} -Conversation history of the debate: {history} -Last bull argument: {current_response} -Reflections from similar situations and lessons learned: {past_memory_str} -Use this information to deliver a compelling bear argument, refute the bull's claims, and engage in a dynamic debate that demonstrates the risks and weaknesses of investing in the stock. You must also address reflections and learn from lessons and mistakes you made in the past. -""" +### Core Thesis (2-3 sentences) +Why this is SELL/AVOID for short-term traders NOW. + +### Key Bearish Points (3-4 max) +For each: +- **Risk:** [Bearish argument] +- **Evidence:** [Specific data - numbers, dates] +- **Short-Term Impact:** [Impact in next 1-2 weeks] +- **Probability:** [High/Med/Low] + +### Bull Rebuttals +For EACH Bull claim: +- **Bull Says:** "[Quote]" +- **Counter:** [Why they're wrong] +- **Flaw:** [Weakness in their logic] + +### Strengths I Acknowledge +- [1-2 legitimate Bull points] +- [Why risks still dominate] + +## EVIDENCE PRIORITY +1. Disappointing results, guidance cuts +2. Technical breakdown, fading momentum +3. Near-term risk (next 1-2 weeks) +4. Insider selling, downgrades + +## RULES +- ✅ Specific numbers and dates +- ✅ Engage with Bull points +- ✅ Short-term focus (1-2 weeks) +- ❌ Don't exaggerate +- ❌ Don't ignore Bull strengths + +--- + +**DATA:** +Technical: {market_research_report} +Sentiment: {sentiment_report} +News: {news_report} +Fundamentals: {fundamentals_report} + +**DEBATE:** +History: {history} +Last Bull: {current_response} + +**LESSONS:** {past_memory_str} + +Apply lessons: How are you adjusting?""" response = llm.invoke(prompt) diff --git a/tradingagents/agents/researchers/bull_researcher.py b/tradingagents/agents/researchers/bull_researcher.py index b96e70d6..ba1b9d37 100644 --- a/tradingagents/agents/researchers/bull_researcher.py +++ b/tradingagents/agents/researchers/bull_researcher.py @@ -22,29 +22,71 @@ def create_bull_researcher(llm, memory): else: past_memories = [] - past_memory_str = "" - for i, rec in enumerate(past_memories, 1): - past_memory_str += rec["recommendation"] + "\n\n" - prompt = f"""You are a Bull Analyst advocating for investing in the stock. Your task is to build a strong, evidence-based case emphasizing growth potential, competitive advantages, and positive market indicators. Leverage the provided research and data to address concerns and counter bearish arguments effectively. + if past_memories: + past_memory_str = "### Past Lessons Applied\\n**Reflections from Similar Situations:**\\n" + for i, rec in enumerate(past_memories, 1): + past_memory_str += rec["recommendation"] + "\\n\\n" + past_memory_str += "\\n\\n**How I'm Using These Lessons:**\\n" + past_memory_str += "- [Specific adjustment based on past mistake/success]\\n" + past_memory_str += "- [Impact on current conviction level]\\n" + else: + past_memory_str = "" # Don't include placeholder when no memories -Key points to focus on: -- Growth Potential: Highlight the company's market opportunities, revenue projections, and scalability. -- Competitive Advantages: Emphasize factors like unique products, strong branding, or dominant market positioning. -- Positive Indicators: Use financial health, industry trends, and recent positive news as evidence. -- Bear Counterpoints: Critically analyze the bear argument with specific data and sound reasoning, addressing concerns thoroughly and showing why the bull perspective holds stronger merit. -- Engagement: Present your argument in a conversational style, engaging directly with the bear analyst's points and debating effectively rather than just listing data. + prompt = f"""You are the Bull Analyst making the case for a SHORT-TERM BUY (1-2 weeks). -Resources available: -Market research report: {market_research_report} -Social media sentiment report: {sentiment_report} -Latest world affairs news: {news_report} -Company fundamentals report: {fundamentals_report} -Conversation history of the debate: {history} -Last bear argument: {current_response} -Reflections from similar situations and lessons learned: {past_memory_str} -Use this information to deliver a compelling bull argument, refute the bear's concerns, and engage in a dynamic debate that demonstrates the strengths of the bull position. You must also address reflections and learn from lessons and mistakes you made in the past. -""" +## YOUR OBJECTIVE +Build evidence-based bull case and directly refute Bear concerns. + +## STRUCTURE + +### Core Thesis (2-3 sentences) +Why this is a BUY for short-term traders RIGHT NOW. + +### Key Bullish Points (3-4 max) +For each: +- **Point:** [Bullish argument] +- **Evidence:** [Specific data - numbers, dates] +- **Short-Term Relevance:** [Impact in next 1-2 weeks] + +### Bear Rebuttals +For EACH Bear concern: +- **Bear Says:** "[Quote]" +- **Counter:** [Data-driven refutation] +- **Why Wrong:** [Flaw in their logic] + +### Risks I Acknowledge +- [1-2 legitimate risks] +- [Why opportunity outweighs them] + +## EVIDENCE PRIORITY +1. Recent earnings/revenue data +2. Technical setup (breakout, volume) +3. Near-term catalyst (next 1-2 weeks) +4. Insider buying, upgrades + +## RULES +- ✅ Use specific numbers and dates +- ✅ Engage directly with Bear points +- ✅ Short-term focus (1-2 weeks) +- ❌ No unsupported claims +- ❌ Don't ignore Bear's strong points + +--- + +**DATA:** +Technical: {market_research_report} +Sentiment: {sentiment_report} +News: {news_report} +Fundamentals: {fundamentals_report} + +**DEBATE:** +History: {history} +Last Bear: {current_response} +""" + (f""" +**LESSONS:** {past_memory_str} + +Apply past lessons: How are you adjusting based on similar situations?""" if past_memory_str else "") response = llm.invoke(prompt) diff --git a/tradingagents/agents/risk_mgmt/aggresive_debator.py b/tradingagents/agents/risk_mgmt/aggresive_debator.py index 7e2b4937..91fd5942 100644 --- a/tradingagents/agents/risk_mgmt/aggresive_debator.py +++ b/tradingagents/agents/risk_mgmt/aggresive_debator.py @@ -18,19 +18,90 @@ def create_risky_debator(llm): 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. Specifically, respond directly to each point made by the conservative and neutral analysts, countering with data-driven rebuttals and persuasive reasoning. Highlight where their caution might miss critical opportunities or where their assumptions may be overly conservative. Here is the trader's decision: + prompt = f"""You are the Aggressive Risk Analyst advocating for MAXIMUM position sizing to capture this SHORT-TERM opportunity. +## YOUR MISSION +Make the case for a LARGE position (8-12% of capital) using quantified expected value math and aggressive short-term arguments. + +## ARGUMENT FRAMEWORK + +### Expected Value Calculation +**Position the Math:** +- Probability of Success: [X]% (based on data) +- Potential Gain: [Y]% +- Probability of Failure: [Z]% +- Potential Loss: [W]% +- **Expected Value: ([X]% × [Y]%) - ([Z]% × [W]%) = [EV]%** + +If EV is positive and >3%, argue for aggressive sizing. + +### Structure Your Case + +**1. Opportunity Size (Why Go Big)** +- **Upside:** [Specific % gain potential] +- **Catalyst Strength:** [Why catalyst is powerful] +- **Time Sensitivity:** [Why we must act NOW, not wait] +- **Edge:** [What others are missing] + +**2. Risk/Reward Math** +- Best Case: [X]% gain in [Y] days +- Base Case: [A]% gain in [B] days +- Stop Loss: [C]% (tight control) +- **Risk/Reward Ratio: [Ratio] (>3:1 ideal)** + +**3. Counter Conservative Points** +For EACH concern the Safe Analyst raised: +- **Safe Says:** "[Quote their concern]" +- **Why They're Wrong:** [Data refutation] +- **Reality:** [The actual probability is lower than they claim] + +**4. Counter Neutral Points** +- **Neutral Says:** "[Quote their moderation]" +- **Why Moderate Sizing Loses:** [Opportunity cost argument] +- **Math:** [Show that 4% position vs 10% position makes huge difference] + +## QUALITY RULES +- ✅ USE NUMBERS: "70% probability, 25% upside = +17.5% EV" +- ✅ Quote specific counterarguments from others +- ✅ Show time sensitivity (catalyst in X days) +- ✅ Acknowledge risks but show they're manageable +- ❌ Don't ignore legitimate concerns +- ❌ Don't exaggerate without data +- ❌ Don't argue for recklessness, argue for calculated aggression + +## POSITION SIZING ADVOCACY +**Push for 8-12% position if:** +- Expected value >5% +- Risk/reward >3:1 +- Catalyst within 5 days +- Technical setup is optimal + +**Argue against conservative sizing:** +"A 2% position on a 25% expected gain opportunity is leaving money on the table. If we're right, we make 0.5% on the portfolio. If we size at 10%, we make 2.5%. That's 5X the profit for the same analysis work." + +--- + +**TRADER'S PLAN:** {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: +**YOUR TASK:** Argue why this plan should be executed with MAXIMUM conviction sizing. -Market Research Report: {market_research_report} -Social Media Sentiment Report: {sentiment_report} -Latest World Affairs Report: {news_report} -Company Fundamentals Report: {fundamentals_report} -Here is the current conversation history: {history} Here are the last arguments from the conservative analyst: {current_safe_response} Here are the last arguments from the neutral analyst: {current_neutral_response}. If there are no responses from the other viewpoints, do not halluncinate and just present your point. +**MARKET DATA:** +- Technical: {market_research_report} +- Sentiment: {sentiment_report} +- News: {news_report} +- Fundamentals: {fundamentals_report} -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. Maintain a focus on debating and persuading, not just presenting data. Challenge each counterpoint to underscore why a high-risk approach is optimal. Output conversationally as if you are speaking without any special formatting.""" +**DEBATE HISTORY:** +{history} + +**CONSERVATIVE ARGUMENT:** +{current_safe_response} + +**NEUTRAL ARGUMENT:** +{current_neutral_response} + +**If no other arguments yet:** Present your bullish case with expected value math.""" response = llm.invoke(prompt) diff --git a/tradingagents/agents/risk_mgmt/conservative_debator.py b/tradingagents/agents/risk_mgmt/conservative_debator.py index c56e16ad..2d74e4d8 100644 --- a/tradingagents/agents/risk_mgmt/conservative_debator.py +++ b/tradingagents/agents/risk_mgmt/conservative_debator.py @@ -19,19 +19,102 @@ def create_safe_debator(llm): trader_decision = state["trader_investment_plan"] - prompt = f"""As the Safe/Conservative Risk Analyst, your primary objective is to protect assets, minimize volatility, and ensure steady, reliable growth. You prioritize stability, security, and risk mitigation, carefully assessing potential losses, economic downturns, and market volatility. When evaluating the trader's decision or plan, critically examine high-risk elements, pointing out where the decision may expose the firm to undue risk and where more cautious alternatives could secure long-term gains. Here is the trader's decision: + prompt = f"""You are the Conservative Risk Analyst advocating for MINIMAL position sizing or NO POSITION to protect capital. +## YOUR MISSION +Make the case for a SMALL position (1-3% of capital) or NO POSITION (0%) using quantified downside scenarios and risk-first arguments. + +## ARGUMENT FRAMEWORK + +### Downside Scenario Analysis +**Quantify the Risks:** +- Probability of Loss: [X]% (realistic assessment) +- Maximum Loss: [Y]% (if wrong) +- Hidden Risks: [List 2-3 risks others missed] +- **Expected Loss: [X]% × [Y]% = [Z]%** + +If downside risk is high, argue for minimal or no sizing. + +### Structure Your Case + +**1. Risk Identification (Why Go Small/Avoid)** +- **Primary Risk:** [Most likely way this fails] +- **Probability:** [X]% chance of [Y]% loss +- **Timing Risk:** [Catalyst could disappoint or delay] +- **Hidden Dangers:** [What the market hasn't priced in yet] + +**2. Downside Scenarios** +**Worst Case:** [X]% loss in [Y] days if [catalyst fails] +**Base Case:** [A]% loss if [thesis partially wrong] +**Best Case (even if right):** [B]% gain isn't worth the risk +**Risk/Reward Ratio:** [Ratio] (if <2:1, too risky) + +**3. Counter Aggressive Points** +For EACH claim the Risky Analyst made: +- **Risky Says:** "[Quote their optimism]" +- **What They're Missing:** [Risk they ignored] +- **Reality Check:** [Actual probability is lower/risk is higher] +- **Data:** [Cite specific evidence of risk] + +**4. Counter Neutral Points** +- **Neutral Says:** "[Quote their moderate view]" +- **Why Even Moderate Sizing Is Risky:** [Show overlooked risks] +- **Better Alternatives:** [Other opportunities with better risk/reward] + +### Recommend Alternative Actions +**Instead of this trade:** +- Wait for [specific trigger] to reduce risk +- Size at 1-2% instead of 5-10% (limit damage if wrong) +- Skip entirely and preserve capital for better opportunity +- Hedge with [specific strategy] to reduce downside + +## QUALITY RULES +- ✅ QUANTIFY RISKS: "40% chance of -15% loss = -6% expected loss" +- ✅ Quote specific aggressive claims and refute with data +- ✅ Identify overlooked risks (macro, technical, fundamental) +- ✅ Provide specific triggers that would change your view +- ❌ Don't be fearful without evidence +- ❌ Don't ignore legitimate opportunities +- ❌ Don't argue against all action, argue for prudent sizing + +## POSITION SIZING ADVOCACY +**Argue for NO POSITION (0%) if:** +- Risk/reward <1.5:1 +- Downside probability >40% +- No clear catalyst or catalyst already priced in +- Better opportunities available + +**Argue for SMALL POSITION (1-3%) if:** +- Setup is interesting but uncertain +- Risks are manageable with tight stop +- Exploratory trade to learn + +**Argue against aggressive sizing:** +"Even if the Risky Analyst is right about 25% upside, the 40% chance of -15% loss means expected value is negative. A 10% position could lose us 1.5% of the portfolio. That's three good trades' worth of profit." + +--- + +**TRADER'S PLAN:** {trader_decision} -Your task is to actively counter the arguments of the Risky and Neutral Analysts, highlighting where their views may overlook potential threats or fail to prioritize sustainability. Respond directly to their points, drawing from the following data sources to build a convincing case for a low-risk approach adjustment to the trader's decision: +**YOUR TASK:** Identify the risks others are missing and argue for minimal or no position. -Market Research Report: {market_research_report} -Social Media Sentiment Report: {sentiment_report} -Latest World Affairs Report: {news_report} -Company Fundamentals Report: {fundamentals_report} -Here is the current conversation history: {history} Here is the last response from the risky analyst: {current_risky_response} Here is the last response from the neutral analyst: {current_neutral_response}. If there are no responses from the other viewpoints, do not halluncinate and just present your point. +**MARKET DATA:** +- Technical: {market_research_report} +- Sentiment: {sentiment_report} +- News: {news_report} +- Fundamentals: {fundamentals_report} -Engage by questioning their optimism and emphasizing the potential downsides they may have overlooked. Address each of their counterpoints to showcase why a conservative stance is ultimately the safest path for the firm's assets. Focus on debating and critiquing their arguments to demonstrate the strength of a low-risk strategy over their approaches. Output conversationally as if you are speaking without any special formatting.""" +**DEBATE HISTORY:** +{history} + +**AGGRESSIVE ARGUMENT:** +{current_risky_response} + +**NEUTRAL ARGUMENT:** +{current_neutral_response} + +**If no other arguments yet:** Present your bearish case with downside scenario analysis.""" response = llm.invoke(prompt) diff --git a/tradingagents/agents/risk_mgmt/neutral_debator.py b/tradingagents/agents/risk_mgmt/neutral_debator.py index a6d2ef5c..cfbab266 100644 --- a/tradingagents/agents/risk_mgmt/neutral_debator.py +++ b/tradingagents/agents/risk_mgmt/neutral_debator.py @@ -18,19 +18,100 @@ def create_neutral_debator(llm): trader_decision = state["trader_investment_plan"] - prompt = f"""As the Neutral Risk Analyst, your role is to provide a balanced perspective, weighing both the potential benefits and risks of the trader's decision or plan. You prioritize a well-rounded approach, evaluating the upsides and downsides while factoring in broader market trends, potential economic shifts, and diversification strategies.Here is the trader's decision: + prompt = f"""You are the Neutral Risk Analyst advocating for BALANCED position sizing (4-7% of capital) that optimizes risk-adjusted returns. +## YOUR MISSION +Make the case for a MEDIUM position that captures upside while controlling downside, using probabilistic analysis and balanced arguments. + +## ARGUMENT FRAMEWORK + +### Probabilistic Analysis +**Balance the Probabilities:** +- Bull Case Probability: [X]% +- Bear Case Probability: [Y]% +- Neutral Case Probability: [Z]% +- **Most Likely Outcome:** [Describe scenario with highest probability] +- **Expected Value:** [Calculate using all scenarios] + +### Structure Your Case + +**1. Balanced Assessment** +- **Opportunity Recognition:** [What's real about the bull case] +- **Risk Recognition:** [What's valid about the bear case] +- **Optimal Sizing:** [Why 4-7% captures both] +- **Middle Ground:** [The scenario both extremes are missing] + +**2. Probabilistic Scenarios** +**Bull Scenario (30% probability):** [X]% gain +**Base Scenario (50% probability):** [Y]% gain/loss +**Bear Scenario (20% probability):** [Z]% loss +**Expected Value:** (30% × [X]%) + (50% × [Y]%) + (20% × [Z]%) = [EV]% + +If EV is positive but uncertain, argue for medium sizing. + +**3. Counter Aggressive Analyst** +- **Risky Says:** "[Quote excessive optimism]" +- **Valid Point:** [What they're right about] +- **Overreach:** [Where they exaggerate or ignore risks] +- **Better Sizing:** "I agree opportunity exists, but 8-12% is too much given [specific risk]. 5-6% captures upside with better risk control." + +**4. Counter Conservative Analyst** +- **Safe Says:** "[Quote excessive caution]" +- **Valid Point:** [What risk they correctly identified] +- **Overreach:** [Where they're too pessimistic or missing opportunity] +- **Better Sizing:** "I agree risks exist, but 1-3% or 0% misses a real opportunity. 5-6% with tight stop manages risk while participating." + +### Middle Path Justification +**Why Medium Sizing (4-7%) Is Optimal:** +- Captures meaningful gains if thesis is right (5% position × 20% gain = 1% portfolio gain) +- Limits damage if thesis is wrong (5% position × 10% loss with stop = 0.5% portfolio loss) +- Risk/reward ratio: [Calculate ratio] +- Allows for flexibility (can add if thesis strengthens, cut if it weakens) + +## QUALITY RULES +- ✅ BALANCE MATH: Show expected value across scenarios +- ✅ Acknowledge valid points from BOTH sides +- ✅ Explain why extremes (0% or 12%) are suboptimal +- ✅ Propose specific sizing (e.g., "5.5% position") +- ❌ Don't fence-sit without conviction +- ❌ Don't ignore either bull or bear case +- ❌ Don't default to moderate sizing without justification + +## POSITION SIZING ADVOCACY +**Argue for MEDIUM POSITION (4-7%) if:** +- Expected value is positive but moderate (+2% to +5%) +- Risk/reward ratio is 2:1 to 3:1 +- Uncertainty is manageable with stops +- Catalyst timing is medium-term (5-14 days) + +**Respond to Extremes:** +**If Risky pushes 10%:** "The 10% sizing assumes 70%+ success probability, but realistically it's 50-60%. At 5-6%, we still make meaningful gains if right but don't overexpose if wrong." + +**If Safe pushes 0-2%:** "The risks are real but manageable. A 1% position makes only 0.2% on the portfolio even if we're right. That's not enough return for the analysis effort. 5% with a tight stop is prudent." + +--- + +**TRADER'S PLAN:** {trader_decision} -Your task is to challenge both the Risky and Safe Analysts, pointing out where each perspective may be overly optimistic or overly cautious. Use insights from the following data sources to support a moderate, sustainable strategy to adjust the trader's decision: +**YOUR TASK:** Find the balanced position size that maximizes risk-adjusted returns. -Market Research Report: {market_research_report} -Social Media Sentiment Report: {sentiment_report} -Latest World Affairs Report: {news_report} -Company Fundamentals Report: {fundamentals_report} -Here is the current conversation history: {history} Here is the last response from the risky analyst: {current_risky_response} Here is the last response from the safe analyst: {current_safe_response}. If there are no responses from the other viewpoints, do not halluncinate and just present your point. +**MARKET DATA:** +- Technical: {market_research_report} +- Sentiment: {sentiment_report} +- News: {news_report} +- Fundamentals: {fundamentals_report} -Engage actively by analyzing both sides critically, addressing weaknesses in the risky and conservative arguments to advocate for a more balanced approach. Challenge each of their points to illustrate why a moderate risk strategy might offer the best of both worlds, providing growth potential while safeguarding against extreme volatility. Focus on debating rather than simply presenting data, aiming to show that a balanced view can lead to the most reliable outcomes. Output conversationally as if you are speaking without any special formatting.""" +**DEBATE HISTORY:** +{history} + +**AGGRESSIVE ARGUMENT:** +{current_risky_response} + +**CONSERVATIVE ARGUMENT:** +{current_safe_response} + +**If no other arguments yet:** Present your balanced case with probabilistic scenarios.""" response = llm.invoke(prompt) diff --git a/tradingagents/agents/trader/trader.py b/tradingagents/agents/trader/trader.py index 4cbfda37..4b8df43d 100644 --- a/tradingagents/agents/trader/trader.py +++ b/tradingagents/agents/trader/trader.py @@ -18,13 +18,16 @@ def create_trader(llm, memory): past_memories = memory.get_memories(curr_situation, n_matches=2) else: past_memories = [] - - past_memory_str = "" + if past_memories: + past_memory_str = "### Past Lessons Applied\\n**Reflections from Similar Situations:**\\n" for i, rec in enumerate(past_memories, 1): - past_memory_str += rec["recommendation"] + "\n\n" + past_memory_str += rec["recommendation"] + "\\n\\n" + past_memory_str += "\\n\\n**How I'm Using These Lessons:**\\n" + past_memory_str += "- [Specific adjustment based on past mistake/success]\\n" + past_memory_str += "- [Impact on current conviction level]\\n" else: - past_memory_str = "No past memories found." + past_memory_str = "" # Don't include placeholder when no memories context = { "role": "user", @@ -34,7 +37,87 @@ def create_trader(llm, memory): messages = [ { "role": "system", - "content": f"""You are a trading agent analyzing market data to make investment decisions. Based on your analysis, provide a specific recommendation to buy, sell, or hold. End with a firm decision and always conclude your response with 'FINAL TRANSACTION PROPOSAL: **BUY/HOLD/SELL**' to confirm your recommendation. Do not forget to utilize lessons from past decisions to learn from your mistakes. Here is some reflections from similar situatiosn you traded in and the lessons learned: {past_memory_str}""", + "content": f"""You are the Lead Trader making the final SHORT-TERM trading decision on {company_name}. + +## YOUR RESPONSIBILITIES +1. **Validate the Plan:** Review for logic, data support, and risks +2. **Add Trading Details:** Entry price, position size, stop loss, targets +3. **Apply Past Lessons:** Learn from history (see reflections below) +4. **Make Final Call:** Clear BUY/HOLD/SELL with execution plan + +## IMPORTANT: DECISION HIERARCHY +Your decision will be reviewed by the Risk Manager who may: +- Reduce position size if risks are high +- Override to NO POSITION if risks outweigh opportunity +- Adjust stop-loss levels for better risk management + +Make your best recommendation - the Risk Manager will apply final risk controls. + +## SHORT-TERM TRADING CRITERIA (1-2 week horizon) + +**BUY if:** +- Clear catalyst in next 5-10 days +- Technical setup favorable (not overextended) +- Risk/reward ratio >2:1 +- Specific entry and stop loss levels identified + +**SELL if:** +- Catalyst played out (news priced in, earnings passed) +- Technical breakdown or trend reversal +- Risk/reward deteriorated +- Better opportunities available + +**HOLD if (rare, needs strong justification):** +- Major catalyst imminent (1-3 days away) +- Current position is optimal +- Waiting provides option value + +## OUTPUT STRUCTURE (MANDATORY SECTIONS) + +### Decision Summary +**DECISION: BUY / SELL / HOLD** +**Conviction: High / Medium / Low** +**Position Size: [X]% of capital** +**Time Horizon: [Y] days** + +### Plan Evaluation +**What I Agree With:** [Key strengths from the plan] +**What I'm Concerned About:** [Gaps or risks in the plan] +**My Adjustments:** [How I'm modifying based on trading experience] + +### Trade Execution Details + +**If BUY:** +- Entry: $[X] (or market) +- Size: [Y]% portfolio +- Stop Loss: $[A] ([B]% risk) +- Target: $[C] ([D]% gain) +- Horizon: [E] days +- Risk/Reward: [Ratio] + +**If SELL:** +- Exit: $[X] (or market) +- Timing: [When/how to exit] +- Re-entry: [What would change my mind] + +**If HOLD:** +- Why: [Specific justification] +- BUY trigger: [Event/price] +- SELL trigger: [Event/price] +- Review: [When to reassess] + +{past_memory_str} + +### Risk Management +- Max Loss: $[X] or [Y]% +- What Invalidates Thesis: [Specific condition] +- Portfolio Impact: [Effect on overall risk] + +--- + +**FINAL TRANSACTION PROPOSAL: BUY/HOLD/SELL** + +End with clear decision statement.""", }, context, ] diff --git a/tradingagents/agents/utils/agent_states.py b/tradingagents/agents/utils/agent_states.py index f0172cd4..b81d749a 100644 --- a/tradingagents/agents/utils/agent_states.py +++ b/tradingagents/agents/utils/agent_states.py @@ -84,4 +84,5 @@ class DiscoveryState(TypedDict): opportunities: Annotated[list[dict], "List of final opportunities with rationale"] final_ranking: Annotated[str, "Final ranking from LLM"] status: Annotated[str, "Current status of discovery"] + tool_logs: Annotated[list[dict], "Detailed logs of all tool calls across all nodes (scanner, filter, deep_dive)"] diff --git a/tradingagents/agents/utils/historical_memory_builder.py b/tradingagents/agents/utils/historical_memory_builder.py index e7ebfdeb..29e57642 100644 --- a/tradingagents/agents/utils/historical_memory_builder.py +++ b/tradingagents/agents/utils/historical_memory_builder.py @@ -2,15 +2,20 @@ Historical Memory Builder for TradingAgents This module creates agent memories from historical stock data by: -1. Analyzing market conditions at time T -2. Observing actual stock performance at time T + delta -3. Creating situation -> outcome mappings for each agent type -4. Storing memories in ChromaDB for future retrieval +1. Finding high movers (>15% in 5 days) +2. Running retrospective trading graph analysis at T-7 and T-30 days before the move +3. Extracting structured signals and agent decisions +4. Creating situation -> outcome mappings with enhanced metadata +5. Storing memories in ChromaDB for future retrieval """ import os +import re +import json +import yfinance as yf +import pandas as pd from datetime import datetime, timedelta -from typing import List, Dict, Tuple, Optional +from typing import List, Dict, Tuple, Optional, Any from tradingagents.tools.executor import execute_tool from tradingagents.agents.utils.memory import FinancialSituationMemory @@ -33,6 +38,639 @@ class HistoricalMemoryBuilder: "risk_manager": 0 } + def get_tickers_from_alpha_vantage(self, limit: int = 20) -> List[str]: + """ + Get ticker list from Alpha Vantage top gainers/losers. + + Args: + limit: Number of tickers to get from each category (gainers/losers) + + Returns: + List of ticker symbols from top gainers and losers + """ + print(f"\n🔍 Fetching top movers from Alpha Vantage...") + + try: + # Use execute_tool to call the alpha vantage function + response = execute_tool("get_market_movers", limit=limit) + + # Parse the markdown table response to extract tickers + tickers = set() + + lines = response.split('\n') + for line in lines: + # Look for table rows with ticker data + if '|' in line and not line.strip().startswith('|---'): + parts = [p.strip() for p in line.split('|')] + # Table format: | Ticker | Price | Change % | Volume | + if len(parts) >= 2 and parts[1] and parts[1] not in ['Ticker', '']: + ticker = parts[1].strip() + + # Filter out warrants, units, and problematic tickers + if ticker and self._is_valid_ticker(ticker): + tickers.add(ticker) + + ticker_list = sorted(list(tickers)) + print(f" ✅ Found {len(ticker_list)} unique tickers from Alpha Vantage") + print(f" Tickers: {', '.join(ticker_list[:10])}{'...' if len(ticker_list) > 10 else ''}") + + return ticker_list + + except Exception as e: + print(f" ⚠️ Error fetching from Alpha Vantage: {e}") + print(f" Falling back to empty list") + return [] + + def _is_valid_ticker(self, ticker: str) -> bool: + """ + Validate if a ticker is suitable for analysis. + + Filters out: + - Warrants (ending in W, WW, WS) + - Units (ending in U) + - Preferred shares (containing -, /) + - Rights (ending in R) + - Other derivative instruments + + Args: + ticker: Stock ticker symbol + + Returns: + True if ticker is a regular stock, False otherwise + """ + if not ticker or len(ticker) > 6: + return False + + # Must be uppercase letters and numbers only + if not re.match(r'^[A-Z]{1,5}$', ticker): + return False + + # Filter out warrants (W, WW, WS suffix) + if ticker.endswith('W') or ticker.endswith('WW') or ticker.endswith('WS'): + return False + + # Filter out units + if ticker.endswith('U'): + return False + + # Filter out rights + if ticker.endswith('R') and len(ticker) > 1: + return False + + # Filter out other suffixes that indicate derivatives + if ticker.endswith('Z'): # Often used for special situations + return False + + return True + + def find_high_movers( + self, + tickers: List[str], + start_date: str, + end_date: str, + min_move_pct: float = 15.0, + window_days: int = 5 + ) -> List[Dict[str, Any]]: + """ + Find stocks that had significant moves (>15% in 5 days). + + Args: + tickers: List of tickers to scan + start_date: Start date for scanning (YYYY-MM-DD) + end_date: End date for scanning (YYYY-MM-DD) + min_move_pct: Minimum percentage move (default: 15%) + window_days: Rolling window in days (default: 5) + + Returns: + List of dicts with keys: + - ticker: Stock symbol + - move_start_date: Start of the move (YYYY-MM-DD) + - move_end_date: End of the move (YYYY-MM-DD) + - move_pct: Percentage change + - direction: "up" or "down" + - start_price: Price at start + - end_price: Price at end + """ + high_movers = [] + + print(f"\n🔍 Scanning for high movers ({min_move_pct}%+ in {window_days} days)") + print(f" Period: {start_date} to {end_date}") + print(f" Tickers: {len(tickers)}\n") + + for ticker in tickers: + try: + print(f" Scanning {ticker}...", end=" ") + + # Download historical data using yfinance + stock = yf.Ticker(ticker) + df = stock.history(start=start_date, end=end_date) + + if df.empty: + print("No data") + continue + + # Calculate rolling returns over window_days + df['rolling_return'] = df['Close'].pct_change(periods=window_days) * 100 + + # Find periods with moves >= min_move_pct + significant_moves = df[abs(df['rolling_return']) >= min_move_pct] + + if not significant_moves.empty: + for idx, row in significant_moves.iterrows(): + # Get the start date (window_days before this date) + move_end_date = idx.strftime('%Y-%m-%d') + move_start_date = (idx - timedelta(days=window_days)).strftime('%Y-%m-%d') + + # Get prices + try: + start_price = df.loc[df.index >= move_start_date, 'Close'].iloc[0] + end_price = row['Close'] + move_pct = row['rolling_return'] + + high_movers.append({ + 'ticker': ticker, + 'move_start_date': move_start_date, + 'move_end_date': move_end_date, + 'move_pct': move_pct, + 'direction': 'up' if move_pct > 0 else 'down', + 'start_price': start_price, + 'end_price': end_price + }) + except (IndexError, KeyError): + continue + + print(f"Found {len([m for m in high_movers if m['ticker'] == ticker])} moves") + else: + print("No significant moves") + + except Exception as e: + print(f"Error: {e}") + continue + + print(f"\n✅ Total high movers found: {len(high_movers)}\n") + return high_movers + + def run_retrospective_analysis( + self, + ticker: str, + analysis_date: str + ) -> Optional[Dict[str, Any]]: + """ + Run the trading graph analysis for a ticker at a specific historical date. + + This simulates what the agent would have seen/decided on that date. + + Args: + ticker: Stock ticker symbol + analysis_date: Date to run analysis (YYYY-MM-DD) + + Returns: + Dict with keys: + - market_report: str + - sentiment_report: str + - news_report: str + - fundamentals_report: str + - investment_plan: str (if available) + - final_decision: str (if available) + - structured_signals: Dict of extracted features + """ + try: + # Import here to avoid circular imports + from tradingagents.graph.trading_graph import TradingAgentsGraph + + print(f" Running analysis for {ticker} on {analysis_date}...") + + # Create trading graph instance + # Use fewer analysts to reduce token usage + graph = TradingAgentsGraph( + selected_analysts=["market", "fundamentals"], # Skip social/news to reduce tokens + config=self.config, + debug=False + ) + + # Run the analysis (returns tuple: final_state, processed_signal) + final_state, _ = graph.propagate(ticker, analysis_date) + + # Extract reports and decisions (with type safety) + def safe_get_str(d, key, default=''): + """Safely extract string from state, handling lists or other types.""" + value = d.get(key, default) + if isinstance(value, list): + # If it's a list, try to extract text from messages + return ' '.join(str(item) for item in value) + return str(value) if value else default + + # Extract reports and decisions + analysis_data = { + 'market_report': safe_get_str(final_state, 'market_report'), + 'sentiment_report': safe_get_str(final_state, 'sentiment_report'), + 'news_report': safe_get_str(final_state, 'news_report'), + 'fundamentals_report': safe_get_str(final_state, 'fundamentals_report'), + 'investment_plan': safe_get_str(final_state, 'investment_plan'), + 'final_decision': safe_get_str(final_state, 'final_trade_decision'), + } + + # Extract structured signals from reports + analysis_data['structured_signals'] = self.extract_structured_signals(analysis_data) + + return analysis_data + + except Exception as e: + print(f" Error running analysis: {e}") + import traceback + print(f" Traceback: {traceback.format_exc()}") + return None + + def extract_structured_signals(self, reports: Dict[str, str]) -> Dict[str, Any]: + """ + Extract structured signal features from analyst reports. + + Args: + reports: Dict with market_report, sentiment_report, news_report, fundamentals_report + + Returns: + Dict with extracted signal features: + - unusual_volume: bool + - analyst_sentiment: str (bullish/bearish/neutral) + - news_sentiment: str (positive/negative/neutral) + - short_interest: str (high/medium/low) + - insider_activity: str (buying/selling/none) + - price_trend: str (uptrend/downtrend/sideways) + - volatility: str (high/medium/low) + """ + signals = {} + + market_report = reports.get('market_report', '') + sentiment_report = reports.get('sentiment_report', '') + news_report = reports.get('news_report', '') + fundamentals_report = reports.get('fundamentals_report', '') + + # Extract volume signals + signals['unusual_volume'] = bool( + re.search(r'(unusual volume|volume spike|high volume|increased volume)', market_report, re.IGNORECASE) + ) + + # Extract sentiment + if re.search(r'(bullish|positive outlook|strong buy|buy)', sentiment_report + news_report, re.IGNORECASE): + signals['analyst_sentiment'] = 'bullish' + elif re.search(r'(bearish|negative outlook|strong sell|sell)', sentiment_report + news_report, re.IGNORECASE): + signals['analyst_sentiment'] = 'bearish' + else: + signals['analyst_sentiment'] = 'neutral' + + # Extract news sentiment + if re.search(r'(positive|good news|beat expectations|upgrade|growth)', news_report, re.IGNORECASE): + signals['news_sentiment'] = 'positive' + elif re.search(r'(negative|bad news|miss expectations|downgrade|decline)', news_report, re.IGNORECASE): + signals['news_sentiment'] = 'negative' + else: + signals['news_sentiment'] = 'neutral' + + # Extract short interest + if re.search(r'(high short interest|heavily shorted|short squeeze)', market_report + news_report, re.IGNORECASE): + signals['short_interest'] = 'high' + elif re.search(r'(low short interest|minimal short)', market_report, re.IGNORECASE): + signals['short_interest'] = 'low' + else: + signals['short_interest'] = 'medium' + + # Extract insider activity + if re.search(r'(insider buying|executive purchased|insider purchases)', news_report + fundamentals_report, re.IGNORECASE): + signals['insider_activity'] = 'buying' + elif re.search(r'(insider selling|executive sold|insider sales)', news_report + fundamentals_report, re.IGNORECASE): + signals['insider_activity'] = 'selling' + else: + signals['insider_activity'] = 'none' + + # Extract price trend + if re.search(r'(uptrend|bullish trend|rising|moving higher|higher highs)', market_report, re.IGNORECASE): + signals['price_trend'] = 'uptrend' + elif re.search(r'(downtrend|bearish trend|falling|moving lower|lower lows)', market_report, re.IGNORECASE): + signals['price_trend'] = 'downtrend' + else: + signals['price_trend'] = 'sideways' + + # Extract volatility + if re.search(r'(high volatility|volatile|wild swings|sharp movements)', market_report, re.IGNORECASE): + signals['volatility'] = 'high' + elif re.search(r'(low volatility|stable|steady)', market_report, re.IGNORECASE): + signals['volatility'] = 'low' + else: + signals['volatility'] = 'medium' + + return signals + + def build_memories_from_high_movers( + self, + tickers: List[str], + start_date: str, + end_date: str, + min_move_pct: float = 15.0, + analysis_windows: List[int] = [7, 30], + max_samples: int = 50, + sample_strategy: str = "diverse" + ) -> Dict[str, FinancialSituationMemory]: + """ + Build memories by finding high movers and running retrospective analyses. + + This is the main method for the new learning system. + + Args: + tickers: List of tickers to scan + start_date: Start date for scanning (YYYY-MM-DD) + end_date: End date for scanning (YYYY-MM-DD) + min_move_pct: Minimum percentage move (default: 15%) + analysis_windows: Days before move to analyze (default: [7, 30]) + max_samples: Maximum number of high movers to analyze (default: 50) + sample_strategy: How to select samples from high movers: + - "diverse": Mix of up/down moves, different magnitudes (recommended) + - "largest": Take the largest moves only + - "recent": Take the most recent moves only + - "random": Random sampling + + Returns: + Dictionary of populated memory instances for each agent type + """ + print("=" * 70) + print("🏗️ BUILDING MEMORIES FROM HIGH MOVERS") + print("=" * 70) + + # Step 1: Find high movers + high_movers = self.find_high_movers(tickers, start_date, end_date, min_move_pct) + + if not high_movers: + print("⚠️ No high movers found. Try a different date range or lower threshold.") + return {} + + # Step 1.5: Sample/filter high movers based on strategy + sampled_movers = self._sample_high_movers(high_movers, max_samples, sample_strategy) + + print(f"\n📊 Sampling Strategy: {sample_strategy}") + print(f" Total high movers found: {len(high_movers)}") + print(f" Samples to analyze: {len(sampled_movers)}") + print(f" Estimated runtime: ~{len(sampled_movers) * len(analysis_windows) * 2} minutes") + print() + + # Initialize memory stores + agent_memories = { + "bull": FinancialSituationMemory("bull_memory", self.config), + "bear": FinancialSituationMemory("bear_memory", self.config), + "trader": FinancialSituationMemory("trader_memory", self.config), + "invest_judge": FinancialSituationMemory("invest_judge_memory", self.config), + "risk_manager": FinancialSituationMemory("risk_manager_memory", self.config) + } + + # Step 2: For each high mover, run retrospective analyses + print("\n📊 Running retrospective analyses...\n") + + for idx, mover in enumerate(sampled_movers, 1): + ticker = mover['ticker'] + move_pct = mover['move_pct'] + direction = mover['direction'] + move_start_date = mover['move_start_date'] + + print(f" [{idx}/{len(sampled_movers)}] {ticker}: {move_pct:+.1f}% {direction}") + + # Run analyses at different time windows before the move + for days_before in analysis_windows: + # Calculate analysis date + try: + analysis_date = ( + datetime.strptime(move_start_date, '%Y-%m-%d') - timedelta(days=days_before) + ).strftime('%Y-%m-%d') + + print(f" Analyzing T-{days_before} days ({analysis_date})...") + + # Run trading graph analysis + analysis = self.run_retrospective_analysis(ticker, analysis_date) + + if not analysis: + print(f" ⚠️ Analysis failed, skipping...") + continue + + # Create combined situation text + situation_text = f""" +**Ticker**: {ticker} +**Analysis Date**: {analysis_date} +**Time Before Move**: {days_before} days + +**Market Analysis**: +{analysis['market_report'][:500]}... + +**Sentiment Analysis**: +{analysis['sentiment_report'][:500]}... + +**News Analysis**: +{analysis['news_report'][:500]}... + +**Fundamentals**: +{analysis['fundamentals_report'][:500]}... +""".strip() + + # Extract agent recommendation from investment plan and final decision + agent_recommendation = self._extract_recommendation( + analysis.get('investment_plan', ''), + analysis.get('final_decision', '') + ) + + # Determine if agent was correct + was_correct = self._compute_correctness(agent_recommendation, direction) + + # Create metadata + metadata = { + 'ticker': ticker, + 'analysis_date': analysis_date, + 'days_before_move': days_before, + 'move_pct': abs(move_pct), + 'move_direction': direction, + 'agent_recommendation': agent_recommendation, + 'was_correct': was_correct, + 'structured_signals': analysis['structured_signals'] + } + + # Create recommendation text + lesson_text = f"This signal combination is reliable for predicting {direction} moves." if was_correct else "This signal combination can be misleading. Need to consider other factors." + + recommendation_text = f""" +Agent Decision: {agent_recommendation} +Actual Outcome: {direction} {abs(move_pct):.1f}% +Correctness: {'✓ CORRECT' if was_correct else '✗ INCORRECT'} + +{days_before} days before this {direction} move, the agent recommended {agent_recommendation}. +The stock moved {direction} by {abs(move_pct):.1f}%, so the agent was {'correct' if was_correct else 'incorrect'}. + +Structured Signals Present: +{self._format_signals(analysis.get('structured_signals', {}))} + +Lesson: {lesson_text} +""".strip() + + # Store in all agent memories + for agent_type, memory in agent_memories.items(): + memory.add_situations_with_metadata([ + (situation_text, recommendation_text, metadata) + ]) + + self.memories_created[agent_type] = self.memories_created.get(agent_type, 0) + 1 + + print(f" ✅ Memory created: {agent_recommendation} -> {direction} ({was_correct})") + + except Exception as e: + print(f" ⚠️ Error: {e}") + continue + + # Print summary + print("\n" + "=" * 70) + print("📊 MEMORY CREATION SUMMARY") + print("=" * 70) + print(f" High movers analyzed: {len(sampled_movers)}") + print(f" Analysis windows: {analysis_windows} days before move") + for agent_type, count in self.memories_created.items(): + print(f" {agent_type.ljust(15)}: {count} memories") + + # Print statistics + print("\n📈 MEMORY BANK STATISTICS") + print("=" * 70) + for agent_type, memory in agent_memories.items(): + stats = memory.get_statistics() + print(f"\n {agent_type.upper()}:") + print(f" Total memories: {stats['total_memories']}") + print(f" Accuracy rate: {stats['accuracy_rate']:.1f}%") + print(f" Avg move: {stats['avg_move_pct']:.1f}%") + + print("=" * 70 + "\n") + + return agent_memories + + def _extract_recommendation(self, investment_plan: str, final_decision: str) -> str: + """ + Extract agent's recommendation from investment plan and final decision. + + Returns: "buy", "sell", "hold", or "unclear" + """ + combined_text = (investment_plan + " " + final_decision).lower() + + # Check for clear buy/sell/hold signals + if re.search(r'\b(strong buy|buy|long position|bullish|recommend buying)\b', combined_text): + return "buy" + elif re.search(r'\b(strong sell|sell|short position|bearish|recommend selling)\b', combined_text): + return "sell" + elif re.search(r'\b(hold|neutral|wait|avoid)\b', combined_text): + return "hold" + else: + return "unclear" + + def _compute_correctness(self, recommendation: str, actual_direction: str) -> bool: + """ + Determine if the agent's recommendation matched the actual outcome. + + Args: + recommendation: "buy", "sell", "hold", or "unclear" + actual_direction: "up" or "down" + + Returns: + True if agent was correct, False otherwise + """ + if recommendation == "buy" and actual_direction == "up": + return True + elif recommendation == "sell" and actual_direction == "down": + return True + elif recommendation == "hold": + # Hold is considered neutral, so not correct/incorrect for big moves + return False + else: + return False + + def _format_signals(self, signals: Dict[str, Any]) -> str: + """Format structured signals for display.""" + lines = [] + for key, value in signals.items(): + lines.append(f" - {key}: {value}") + return "\n".join(lines) + + def _sample_high_movers( + self, + high_movers: List[Dict[str, Any]], + max_samples: int, + strategy: str + ) -> List[Dict[str, Any]]: + """ + Sample high movers based on strategy to reduce analysis time. + + Args: + high_movers: List of all high movers found + max_samples: Maximum number to return + strategy: Sampling strategy (diverse, largest, recent, random) + + Returns: + Sampled list of high movers + """ + import random + + if len(high_movers) <= max_samples: + return high_movers + + if strategy == "diverse": + # Get balanced mix of up/down moves across different magnitudes + up_moves = [m for m in high_movers if m['direction'] == 'up'] + down_moves = [m for m in high_movers if m['direction'] == 'down'] + + # Sort each by magnitude + up_moves.sort(key=lambda x: abs(x['move_pct']), reverse=True) + down_moves.sort(key=lambda x: abs(x['move_pct']), reverse=True) + + # Take half from each direction (or proportional if imbalanced) + up_count = min(len(up_moves), max_samples // 2) + down_count = min(len(down_moves), max_samples - up_count) + + # If one side has fewer, take more from the other + if up_count < max_samples // 2: + down_count = min(len(down_moves), max_samples - up_count) + if down_count < max_samples - up_count: + up_count = min(len(up_moves), max_samples - down_count) + + # Stratified sampling - take from different magnitude ranges + def stratified_sample(moves, count): + if len(moves) <= count: + return moves + + # Divide into 3 buckets by magnitude + bucket_size = len(moves) // 3 + large = moves[:bucket_size] + medium = moves[bucket_size:bucket_size*2] + small = moves[bucket_size*2:] + + # Sample proportionally from each bucket + samples = [] + samples.extend(large[:count // 3]) + samples.extend(medium[:count // 3]) + samples.extend(small[:count - (2 * (count // 3))]) + return samples + + sampled = [] + sampled.extend(stratified_sample(up_moves, up_count)) + sampled.extend(stratified_sample(down_moves, down_count)) + + return sampled + + elif strategy == "largest": + # Take the largest absolute moves + sorted_movers = sorted(high_movers, key=lambda x: abs(x['move_pct']), reverse=True) + return sorted_movers[:max_samples] + + elif strategy == "recent": + # Take the most recent moves + sorted_movers = sorted(high_movers, key=lambda x: x['move_end_date'], reverse=True) + return sorted_movers[:max_samples] + + elif strategy == "random": + # Random sampling + return random.sample(high_movers, max_samples) + + else: + # Default to diverse + return self._sample_high_movers(high_movers, max_samples, "diverse") + def _get_stock_data_for_period(self, ticker: str, date: str) -> Dict[str, str]: """Gather all available data for a stock on a specific date. diff --git a/tradingagents/agents/utils/memory.py b/tradingagents/agents/utils/memory.py index 1d415b3e..fdc3a1f2 100644 --- a/tradingagents/agents/utils/memory.py +++ b/tradingagents/agents/utils/memory.py @@ -1,6 +1,8 @@ +import os import chromadb from chromadb.config import Settings from openai import OpenAI +from typing import List, Dict, Any, Optional, Tuple class FinancialSituationMemory: @@ -15,9 +17,19 @@ class FinancialSituationMemory: self.embedding_backend = "https://api.openai.com/v1" self.embedding = "text-embedding-3-small" - self.client = OpenAI(base_url=self.embedding_backend) - self.chroma_client = chromadb.Client(Settings(allow_reset=True)) - self.situation_collection = self.chroma_client.create_collection(name=name) + self.client = OpenAI(api_key=os.getenv("OPENAI_API_KEY")) + + # Use persistent storage in project directory + persist_directory = os.path.join(config.get("project_dir", "."), "memory_db") + os.makedirs(persist_directory, exist_ok=True) + + self.chroma_client = chromadb.PersistentClient(path=persist_directory) + + # Get or create collection + try: + self.situation_collection = self.chroma_client.get_collection(name=name) + except: + self.situation_collection = self.chroma_client.create_collection(name=name) def get_embedding(self, text): """Get OpenAI embedding for a text""" @@ -50,6 +62,81 @@ class FinancialSituationMemory: ids=ids, ) + def add_situations_with_metadata( + self, + situations_and_outcomes: List[Tuple[str, str, Dict[str, Any]]] + ): + """ + Add financial situations with enhanced metadata for learning system. + + Args: + situations_and_outcomes: List of tuples (situation_text, recommendation, metadata) + where metadata contains: + - ticker: Stock symbol + - analysis_date: Date of analysis (YYYY-MM-DD) + - days_before_move: How many days before the major move (7 or 30) + - move_pct: Percentage move that occurred + - move_direction: "up" or "down" + - agent_recommendation: What the agent recommended + - was_correct: Boolean, whether recommendation matched outcome + - structured_signals: Dict of signal features (optional) + - unusual_volume: bool + - analyst_sentiment: str (bullish/bearish/neutral) + - news_sentiment: str (positive/negative/neutral) + - short_interest: str (high/medium/low) + - insider_activity: str (buying/selling/none) + - etc. + """ + situations = [] + ids = [] + embeddings = [] + metadatas = [] + + offset = self.situation_collection.count() + + for i, (situation, recommendation, metadata) in enumerate(situations_and_outcomes): + situations.append(situation) + ids.append(str(offset + i)) + embeddings.append(self.get_embedding(situation)) + + # Merge recommendation with metadata + full_metadata = {"recommendation": recommendation} + full_metadata.update(metadata) + + # Ensure all metadata values are strings, numbers, or booleans for ChromaDB + full_metadata = self._sanitize_metadata(full_metadata) + metadatas.append(full_metadata) + + self.situation_collection.add( + documents=situations, + metadatas=metadatas, + embeddings=embeddings, + ids=ids, + ) + + def _sanitize_metadata(self, metadata: Dict[str, Any]) -> Dict[str, Any]: + """ + Sanitize metadata for ChromaDB compatibility. + ChromaDB requires metadata values to be str, int, float, or bool. + Nested dicts are flattened with dot notation. + """ + sanitized = {} + + for key, value in metadata.items(): + if isinstance(value, dict): + # Flatten nested dicts + for nested_key, nested_value in value.items(): + flat_key = f"{key}.{nested_key}" + if isinstance(nested_value, (str, int, float, bool, type(None))): + sanitized[flat_key] = nested_value if nested_value is not None else "none" + elif isinstance(value, (str, int, float, bool, type(None))): + sanitized[key] = value if value is not None else "none" + else: + # Convert other types to string + sanitized[key] = str(value) + + return sanitized + def get_memories(self, current_situation, n_matches=1): """Find matching recommendations using OpenAI embeddings""" query_embedding = self.get_embedding(current_situation) @@ -72,6 +159,133 @@ class FinancialSituationMemory: return matched_results + def get_memories_hybrid( + self, + current_situation: str, + signal_filters: Optional[Dict[str, Any]] = None, + n_matches: int = 3, + min_similarity: float = 0.5 + ) -> List[Dict[str, Any]]: + """ + Hybrid search: Filter by structured signals, then rank by embedding similarity. + + Args: + current_situation: Text description of current market situation + signal_filters: Dict of structured signals to filter by (e.g., {"unusual_volume": True}) + Supports exact matches and can use dot notation for nested fields + e.g., {"structured_signals.unusual_volume": True} + n_matches: Number of results to return + min_similarity: Minimum similarity score (0-1) to include in results + + Returns: + List of dicts with keys: + - matched_situation: Historical situation text + - recommendation: What was recommended + - similarity_score: Embedding similarity (0-1) + - metadata: Full metadata including outcome, signals, etc. + """ + query_embedding = self.get_embedding(current_situation) + + # Build where clause for filtering + where_clause = None + if signal_filters: + where_clause = {} + for key, value in signal_filters.items(): + where_clause[key] = value + + # Query ChromaDB with optional filtering + query_params = { + "query_embeddings": [query_embedding], + "n_results": min(n_matches * 3, 100), # Get more results for filtering + "include": ["metadatas", "documents", "distances"], + } + + if where_clause: + query_params["where"] = where_clause + + results = self.situation_collection.query(**query_params) + + # Process and filter results + matched_results = [] + for i in range(len(results["documents"][0])): + similarity_score = 1 - results["distances"][0][i] + + # Apply similarity threshold + if similarity_score < min_similarity: + continue + + metadata = results["metadatas"][0][i] + + matched_results.append({ + "matched_situation": results["documents"][0][i], + "recommendation": metadata.get("recommendation", ""), + "similarity_score": similarity_score, + "metadata": metadata, + # Extract key fields for convenience + "ticker": metadata.get("ticker", ""), + "move_pct": metadata.get("move_pct", 0), + "move_direction": metadata.get("move_direction", ""), + "was_correct": metadata.get("was_correct", False), + "days_before_move": metadata.get("days_before_move", 0), + }) + + # Return top n_matches + return matched_results[:n_matches] + + def get_statistics(self) -> Dict[str, Any]: + """ + Get statistics about the memory bank. + + Returns: + Dict with keys: + - total_memories: Total number of stored memories + - accuracy_rate: % of memories where was_correct=True + - avg_move_pct: Average percentage move in stored outcomes + - signal_distribution: Count of different signal patterns + """ + total_count = self.situation_collection.count() + + if total_count == 0: + return { + "total_memories": 0, + "accuracy_rate": 0.0, + "avg_move_pct": 0.0, + "signal_distribution": {} + } + + # Get all memories + all_results = self.situation_collection.get( + include=["metadatas"] + ) + + metadatas = all_results["metadatas"] + + # Calculate statistics + correct_count = sum(1 for m in metadatas if m.get("was_correct") == True) + accuracy_rate = (correct_count / total_count * 100) if total_count > 0 else 0 + + move_pcts = [m.get("move_pct", 0) for m in metadatas if "move_pct" in m] + avg_move_pct = sum(move_pcts) / len(move_pcts) if move_pcts else 0 + + # Count signal patterns + signal_distribution = {} + for metadata in metadatas: + for key, value in metadata.items(): + if key.startswith("structured_signals."): + signal_name = key.replace("structured_signals.", "") + if signal_name not in signal_distribution: + signal_distribution[signal_name] = {} + if value not in signal_distribution[signal_name]: + signal_distribution[signal_name][value] = 0 + signal_distribution[signal_name][value] += 1 + + return { + "total_memories": total_count, + "accuracy_rate": accuracy_rate, + "avg_move_pct": avg_move_pct, + "signal_distribution": signal_distribution + } + if __name__ == "__main__": # Example usage diff --git a/tradingagents/dataflows/alpha_vantage_analysts.py b/tradingagents/dataflows/alpha_vantage_analysts.py new file mode 100644 index 00000000..8a2fdd1c --- /dev/null +++ b/tradingagents/dataflows/alpha_vantage_analysts.py @@ -0,0 +1,176 @@ +""" +Alpha Vantage Analyst Rating Changes Detection +Tracks recent analyst upgrades/downgrades and price target changes +""" + +import os +import requests +from datetime import datetime, timedelta +from typing import Annotated, List + + +def get_analyst_rating_changes( + lookback_days: Annotated[int, "Number of days to look back for rating changes"] = 7, + change_types: Annotated[List[str], "Types of changes to track"] = None, + top_n: Annotated[int, "Number of top results to return"] = 20, +) -> str: + """ + Track recent analyst upgrades/downgrades and rating changes. + + Fresh analyst actions (<72 hours) are strong catalysts for short-term moves. + + Args: + lookback_days: Number of days to look back (default 7) + change_types: Types of changes ["upgrade", "downgrade", "initiated", "reiterated"] + top_n: Maximum number of results to return + + Returns: + Formatted markdown report of recent analyst rating changes + """ + api_key = os.getenv("ALPHA_VANTAGE_API_KEY") + if not api_key: + return "Error: ALPHA_VANTAGE_API_KEY not set in environment variables" + + if change_types is None: + change_types = ["upgrade", "downgrade", "initiated"] + + # Note: Alpha Vantage doesn't have a direct analyst ratings endpoint in the free tier + # We'll use news sentiment API which includes analyst actions + # For production, consider using Financial Modeling Prep or Benzinga API + + url = "https://www.alphavantage.co/query" + + try: + # Get market news which includes analyst actions + params = { + "function": "NEWS_SENTIMENT", + "topics": "earnings,technology,finance", + "sort": "LATEST", + "limit": 200, # Get more news to find analyst actions + "apikey": api_key, + } + + response = requests.get(url, params=params, timeout=30) + response.raise_for_status() + data = response.json() + + if "Note" in data: + return f"API Rate Limit: {data['Note']}" + + if "Error Message" in data: + return f"API Error: {data['Error Message']}" + + # Parse news for analyst actions + analyst_changes = [] + cutoff_date = datetime.now() - timedelta(days=lookback_days) + + if "feed" in data: + for article in data["feed"]: + try: + # Check article time + time_published = article.get("time_published", "") + if time_published: + article_date = datetime.strptime(time_published[:8], "%Y%m%d") + if article_date < cutoff_date: + continue + + title = article.get("title", "").lower() + summary = article.get("summary", "").lower() + text = f"{title} {summary}" + + # Look for analyst action keywords + is_upgrade = any(word in text for word in ["upgrade", "upgrades", "raised", "raises rating"]) + is_downgrade = any(word in text for word in ["downgrade", "downgrades", "lowered", "lowers rating"]) + is_initiated = any(word in text for word in ["initiates", "initiated", "coverage", "starts coverage"]) + is_reiterated = any(word in text for word in ["reiterates", "reiterated", "maintains", "confirms"]) + + # Extract tickers from article + tickers = [] + if "ticker_sentiment" in article: + for ticker_data in article["ticker_sentiment"]: + ticker = ticker_data.get("ticker", "") + if ticker and len(ticker) <= 5: # Valid ticker format + tickers.append(ticker) + + # Classify action type + action_type = None + if is_upgrade and "upgrade" in change_types: + action_type = "upgrade" + elif is_downgrade and "downgrade" in change_types: + action_type = "downgrade" + elif is_initiated and "initiated" in change_types: + action_type = "initiated" + elif is_reiterated and "reiterated" in change_types: + action_type = "reiterated" + + if action_type and tickers: + # Calculate freshness (hours since published) + hours_old = (datetime.now() - article_date).total_seconds() / 3600 + + for ticker in tickers[:3]: # Max 3 tickers per article + analyst_changes.append({ + "ticker": ticker, + "action": action_type, + "date": time_published[:8], + "hours_old": int(hours_old), + "headline": article.get("title", "")[:100], + "source": article.get("source", "Unknown"), + "url": article.get("url", ""), + }) + + except (ValueError, KeyError) as e: + continue + + # Remove duplicates (keep most recent per ticker) + seen_tickers = {} + for change in analyst_changes: + ticker = change["ticker"] + if ticker not in seen_tickers or change["hours_old"] < seen_tickers[ticker]["hours_old"]: + seen_tickers[ticker] = change + + # Sort by freshness (most recent first) + sorted_changes = sorted( + seen_tickers.values(), + key=lambda x: x["hours_old"] + )[:top_n] + + # Format output + if not sorted_changes: + return f"No analyst rating changes found in the last {lookback_days} days" + + report = f"# Analyst Rating Changes - Last {lookback_days} Days\n\n" + report += f"**Tracking**: {', '.join(change_types)}\n\n" + report += f"**Found**: {len(sorted_changes)} recent analyst actions\n\n" + report += "## Recent Analyst Actions\n\n" + report += "| Ticker | Action | Source | Hours Ago | Headline |\n" + report += "|--------|--------|--------|-----------|----------|\n" + + for change in sorted_changes: + freshness = "🔥 FRESH" if change["hours_old"] < 24 else "🟢 Recent" if change["hours_old"] < 72 else "Older" + + report += f"| {change['ticker']} | " + report += f"{change['action'].upper()} | " + report += f"{change['source']} | " + report += f"{change['hours_old']}h ({freshness}) | " + report += f"{change['headline']} |\n" + + report += "\n\n## Freshness Legend\n\n" + report += "- 🔥 **FRESH** (<24h): Highest impact, market may not have fully reacted\n" + report += "- 🟢 **Recent** (24-72h): Still relevant for short-term trading\n" + report += "- **Older** (>72h): Lower priority, likely partially priced in\n" + + return report + + except requests.exceptions.RequestException as e: + return f"Error fetching analyst rating changes: {str(e)}" + except Exception as e: + return f"Unexpected error in analyst rating detection: {str(e)}" + + +def get_alpha_vantage_analyst_changes( + lookback_days: int = 7, + change_types: List[str] = None, + top_n: int = 20, +) -> str: + """Alias for get_analyst_rating_changes to match registry naming convention""" + return get_analyst_rating_changes(lookback_days, change_types, top_n) diff --git a/tradingagents/dataflows/alpha_vantage_volume.py b/tradingagents/dataflows/alpha_vantage_volume.py new file mode 100644 index 00000000..b3441199 --- /dev/null +++ b/tradingagents/dataflows/alpha_vantage_volume.py @@ -0,0 +1,162 @@ +""" +Alpha Vantage Unusual Volume Detection +Identifies stocks with unusual volume but minimal price movement (accumulation signal) +""" + +import os +import requests +from datetime import datetime, timedelta +from typing import Annotated, List, Dict +import pandas as pd + + +def get_unusual_volume( + date: Annotated[str, "Analysis date in yyyy-mm-dd format"] = None, + min_volume_multiple: Annotated[float, "Minimum volume multiple vs average"] = 3.0, + max_price_change: Annotated[float, "Maximum price change percentage"] = 5.0, + top_n: Annotated[int, "Number of top results to return"] = 20, +) -> str: + """ + Find stocks with unusual volume but minimal price movement. + + This is a strong accumulation signal - smart money buying before a breakout. + + Args: + date: Analysis date in yyyy-mm-dd format + min_volume_multiple: Minimum volume multiple vs 30-day average + max_price_change: Maximum absolute price change percentage + top_n: Number of top results to return + + Returns: + Formatted markdown report of stocks with unusual volume + """ + api_key = os.getenv("ALPHA_VANTAGE_API_KEY") + if not api_key: + return "Error: ALPHA_VANTAGE_API_KEY not set in environment variables" + + # For unusual volume detection, we'll use Alpha Vantage's market data + # Note: Alpha Vantage doesn't have a direct "unusual volume" endpoint, + # so we'll use a combination of their screening and market movers data + + # Strategy: Get top active stocks (high volume) and filter for minimal price change + url = "https://www.alphavantage.co/query" + + try: + # Get top active stocks by volume + params = { + "function": "TOP_GAINERS_LOSERS", + "apikey": api_key, + } + + response = requests.get(url, params=params, timeout=30) + response.raise_for_status() + data = response.json() + + if "Note" in data: + return f"API Rate Limit: {data['Note']}" + + if "Error Message" in data: + return f"API Error: {data['Error Message']}" + + # Combine all movers (gainers, losers, and most actively traded) + unusual_candidates = [] + + # Process most actively traded (these have high volume) + if "most_actively_traded" in data: + for stock in data["most_actively_traded"][:50]: # Check top 50 + try: + ticker = stock.get("ticker", "") + price_change = abs(float(stock.get("change_percentage", "0").replace("%", ""))) + volume = int(stock.get("volume", 0)) + price = float(stock.get("price", 0)) + + # Filter: High volume but low price change (accumulation signal) + if price_change <= max_price_change and volume > 0: + unusual_candidates.append({ + "ticker": ticker, + "volume": volume, + "price": price, + "price_change_pct": price_change, + "signal": "accumulation" if price_change < 2.0 else "moderate_activity" + }) + + except (ValueError, KeyError) as e: + continue + + # Also check gainers and losers with unusual volume patterns + for category in ["top_gainers", "top_losers"]: + if category in data: + for stock in data[category][:30]: + try: + ticker = stock.get("ticker", "") + price_change = abs(float(stock.get("change_percentage", "0").replace("%", ""))) + volume = int(stock.get("volume", 0)) + price = float(stock.get("price", 0)) + + # For gainers/losers, we want very high volume + # This indicates strong conviction in the move + if volume > 0: + unusual_candidates.append({ + "ticker": ticker, + "volume": volume, + "price": price, + "price_change_pct": price_change, + "signal": "breakout" if price_change > 5.0 else "building_momentum" + }) + except (ValueError, KeyError) as e: + continue + + # Remove duplicates (keep highest volume) + seen_tickers = {} + for candidate in unusual_candidates: + ticker = candidate["ticker"] + if ticker not in seen_tickers or candidate["volume"] > seen_tickers[ticker]["volume"]: + seen_tickers[ticker] = candidate + + # Sort by volume (highest first) and take top N + sorted_candidates = sorted( + seen_tickers.values(), + key=lambda x: x["volume"], + reverse=True + )[:top_n] + + # Format output + if not sorted_candidates: + return "No stocks found with unusual volume patterns matching criteria" + + report = f"# Unusual Volume Detected - {date or 'Latest'}\n\n" + report += f"**Criteria**: Volume signal detected, Price Change <{max_price_change}% preferred\n\n" + report += f"**Found**: {len(sorted_candidates)} stocks with unusual activity\n\n" + report += "## Top Unusual Volume Candidates\n\n" + report += "| Ticker | Price | Volume | Price Change % | Signal |\n" + report += "|--------|-------|--------|----------------|--------|\n" + + for candidate in sorted_candidates: + report += f"| {candidate['ticker']} | " + report += f"${candidate['price']:.2f} | " + report += f"{candidate['volume']:,} | " + report += f"{candidate['price_change_pct']:.2f}% | " + report += f"{candidate['signal']} |\n" + + report += "\n\n## Signal Definitions\n\n" + report += "- **accumulation**: High volume, minimal price change (<2%) - Smart money building position\n" + report += "- **moderate_activity**: Elevated volume with 2-5% price change - Early momentum\n" + report += "- **building_momentum**: Losers/Gainers with strong volume - Conviction in direction\n" + report += "- **breakout**: Strong price move (>5%) on high volume - Already in motion\n" + + return report + + except requests.exceptions.RequestException as e: + return f"Error fetching unusual volume data: {str(e)}" + except Exception as e: + return f"Unexpected error in unusual volume detection: {str(e)}" + + +def get_alpha_vantage_unusual_volume( + date: str = None, + min_volume_multiple: float = 3.0, + max_price_change: float = 5.0, + top_n: int = 20, +) -> str: + """Alias for get_unusual_volume to match registry naming convention""" + return get_unusual_volume(date, min_volume_multiple, max_price_change, top_n) diff --git a/tradingagents/dataflows/finviz_scraper.py b/tradingagents/dataflows/finviz_scraper.py new file mode 100644 index 00000000..68e7328f --- /dev/null +++ b/tradingagents/dataflows/finviz_scraper.py @@ -0,0 +1,222 @@ +""" +Finviz + Yahoo Finance Hybrid - Short Interest Discovery +Uses Finviz to discover tickers with high short interest, then Yahoo Finance for exact data +""" + +import requests +from bs4 import BeautifulSoup +from typing import Annotated +import re +import yfinance as yf +from concurrent.futures import ThreadPoolExecutor, as_completed + + +def get_short_interest( + min_short_interest_pct: Annotated[float, "Minimum short interest % of float"] = 10.0, + min_days_to_cover: Annotated[float, "Minimum days to cover ratio"] = 2.0, + top_n: Annotated[int, "Number of top results to return"] = 20, +) -> str: + """ + Discover stocks with high short interest using Finviz + Yahoo Finance. + + Strategy: Finviz filters stocks by short interest (discovery), + then Yahoo Finance provides exact short % data. + + This is a TRUE DISCOVERY tool - finds stocks we may not know about, + not checking a predefined watchlist. + + Args: + min_short_interest_pct: Minimum short interest as % of float + min_days_to_cover: Minimum days to cover ratio + top_n: Number of top results to return + + Returns: + Formatted markdown report of discovered high short interest stocks + """ + try: + # Step 1: Use Finviz screener to DISCOVER tickers with high short interest + print(f" Discovering tickers with short interest >{min_short_interest_pct}% from Finviz...") + + # Determine Finviz filter + if min_short_interest_pct >= 20: + short_filter = "sh_short_o20" + elif min_short_interest_pct >= 15: + short_filter = "sh_short_o15" + elif min_short_interest_pct >= 10: + short_filter = "sh_short_o10" + else: + short_filter = "sh_short_o5" + + # Build Finviz URL (v=152 is simple view) + base_url = f"https://finviz.com/screener.ashx?v=152&f={short_filter}" + + headers = { + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', + 'Accept': 'text/html', + } + + discovered_tickers = [] + + # Scrape first 3 pages (60 stocks) + for page_num in range(1, 4): + if page_num == 1: + url = base_url + else: + offset = (page_num - 1) * 20 + 1 + url = f"{base_url}&r={offset}" + + response = requests.get(url, headers=headers, timeout=30) + response.raise_for_status() + + soup = BeautifulSoup(response.text, 'html.parser') + + # Find ticker links in the page + ticker_links = soup.find_all('a', href=re.compile(r'quote\.ashx\?t=')) + + for link in ticker_links: + ticker = link.get_text(strip=True) + # Validate it's a ticker (1-5 uppercase letters) + if re.match(r'^[A-Z]{1,5}$', ticker) and ticker not in discovered_tickers: + discovered_tickers.append(ticker) + + if not discovered_tickers: + return f"No stocks discovered with short interest >{min_short_interest_pct}% on Finviz." + + print(f" Discovered {len(discovered_tickers)} tickers from Finviz") + print(f" Fetching detailed short interest data from Yahoo Finance...") + + # Step 2: Use Yahoo Finance to get EXACT short interest data for discovered tickers + def fetch_short_data(ticker): + try: + stock = yf.Ticker(ticker) + info = stock.info + + # Get short interest data + short_pct = info.get('shortPercentOfFloat', info.get('sharesPercentSharesOut', 0)) + if short_pct and isinstance(short_pct, (int, float)): + short_pct = short_pct * 100 # Convert to percentage + else: + return None + + # Verify it meets criteria (Finviz filter might be outdated) + if short_pct >= min_short_interest_pct: + price = info.get('currentPrice', info.get('regularMarketPrice', 0)) + market_cap = info.get('marketCap', 0) + volume = info.get('volume', info.get('regularMarketVolume', 0)) + + # Categorize squeeze potential + if short_pct >= 30: + signal = "extreme_squeeze_risk" + elif short_pct >= 20: + signal = "high_squeeze_potential" + elif short_pct >= 15: + signal = "moderate_squeeze_potential" + else: + signal = "low_squeeze_potential" + + return { + "ticker": ticker, + "price": price, + "market_cap": market_cap, + "volume": volume, + "short_interest_pct": short_pct, + "signal": signal, + } + except Exception: + return None + + # Fetch data in parallel (faster) + all_candidates = [] + with ThreadPoolExecutor(max_workers=10) as executor: + futures = {executor.submit(fetch_short_data, ticker): ticker for ticker in discovered_tickers} + + for future in as_completed(futures): + result = future.result() + if result: + all_candidates.append(result) + + if not all_candidates: + return f"No stocks with verified short interest >{min_short_interest_pct}% (Finviz found {len(discovered_tickers)} tickers but Yahoo Finance data didn't confirm)." + + # Sort by short interest percentage (highest first) + sorted_candidates = sorted( + all_candidates, + key=lambda x: x["short_interest_pct"], + reverse=True + )[:top_n] + + # Format output + report = f"# Discovered High Short Interest Stocks\n\n" + report += f"**Criteria**: Short Interest >{min_short_interest_pct}%\n" + report += f"**Data Source**: Finviz Screener (Web Scraping)\n" + report += f"**Total Discovered**: {len(all_candidates)} stocks\n\n" + report += f"**Top {len(sorted_candidates)} Candidates**:\n\n" + report += "| Ticker | Price | Market Cap | Volume | Short % | Signal |\n" + report += "|--------|-------|------------|--------|---------|--------|\n" + + for candidate in sorted_candidates: + market_cap_str = format_market_cap(candidate['market_cap']) + report += f"| {candidate['ticker']} | " + report += f"${candidate['price']:.2f} | " + report += f"{market_cap_str} | " + report += f"{candidate['volume']:,} | " + report += f"{candidate['short_interest_pct']:.1f}% | " + report += f"{candidate['signal']} |\n" + + report += "\n\n## Signal Definitions\n\n" + report += "- **extreme_squeeze_risk**: Short interest >30% - Very high squeeze potential\n" + report += "- **high_squeeze_potential**: Short interest 20-30% - High squeeze risk\n" + report += "- **moderate_squeeze_potential**: Short interest 15-20% - Moderate squeeze risk\n" + report += "- **low_squeeze_potential**: Short interest 10-15% - Lower squeeze risk\n\n" + report += "**Note**: High short interest alone doesn't guarantee a squeeze. Look for positive catalysts.\n" + + return report + + except requests.exceptions.RequestException as e: + return f"Error scraping Finviz: {str(e)}" + except Exception as e: + return f"Unexpected error discovering short interest stocks: {str(e)}" + + +def parse_market_cap(market_cap_text: str) -> float: + """Parse market cap from Finviz format (e.g., '1.23B', '456M').""" + if not market_cap_text or market_cap_text == '-': + return 0.0 + + market_cap_text = market_cap_text.upper().strip() + + # Extract number and multiplier + match = re.match(r'([0-9.]+)([BMK])?', market_cap_text) + if not match: + return 0.0 + + number = float(match.group(1)) + multiplier = match.group(2) + + if multiplier == 'B': + return number * 1_000_000_000 + elif multiplier == 'M': + return number * 1_000_000 + elif multiplier == 'K': + return number * 1_000 + else: + return number + + +def format_market_cap(market_cap: float) -> str: + """Format market cap for display.""" + if market_cap >= 1_000_000_000: + return f"${market_cap / 1_000_000_000:.2f}B" + elif market_cap >= 1_000_000: + return f"${market_cap / 1_000_000:.2f}M" + else: + return f"${market_cap:,.0f}" + + +def get_finviz_short_interest( + min_short_interest_pct: float = 10.0, + min_days_to_cover: float = 2.0, + top_n: int = 20, +) -> str: + """Alias for get_short_interest to match registry naming convention""" + return get_short_interest(min_short_interest_pct, min_days_to_cover, top_n) diff --git a/tradingagents/dataflows/openai.py b/tradingagents/dataflows/openai.py index 2a07a75b..7a246849 100644 --- a/tradingagents/dataflows/openai.py +++ b/tradingagents/dataflows/openai.py @@ -1,3 +1,4 @@ +import os from openai import OpenAI from .config import get_config @@ -20,8 +21,7 @@ def get_stock_news_openai(query=None, ticker=None, start_date=None, end_date=Non else: raise ValueError("Must provide either 'query' or 'ticker' parameter") - config = get_config() - client = OpenAI(base_url=config["backend_url"]) + client = OpenAI(api_key=os.getenv("OPENAI_API_KEY")) try: response = client.responses.create( @@ -35,14 +35,13 @@ def get_stock_news_openai(query=None, ticker=None, start_date=None, end_date=Non def get_global_news_openai(date, look_back_days=7, limit=5): - config = get_config() - client = OpenAI(base_url=config["backend_url"]) + client = OpenAI(api_key=os.getenv("OPENAI_API_KEY")) try: response = client.responses.create( model="gpt-4o-mini", tools=[{"type": "web_search_preview"}], - input=f"Search global or macroeconomics news from {look_back_days} days before {date} to {date} that would be informative for trading purposes. Make sure you only get the data posted during that period. Limit the results to {limit} articles." + input=f"Search global or macroeconomics news from {look_back_days} days before {date} that would be informative for trading purposes. Make sure you only get the data posted during that period. Limit the results to {limit} articles." ) return response.output_text except Exception as e: @@ -50,8 +49,7 @@ def get_global_news_openai(date, look_back_days=7, limit=5): def get_fundamentals_openai(ticker, curr_date): - config = get_config() - client = OpenAI(base_url=config["backend_url"]) + client = OpenAI(api_key=os.getenv("OPENAI_API_KEY")) try: response = client.responses.create( diff --git a/tradingagents/dataflows/reddit_api.py b/tradingagents/dataflows/reddit_api.py index c686c280..102622ba 100644 --- a/tradingagents/dataflows/reddit_api.py +++ b/tradingagents/dataflows/reddit_api.py @@ -186,7 +186,7 @@ def get_reddit_global_news( start_dt = curr_dt - timedelta(days=look_back_days) # Subreddits for global news - subreddits = "worldnews+economics+finance" + subreddits = "financenews+finance+economics+stockmarket" posts = [] subreddit = reddit.subreddit(subreddits) diff --git a/tradingagents/dataflows/tradier_api.py b/tradingagents/dataflows/tradier_api.py new file mode 100644 index 00000000..7d284dc1 --- /dev/null +++ b/tradingagents/dataflows/tradier_api.py @@ -0,0 +1,177 @@ +""" +Tradier API - Options Activity Detection +Detects unusual options activity indicating smart money positioning +""" + +import os +import requests +from datetime import datetime +from typing import Annotated, List + + +def get_unusual_options_activity( + tickers: Annotated[List[str], "List of ticker symbols to analyze"] = None, + date: Annotated[str, "Analysis date in yyyy-mm-dd format"] = None, + min_volume_multiple: Annotated[float, "Minimum options volume multiple"] = 2.0, + top_n: Annotated[int, "Number of top results to return"] = 20, +) -> str: + """ + Detect unusual options activity for given tickers (confirmation signal). + + This function is designed as a CONFIRMATION tool - it analyzes options activity + for candidates found by other discovery methods (unusual volume, analyst changes, etc.) + + Unusual options volume is a leading indicator of price moves - institutions + positioning before catalysts. + + Args: + tickers: List of ticker symbols to analyze (if None, returns error message) + date: Analysis date in yyyy-mm-dd format + min_volume_multiple: Minimum volume multiple vs 20-day average + top_n: Number of top results to return + + Returns: + Formatted markdown report of unusual options activity + """ + api_key = os.getenv("TRADIER_API_KEY") + if not api_key: + return "Error: TRADIER_API_KEY not set in environment variables. Get a free key at https://tradier.com" + + if not tickers or len(tickers) == 0: + return "Error: No tickers provided. This function analyzes options activity for specific tickers found by other discovery methods." + + # Tradier API base URLs + # Use sandbox for testing: https://sandbox.tradier.com + # Use production: https://api.tradier.com + base_url = os.getenv("TRADIER_BASE_URL", "https://sandbox.tradier.com") + + headers = { + "Authorization": f"Bearer {api_key}", + "Accept": "application/json" + } + + try: + # Strategy: Analyze options activity for provided tickers + # This confirms smart money positioning for candidates found by other methods + + unusual_activity = [] + + for ticker in tickers: + try: + # Get options chain + options_url = f"{base_url}/v1/markets/options/chains" + params = { + "symbol": ticker, + "expiration": "", # Will get nearest expiration + "greeks": "true" + } + + response = requests.get(options_url, headers=headers, params=params, timeout=10) + + if response.status_code == 200: + data = response.json() + + if "options" in data and "option" in data["options"]: + options = data["options"]["option"] + + # Aggregate call and put volume + total_call_volume = 0 + total_put_volume = 0 + total_call_oi = 0 + total_put_oi = 0 + + for option in options[:50]: # Check first 50 options + option_type = option.get("option_type", "") + volume = int(option.get("volume", 0)) + open_interest = int(option.get("open_interest", 0)) + + if option_type == "call": + total_call_volume += volume + total_call_oi += open_interest + elif option_type == "put": + total_put_volume += volume + total_put_oi += open_interest + + # Calculate metrics + total_volume = total_call_volume + total_put_volume + + if total_volume > 10000: # Significant volume threshold + put_call_ratio = total_put_volume / total_call_volume if total_call_volume > 0 else 0 + + # Unusual signals: + # - Very low P/C ratio (<0.7) = Bullish (heavy call buying) + # - Very high P/C ratio (>1.5) = Bearish (heavy put buying) + # - High volume (>50k) = Strong conviction + + signal = "neutral" + if put_call_ratio < 0.7: + signal = "bullish_calls" + elif put_call_ratio > 1.5: + signal = "bearish_puts" + elif total_volume > 50000: + signal = "high_volume" + + unusual_activity.append({ + "ticker": ticker, + "total_volume": total_volume, + "call_volume": total_call_volume, + "put_volume": total_put_volume, + "put_call_ratio": put_call_ratio, + "signal": signal, + "call_oi": total_call_oi, + "put_oi": total_put_oi, + }) + + except Exception as e: + # Skip this ticker if there's an error + continue + + # Sort by total volume (highest first) + sorted_activity = sorted( + unusual_activity, + key=lambda x: x["total_volume"], + reverse=True + )[:top_n] + + # Format output + if not sorted_activity: + return "No unusual options activity detected" + + report = f"# Unusual Options Activity - {date or 'Latest'}\n\n" + report += f"**Criteria**: P/C Ratio extremes (<0.7 bullish, >1.5 bearish), High volume (>50k)\n\n" + report += f"**Found**: {len(sorted_activity)} stocks with notable options activity\n\n" + report += "## Top Options Activity\n\n" + report += "| Ticker | Total Volume | Call Vol | Put Vol | P/C Ratio | Signal |\n" + report += "|--------|--------------|----------|---------|-----------|--------|\n" + + for activity in sorted_activity: + report += f"| {activity['ticker']} | " + report += f"{activity['total_volume']:,} | " + report += f"{activity['call_volume']:,} | " + report += f"{activity['put_volume']:,} | " + report += f"{activity['put_call_ratio']:.2f} | " + report += f"{activity['signal']} |\n" + + report += "\n\n## Signal Definitions\n\n" + report += "- **bullish_calls**: P/C ratio <0.7 - Heavy call buying, bullish positioning\n" + report += "- **bearish_puts**: P/C ratio >1.5 - Heavy put buying, bearish positioning\n" + report += "- **high_volume**: Exceptional volume (>50k) - Strong conviction move\n" + report += "- **neutral**: Balanced activity\n\n" + report += "**Note**: Options activity is a leading indicator. Smart money often positions 1-2 weeks before catalysts.\n" + + return report + + except requests.exceptions.RequestException as e: + return f"Error fetching options activity from Tradier: {str(e)}" + except Exception as e: + return f"Unexpected error in options activity detection: {str(e)}" + + +def get_tradier_unusual_options( + tickers: List[str] = None, + date: str = None, + min_volume_multiple: float = 2.0, + top_n: int = 20, +) -> str: + """Alias for get_unusual_options_activity to match registry naming convention""" + return get_unusual_options_activity(tickers, date, min_volume_multiple, top_n) diff --git a/tradingagents/dataflows/y_finance.py b/tradingagents/dataflows/y_finance.py index c3d14d31..cd23b5f1 100644 --- a/tradingagents/dataflows/y_finance.py +++ b/tradingagents/dataflows/y_finance.py @@ -2,6 +2,7 @@ from typing import Annotated from datetime import datetime from dateutil.relativedelta import relativedelta import yfinance as yf +import pandas as pd import os from .stockstats_utils import StockstatsUtils @@ -220,7 +221,7 @@ def _get_stock_stats_bulk( curr_date_dt = pd.to_datetime(curr_date) end_date = today_date - start_date = today_date - pd.DateOffset(years=15) + start_date = today_date - pd.DateOffset(years=2) start_date_str = start_date.strftime("%Y-%m-%d") end_date_str = end_date.strftime("%Y-%m-%d") @@ -414,7 +415,269 @@ def validate_ticker(symbol: str) -> bool: try: ticker = yf.Ticker(symbol.upper()) # Try to fetch 1 day of history - history = ticker.history(period="1d") - return not history.empty + # Suppress yfinance error output + import sys + from io import StringIO + + # Redirect stderr to suppress yfinance error messages + original_stderr = sys.stderr + sys.stderr = StringIO() + + try: + history = ticker.history(period="1d") + return not history.empty + finally: + # Restore stderr + sys.stderr = original_stderr + except Exception: - return False \ No newline at end of file + return False + + +def get_fundamentals( + ticker: Annotated[str, "ticker symbol of the company"], + curr_date: Annotated[str, "current date (for reference)"] = None +) -> str: + """ + Get comprehensive fundamental data for a ticker using yfinance. + Returns data in a format similar to Alpha Vantage's OVERVIEW endpoint. + + This is a FREE alternative to Alpha Vantage with no rate limits. + """ + import json + + try: + ticker_obj = yf.Ticker(ticker.upper()) + info = ticker_obj.info + + if not info or info.get('regularMarketPrice') is None: + return f"No fundamental data found for symbol '{ticker}'" + + # Build a structured response similar to Alpha Vantage + fundamentals = { + # Company Info + "Symbol": ticker.upper(), + "AssetType": info.get("quoteType", "N/A"), + "Name": info.get("longName", info.get("shortName", "N/A")), + "Description": info.get("longBusinessSummary", "N/A"), + "Exchange": info.get("exchange", "N/A"), + "Currency": info.get("currency", "USD"), + "Country": info.get("country", "N/A"), + "Sector": info.get("sector", "N/A"), + "Industry": info.get("industry", "N/A"), + "Address": f"{info.get('address1', '')} {info.get('city', '')}, {info.get('state', '')} {info.get('zip', '')}".strip(), + "OfficialSite": info.get("website", "N/A"), + "FiscalYearEnd": info.get("fiscalYearEnd", "N/A"), + + # Valuation + "MarketCapitalization": str(info.get("marketCap", "N/A")), + "EBITDA": str(info.get("ebitda", "N/A")), + "PERatio": str(info.get("trailingPE", "N/A")), + "ForwardPE": str(info.get("forwardPE", "N/A")), + "PEGRatio": str(info.get("pegRatio", "N/A")), + "BookValue": str(info.get("bookValue", "N/A")), + "PriceToBookRatio": str(info.get("priceToBook", "N/A")), + "PriceToSalesRatioTTM": str(info.get("priceToSalesTrailing12Months", "N/A")), + "EVToRevenue": str(info.get("enterpriseToRevenue", "N/A")), + "EVToEBITDA": str(info.get("enterpriseToEbitda", "N/A")), + + # Earnings & Revenue + "EPS": str(info.get("trailingEps", "N/A")), + "ForwardEPS": str(info.get("forwardEps", "N/A")), + "RevenueTTM": str(info.get("totalRevenue", "N/A")), + "RevenuePerShareTTM": str(info.get("revenuePerShare", "N/A")), + "GrossProfitTTM": str(info.get("grossProfits", "N/A")), + "QuarterlyRevenueGrowthYOY": str(info.get("revenueGrowth", "N/A")), + "QuarterlyEarningsGrowthYOY": str(info.get("earningsGrowth", "N/A")), + + # Margins & Returns + "ProfitMargin": str(info.get("profitMargins", "N/A")), + "OperatingMarginTTM": str(info.get("operatingMargins", "N/A")), + "GrossMargins": str(info.get("grossMargins", "N/A")), + "ReturnOnAssetsTTM": str(info.get("returnOnAssets", "N/A")), + "ReturnOnEquityTTM": str(info.get("returnOnEquity", "N/A")), + + # Dividend + "DividendPerShare": str(info.get("dividendRate", "N/A")), + "DividendYield": str(info.get("dividendYield", "N/A")), + "ExDividendDate": str(info.get("exDividendDate", "N/A")), + "PayoutRatio": str(info.get("payoutRatio", "N/A")), + + # Balance Sheet + "TotalCash": str(info.get("totalCash", "N/A")), + "TotalDebt": str(info.get("totalDebt", "N/A")), + "CurrentRatio": str(info.get("currentRatio", "N/A")), + "QuickRatio": str(info.get("quickRatio", "N/A")), + "DebtToEquity": str(info.get("debtToEquity", "N/A")), + "FreeCashFlow": str(info.get("freeCashflow", "N/A")), + "OperatingCashFlow": str(info.get("operatingCashflow", "N/A")), + + # Trading Info + "Beta": str(info.get("beta", "N/A")), + "52WeekHigh": str(info.get("fiftyTwoWeekHigh", "N/A")), + "52WeekLow": str(info.get("fiftyTwoWeekLow", "N/A")), + "50DayMovingAverage": str(info.get("fiftyDayAverage", "N/A")), + "200DayMovingAverage": str(info.get("twoHundredDayAverage", "N/A")), + "SharesOutstanding": str(info.get("sharesOutstanding", "N/A")), + "SharesFloat": str(info.get("floatShares", "N/A")), + "SharesShort": str(info.get("sharesShort", "N/A")), + "ShortRatio": str(info.get("shortRatio", "N/A")), + "ShortPercentOfFloat": str(info.get("shortPercentOfFloat", "N/A")), + + # Ownership + "PercentInsiders": str(info.get("heldPercentInsiders", "N/A")), + "PercentInstitutions": str(info.get("heldPercentInstitutions", "N/A")), + + # Analyst + "AnalystTargetPrice": str(info.get("targetMeanPrice", "N/A")), + "AnalystTargetHigh": str(info.get("targetHighPrice", "N/A")), + "AnalystTargetLow": str(info.get("targetLowPrice", "N/A")), + "NumberOfAnalysts": str(info.get("numberOfAnalystOpinions", "N/A")), + "RecommendationKey": info.get("recommendationKey", "N/A"), + "RecommendationMean": str(info.get("recommendationMean", "N/A")), + } + + # Return as formatted JSON string + return json.dumps(fundamentals, indent=4) + + except Exception as e: + return f"Error retrieving fundamentals for {ticker}: {str(e)}" + + +def get_options_activity( + ticker: Annotated[str, "ticker symbol of the company"], + num_expirations: Annotated[int, "number of nearest expiration dates to analyze"] = 3, + curr_date: Annotated[str, "current date (for reference)"] = None +) -> str: + """ + Get options activity for a specific ticker using yfinance. + Analyzes volume, open interest, and put/call ratios. + + This is a FREE alternative to Tradier with no API key required. + """ + try: + ticker_obj = yf.Ticker(ticker.upper()) + + # Get available expiration dates + expirations = ticker_obj.options + if not expirations: + return f"No options data available for {ticker}" + + # Analyze the nearest N expiration dates + expirations_to_analyze = expirations[:min(num_expirations, len(expirations))] + + report = f"## Options Activity for {ticker.upper()}\n\n" + report += f"**Available Expirations:** {len(expirations)} dates\n" + report += f"**Analyzing:** {', '.join(expirations_to_analyze)}\n\n" + + total_call_volume = 0 + total_put_volume = 0 + total_call_oi = 0 + total_put_oi = 0 + + unusual_activity = [] + + for exp_date in expirations_to_analyze: + try: + opt = ticker_obj.option_chain(exp_date) + calls = opt.calls + puts = opt.puts + + if calls.empty and puts.empty: + continue + + # Calculate totals for this expiration + call_vol = calls['volume'].sum() if 'volume' in calls.columns else 0 + put_vol = puts['volume'].sum() if 'volume' in puts.columns else 0 + call_oi = calls['openInterest'].sum() if 'openInterest' in calls.columns else 0 + put_oi = puts['openInterest'].sum() if 'openInterest' in puts.columns else 0 + + # Handle NaN values + call_vol = 0 if pd.isna(call_vol) else int(call_vol) + put_vol = 0 if pd.isna(put_vol) else int(put_vol) + call_oi = 0 if pd.isna(call_oi) else int(call_oi) + put_oi = 0 if pd.isna(put_oi) else int(put_oi) + + total_call_volume += call_vol + total_put_volume += put_vol + total_call_oi += call_oi + total_put_oi += put_oi + + # Find unusual activity (high volume relative to OI) + for _, row in calls.iterrows(): + vol = row.get('volume', 0) + oi = row.get('openInterest', 0) + if pd.notna(vol) and pd.notna(oi) and oi > 0 and vol > oi * 0.5 and vol > 100: + unusual_activity.append({ + 'type': 'CALL', + 'expiration': exp_date, + 'strike': row['strike'], + 'volume': int(vol), + 'openInterest': int(oi), + 'vol_oi_ratio': round(vol / oi, 2) if oi > 0 else 0, + 'impliedVolatility': round(row.get('impliedVolatility', 0) * 100, 1) + }) + + for _, row in puts.iterrows(): + vol = row.get('volume', 0) + oi = row.get('openInterest', 0) + if pd.notna(vol) and pd.notna(oi) and oi > 0 and vol > oi * 0.5 and vol > 100: + unusual_activity.append({ + 'type': 'PUT', + 'expiration': exp_date, + 'strike': row['strike'], + 'volume': int(vol), + 'openInterest': int(oi), + 'vol_oi_ratio': round(vol / oi, 2) if oi > 0 else 0, + 'impliedVolatility': round(row.get('impliedVolatility', 0) * 100, 1) + }) + + except Exception as e: + report += f"*Error fetching {exp_date}: {str(e)}*\n" + continue + + # Calculate put/call ratios + pc_volume_ratio = round(total_put_volume / total_call_volume, 3) if total_call_volume > 0 else 0 + pc_oi_ratio = round(total_put_oi / total_call_oi, 3) if total_call_oi > 0 else 0 + + # Summary + report += "### Summary\n" + report += "| Metric | Calls | Puts | Put/Call Ratio |\n" + report += "|--------|-------|------|----------------|\n" + report += f"| Volume | {total_call_volume:,} | {total_put_volume:,} | {pc_volume_ratio} |\n" + report += f"| Open Interest | {total_call_oi:,} | {total_put_oi:,} | {pc_oi_ratio} |\n\n" + + # Sentiment interpretation + report += "### Sentiment Analysis\n" + if pc_volume_ratio < 0.7: + report += "- **Volume P/C Ratio:** Bullish (more call volume)\n" + elif pc_volume_ratio > 1.3: + report += "- **Volume P/C Ratio:** Bearish (more put volume)\n" + else: + report += "- **Volume P/C Ratio:** Neutral\n" + + if pc_oi_ratio < 0.7: + report += "- **OI P/C Ratio:** Bullish positioning\n" + elif pc_oi_ratio > 1.3: + report += "- **OI P/C Ratio:** Bearish positioning\n" + else: + report += "- **OI P/C Ratio:** Neutral positioning\n" + + # Unusual activity + if unusual_activity: + # Sort by volume/OI ratio + unusual_activity.sort(key=lambda x: x['vol_oi_ratio'], reverse=True) + top_unusual = unusual_activity[:10] + + report += "\n### Unusual Activity (High Volume vs Open Interest)\n" + report += "| Type | Expiry | Strike | Volume | OI | Vol/OI | IV |\n" + report += "|------|--------|--------|--------|----|---------|----|---|\n" + for item in top_unusual: + report += f"| {item['type']} | {item['expiration']} | ${item['strike']} | {item['volume']:,} | {item['openInterest']:,} | {item['vol_oi_ratio']}x | {item['impliedVolatility']}% |\n" + else: + report += "\n*No unusual options activity detected.*\n" + + return report + + except Exception as e: + return f"Error retrieving options activity for {ticker}: {str(e)}" \ No newline at end of file diff --git a/tradingagents/default_config.py b/tradingagents/default_config.py index c27f4e04..63f1ab97 100644 --- a/tradingagents/default_config.py +++ b/tradingagents/default_config.py @@ -9,21 +9,27 @@ DEFAULT_CONFIG = { "dataflows/data_cache", ), # LLM settings - "llm_provider": "openai", - "deep_think_llm": "gpt-4o", # For Google: gemini-2.0-flash or gemini-1.5-pro-latest - "quick_think_llm": "gpt-4o-mini", # For Google: gemini-2.0-flash or gemini-1.5-flash-latest - "backend_url": "https://api.openai.com/v1", + "llm_provider": "google", + "deep_think_llm": "gemini-3-pro-preview", # For Google: gemini-2.0-flash or gemini-1.5-pro-latest + "quick_think_llm": "gemini-2.5-flash-lite", # For Google: gemini-2.0-flash or gemini-1.5-flash-latest + "backend_url": "https://api.google.com/v1", # Debate and discussion settings "max_debate_rounds": 1, "max_risk_discuss_rounds": 1, "max_recur_limit": 100, # Discovery settings "discovery": { - "reddit_trending_limit": 30, # Number of trending tickers to fetch from Reddit - "market_movers_limit": 20, # Number of top gainers/losers to fetch - "max_candidates_to_analyze": 20, # Maximum candidates for deep dive analysis - "news_lookback_days": 7, # Days of news history to analyze - "final_recommendations": 10, # Number of final opportunities to recommend + "reddit_trending_limit": 30, # Number of trending tickers to fetch from Reddit + "market_movers_limit": 20, # Number of top gainers/losers to fetch + "max_candidates_to_analyze": 20, # Maximum candidates for deep dive analysis + "news_lookback_days": 7, # Days of news history to analyze + "final_recommendations": 10, # Number of final opportunities to recommend + # New data source settings + "unusual_volume_multiple": 3.0, # Minimum volume multiple for unusual volume detection + "unusual_options_volume_multiple": 2.0, # Minimum options volume multiple + "analyst_lookback_days": 7, # Days to look back for analyst rating changes + "min_short_interest_pct": 15.0, # Minimum short interest % for squeeze candidates + "min_days_to_cover": 2.0, # Minimum days to cover ratio }, # Memory settings "enable_memory": False, # Enable/disable embeddings and memory system diff --git a/tradingagents/graph/discovery_graph.py b/tradingagents/graph/discovery_graph.py index 2200fbfd..5abdf0e1 100644 --- a/tradingagents/graph/discovery_graph.py +++ b/tradingagents/graph/discovery_graph.py @@ -11,7 +11,7 @@ from tradingagents.agents.utils.agent_utils import ( get_indicators ) from tradingagents.tools.executor import execute_tool -from tradingagents.schemas import TickerList, MarketMovers, ThemeList +from tradingagents.schemas import TickerList, TickerContextList, MarketMovers, ThemeList class DiscoveryGraph: def __init__(self, config=None): @@ -52,8 +52,94 @@ class DiscoveryGraph: self.max_candidates_to_analyze = discovery_config.get("max_candidates_to_analyze", 10) self.news_lookback_days = discovery_config.get("news_lookback_days", 7) self.final_recommendations = discovery_config.get("final_recommendations", 3) + + # Store run directory for saving results + self.run_dir = self.config.get("discovery_run_dir", None) + self.graph = self._create_graph() + def _log_tool_call(self, tool_logs: list, node: str, step_name: str, tool_name: str, params: dict, output: str, context: str = ""): + """Log a tool call with metadata for debugging and analysis.""" + from datetime import datetime + + log_entry = { + "timestamp": datetime.now().isoformat(), + "node": node, + "step": step_name, + "tool": tool_name, + "parameters": params, + "context": context, + "output": output[:1000] + "..." if len(output) > 1000 else output, + "output_length": len(output) + } + tool_logs.append(log_entry) + return log_entry + + def _save_results(self, state: dict, trade_date: str): + """Save discovery results and tool logs to files.""" + from pathlib import Path + from datetime import datetime + import json + + # Get or create results directory + if self.run_dir: + results_dir = Path(self.run_dir) + else: + run_timestamp = datetime.now().strftime("%H_%M_%S") + results_dir = Path(self.config.get("results_dir", "./results")) / "discovery" / trade_date / f"run_{run_timestamp}" + results_dir.mkdir(parents=True, exist_ok=True) + + # Save main results as markdown + try: + with open(results_dir / "discovery_results.md", "w") as f: + f.write(f"# Discovery Results - {trade_date}\n\n") + f.write(f"## Final Ranking\n\n") + f.write(state.get("final_ranking", "No ranking available")) + f.write("\n\n## Candidates Analyzed\n\n") + for opp in state.get("opportunities", []): + f.write(f"### {opp['ticker']} ({opp['strategy']})\n\n") + except Exception as e: + print(f" Error saving results: {e}") + + # Save as JSON + try: + with open(results_dir / "discovery_result.json", "w") as f: + json_state = { + "trade_date": trade_date, + "tickers": state.get("tickers", []), + "filtered_tickers": state.get("filtered_tickers", []), + "final_ranking": state.get("final_ranking", ""), + "status": state.get("status", "") + } + json.dump(json_state, f, indent=2) + except Exception as e: + print(f" Error saving JSON: {e}") + + # Save tool logs + tool_logs = state.get("tool_logs", []) + if tool_logs: + try: + with open(results_dir / "tool_execution_logs.json", "w") as f: + json.dump(tool_logs, f, indent=2) + + with open(results_dir / "tool_execution_logs.md", "w") as f: + f.write(f"# Tool Execution Logs - {trade_date}\n\n") + for i, log in enumerate(tool_logs, 1): + f.write(f"## {i}. {log['step']}\n\n") + f.write(f"- **Tool:** `{log['tool']}`\n") + f.write(f"- **Node:** {log['node']}\n") + f.write(f"- **Timestamp:** {log['timestamp']}\n") + if log.get('context'): + f.write(f"- **Context:** {log['context']}\n") + f.write(f"- **Parameters:** `{log['parameters']}`\n") + f.write(f"- **Output Length:** {log['output_length']} chars\n\n") + f.write(f"### Output\n```\n{log['output']}\n```\n\n") + f.write("---\n\n") + except Exception as e: + print(f" Error saving tool logs: {e}") + + print(f" Results saved to: {results_dir}") + def _create_graph(self): workflow = StateGraph(DiscoveryState) @@ -75,156 +161,79 @@ class DiscoveryGraph: print("🔍 Scanning market for opportunities...") candidates = [] + tool_logs = state.get("tool_logs", []) - # 0. Macro Theme Discovery (Top-Down) - try: - from datetime import datetime - today = datetime.now().strftime("%Y-%m-%d") - - # Get Global News - global_news = execute_tool("get_global_news", date=today, limit=5) - - # Extract Themes - prompt = f"""Based on this global news, identify 3 trending market themes or sectors (e.g., 'Artificial Intelligence', 'Oil', 'Biotech'). - Return a JSON object with a 'themes' array of strings. - - News: - {global_news} - """ - - structured_llm = self.quick_thinking_llm.with_structured_output( - schema=ThemeList.model_json_schema(), - method="json_schema" - ) - response = structured_llm.invoke([HumanMessage(content=prompt)]) - themes = response.get("themes", []) - - print(f" Identified Macro Themes: {themes}") - - # Find tickers for each theme - for theme in themes: - try: - tweets_report = execute_tool("get_tweets", query=f"{theme} stocks", count=15) - - prompt = f"""Extract ONLY valid stock ticker symbols related to the theme '{theme}' from this report. - Return a comma-separated list of tickers (1-5 uppercase letters). - - Report: - {tweets_report} - - Return a JSON object with a 'tickers' array.""" - - structured_llm = self.quick_thinking_llm.with_structured_output( - schema=TickerList.model_json_schema(), - method="json_schema" - ) - response = structured_llm.invoke([HumanMessage(content=prompt)]) - theme_tickers = response.get("tickers", []) - - for t in theme_tickers: - t = t.upper().strip() - if re.match(r'^[A-Z]{1,5}$', t): - # Use validate_ticker tool logic (via execute_tool) - try: - if execute_tool("validate_ticker", symbol=t): - candidates.append({"ticker": t, "source": f"macro_theme_{theme}", "sentiment": "unknown"}) - except Exception: - continue - except Exception as e: - print(f" Error fetching tickers for theme {theme}: {e}") - - except Exception as e: - print(f" Error in Macro Theme Discovery: {e}") + # 0. Macro Theme Discovery (Top-Down) - DISABLED + # This section used Twitter API which has rate limit issues + # try: + # from datetime import datetime + # today = datetime.now().strftime("%Y-%m-%d") + # global_news = execute_tool("get_global_news", date=today, limit=5) + # ... (macro theme code disabled) + # except Exception as e: + # print(f" Error in Macro Theme Discovery: {e}") # 1. Get Reddit Trending (Social Sentiment) try: reddit_report = execute_tool("get_trending_tickers", limit=self.reddit_trending_limit) - # Use LLM to extract tickers - prompt = """Extract ONLY valid stock ticker symbols from this Reddit report. -Return a comma-separated list of tickers (1-5 uppercase letters). -Do not include currencies (like RMB), cryptocurrencies (like BTC unless it's an ETF), or explanations. -Only include actual stock tickers. + # Use LLM to extract tickers WITH context + prompt = """Extract valid stock ticker symbols from this Reddit report, along with context about why they're trending. -Examples of valid tickers: AAPL, GOOGL, MSFT, TSLA, NVDA -Examples of invalid: RMB (currency), BTC (crypto) +For each ticker, include: +- ticker: The stock symbol (1-5 uppercase letters) +- context: Brief description of sentiment, mentions, or key discussion points + +Do not include currencies (RMB), cryptocurrencies (BTC), or invalid symbols. Report: {report} -Return a JSON object with a 'tickers' array containing only valid stock ticker symbols.""".format(report=reddit_report) +Return a JSON object with a 'candidates' array of objects, each having 'ticker' and 'context' fields.""".format(report=reddit_report) - # Use structured output for ticker extraction + # Use structured output for ticker+context extraction structured_llm = self.quick_thinking_llm.with_structured_output( - schema=TickerList.model_json_schema(), + schema=TickerContextList.model_json_schema(), method="json_schema" ) response = structured_llm.invoke([HumanMessage(content=prompt)]) - # Validate and add tickers - reddit_tickers = response.get("tickers", []) - for t in reddit_tickers: - t = t.upper().strip() + # Validate and add tickers with context + reddit_candidates = response.get("candidates", []) + for c in reddit_candidates: + ticker = c.get("ticker", "").upper().strip() + context = c.get("context", "Trending on Reddit") # Validate ticker format (1-5 uppercase letters) - if re.match(r'^[A-Z]{1,5}$', t): - candidates.append({"ticker": t, "source": "social_trending", "sentiment": "unknown"}) + if re.match(r'^[A-Z]{1,5}$', ticker): + candidates.append({"ticker": ticker, "source": "social_trending", "context": context, "sentiment": "unknown"}) except Exception as e: print(f" Error fetching Reddit tickers: {e}") - # 2. Get Twitter Trending (Social Sentiment) - try: - # Search for general market discussions - tweets_report = execute_tool("get_tweets", query="stocks to watch", count=20) - - # Use LLM to extract tickers - prompt = """Extract ONLY valid stock ticker symbols from this Twitter report. -Return a comma-separated list of tickers (1-5 uppercase letters). -Do not include currencies (like RMB), cryptocurrencies (like BTC unless it's an ETF), or explanations. -Only include actual stock tickers. - -Examples of valid tickers: AAPL, GOOGL, MSFT, TSLA, NVDA -Examples of invalid: RMB (currency), BTC (crypto) - -Report: -{report} - -Return a JSON object with a 'tickers' array containing only valid stock ticker symbols.""".format(report=tweets_report) - - # Use structured output for ticker extraction - structured_llm = self.quick_thinking_llm.with_structured_output( - schema=TickerList.model_json_schema(), - method="json_schema" - ) - response = structured_llm.invoke([HumanMessage(content=prompt)]) - - # Validate and add tickers - twitter_tickers = response.get("tickers", []) - valid_twitter_tickers = [] - for t in twitter_tickers: - t = t.upper().strip() - # Validate ticker format (1-5 uppercase letters) - if re.match(r'^[A-Z]{1,5}$', t): - # Use validate_ticker tool logic (via execute_tool) - try: - if execute_tool("validate_ticker", symbol=t): - valid_twitter_tickers.append(t) - except Exception: - continue - - for t in valid_twitter_tickers: - candidates.append({"ticker": t, "source": "twitter_sentiment", "sentiment": "unknown"}) - except Exception as e: - print(f" Error fetching Twitter tickers: {e}") + # 2. Get Twitter Trending (Social Sentiment) - DISABLED due to API issues + # try: + # # Search for general market discussions + # tweets_report = execute_tool("get_tweets", query="stocks to watch", count=20) + # + # # Use LLM to extract tickers + # prompt = """Extract ONLY valid stock ticker symbols from this Twitter report. + # ... (Twitter extraction code disabled) + # except Exception as e: + # print(f" Error fetching Twitter tickers: {e}") # 2. Get Market Movers (Gainers & Losers) try: movers_report = execute_tool("get_market_movers", limit=self.market_movers_limit) - # We need to parse this to separate Gainers vs Losers - # Since it's a markdown report, we'll use LLM to structure it - prompt = f"""Based on the following market movers data, extract the top {self.market_movers_limit} tickers. -Return a JSON object with a 'movers' array containing objects with 'ticker' and 'type' (either 'gainer' or 'loser') fields. + # Use LLM to extract movers with context + prompt = f"""Extract stock tickers from this market movers data with context about their performance. + +For each ticker, include: +- ticker: The stock symbol (1-5 uppercase letters) +- type: Either 'gainer' or 'loser' +- reason: Brief description of the price movement (%, volume, catalyst if mentioned) Data: -{movers_report}""" +{movers_report} + +Return a JSON object with a 'movers' array containing objects with 'ticker', 'type', and 'reason' fields.""" # Use structured output for market movers structured_llm = self.quick_thinking_llm.with_structured_output( @@ -233,16 +242,17 @@ Data: ) response = structured_llm.invoke([HumanMessage(content=prompt)]) - # Validate and add tickers + # Validate and add tickers with context movers = response.get("movers", []) for m in movers: ticker = m.get('ticker', '').upper().strip() - # Only add valid tickers (1-5 uppercase letters) if ticker and re.match(r'^[A-Z]{1,5}$', ticker): mover_type = m.get('type', 'gainer') + reason = m.get('reason', f"Top {mover_type}") candidates.append({ "ticker": ticker, "source": mover_type, + "context": reason, "sentiment": "negative" if mover_type == "loser" else "positive" }) @@ -258,27 +268,30 @@ Data: earnings_report = execute_tool("get_earnings_calendar", from_date=from_date, to_date=to_date) - # Extract tickers from earnings calendar - prompt = """Extract ONLY valid stock ticker symbols from this earnings calendar. -Return a comma-separated list of tickers (1-5 uppercase letters). -Only include actual stock tickers, not indexes or other symbols. + # Extract tickers with earnings context + prompt = """Extract stock tickers from this earnings calendar with context about their upcoming earnings. + +For each ticker, include: +- ticker: The stock symbol (1-5 uppercase letters) +- context: Earnings date, expected EPS, and any other relevant info Earnings Calendar: {report} -Return a JSON object with a 'tickers' array containing only valid stock ticker symbols.""".format(report=earnings_report) +Return a JSON object with a 'candidates' array of objects, each having 'ticker' and 'context' fields.""".format(report=earnings_report) structured_llm = self.quick_thinking_llm.with_structured_output( - schema=TickerList.model_json_schema(), + schema=TickerContextList.model_json_schema(), method="json_schema" ) response = structured_llm.invoke([HumanMessage(content=prompt)]) - earnings_tickers = response.get("tickers", []) - for t in earnings_tickers: - t = t.upper().strip() - if re.match(r'^[A-Z]{1,5}$', t): - candidates.append({"ticker": t, "source": "earnings_catalyst", "sentiment": "unknown"}) + earnings_candidates = response.get("candidates", []) + for c in earnings_candidates: + ticker = c.get("ticker", "").upper().strip() + context = c.get("context", "Upcoming earnings") + if re.match(r'^[A-Z]{1,5}$', ticker): + candidates.append({"ticker": ticker, "source": "earnings_catalyst", "context": context, "sentiment": "unknown"}) except Exception as e: print(f" Error fetching Earnings Calendar: {e}") @@ -291,30 +304,72 @@ Return a JSON object with a 'tickers' array containing only valid stock ticker s ipo_report = execute_tool("get_ipo_calendar", from_date=from_date, to_date=to_date) - # Extract tickers from IPO calendar - prompt = """Extract ONLY valid stock ticker symbols from this IPO calendar. -Return a comma-separated list of tickers (1-5 uppercase letters). -Only include actual stock tickers that are listed or about to be listed. + # Extract tickers with IPO context + prompt = """Extract stock tickers from this IPO calendar with context about the offering. + +For each ticker, include: +- ticker: The stock symbol (1-5 uppercase letters) +- context: IPO date, price range, shares offered, and company description IPO Calendar: {report} -Return a JSON object with a 'tickers' array containing only valid stock ticker symbols.""".format(report=ipo_report) +Return a JSON object with a 'candidates' array of objects, each having 'ticker' and 'context' fields.""".format(report=ipo_report) structured_llm = self.quick_thinking_llm.with_structured_output( - schema=TickerList.model_json_schema(), + schema=TickerContextList.model_json_schema(), method="json_schema" ) response = structured_llm.invoke([HumanMessage(content=prompt)]) - ipo_tickers = response.get("tickers", []) - for t in ipo_tickers: - t = t.upper().strip() - if re.match(r'^[A-Z]{1,5}$', t): - candidates.append({"ticker": t, "source": "ipo_listing", "sentiment": "unknown"}) + ipo_candidates = response.get("candidates", []) + for c in ipo_candidates: + ticker = c.get("ticker", "").upper().strip() + context = c.get("context", "Recent/upcoming IPO") + if re.match(r'^[A-Z]{1,5}$', ticker): + candidates.append({"ticker": ticker, "source": "ipo_listing", "context": context, "sentiment": "unknown"}) except Exception as e: print(f" Error fetching IPO Calendar: {e}") + # 5. Short Squeeze Detection (High Short Interest) + try: + # Get stocks with high short interest - potential squeeze candidates + short_interest_report = execute_tool( + "get_short_interest", + min_short_interest_pct=15.0, # 15%+ short interest + min_days_to_cover=3.0, # 3+ days to cover + top_n=15 + ) + + # Extract tickers with short squeeze context + prompt = """Extract stock tickers from this short interest report with context about squeeze potential. + +For each ticker, include: +- ticker: The stock symbol (1-5 uppercase letters) +- context: Short interest %, days to cover, squeeze potential rating, and any other relevant metrics + +Short Interest Report: +{report} + +Return a JSON object with a 'candidates' array of objects, each having 'ticker' and 'context' fields.""".format(report=short_interest_report) + + structured_llm = self.quick_thinking_llm.with_structured_output( + schema=TickerContextList.model_json_schema(), + method="json_schema" + ) + response = structured_llm.invoke([HumanMessage(content=prompt)]) + + short_candidates = response.get("candidates", []) + for c in short_candidates: + ticker = c.get("ticker", "").upper().strip() + context = c.get("context", "High short interest") + if re.match(r'^[A-Z]{1,5}$', ticker): + candidates.append({"ticker": ticker, "source": "short_squeeze", "context": context, "sentiment": "unknown"}) + + print(f" Found {len(short_candidates)} short squeeze candidates") + except Exception as e: + print(f" Error fetching Short Interest: {e}") + # Deduplicate unique_candidates = {} for c in candidates: @@ -323,7 +378,7 @@ Return a JSON object with a 'tickers' array containing only valid stock ticker s final_candidates = list(unique_candidates.values()) print(f" Found {len(final_candidates)} unique candidates.") - return {"tickers": [c['ticker'] for c in final_candidates], "candidate_metadata": final_candidates, "status": "scanned"} + return {"tickers": [c['ticker'] for c in final_candidates], "candidate_metadata": final_candidates, "tool_logs": tool_logs, "status": "scanned"} def filter_node(self, state: DiscoveryState): """Filter candidates based on strategy (Contrarian vs Momentum).""" @@ -451,6 +506,8 @@ Return a JSON object with a 'tickers' array containing only valid stock ticker s def ranker_node(self, state: DiscoveryState): """Rank opportunities and select the best ones.""" + from datetime import datetime + opportunities = state["opportunities"] print("🔍 Ranking opportunities...") @@ -490,4 +547,17 @@ Return a JSON object with a 'tickers' array containing only valid stock ticker s response = self.deep_thinking_llm.invoke([HumanMessage(content=prompt)]) print(" Ranking complete.") - return {"status": "complete", "opportunities": opportunities, "final_ranking": response.content} + + # Build result state + result_state = { + "status": "complete", + "opportunities": opportunities, + "final_ranking": response.content, + "tool_logs": state.get("tool_logs", []) + } + + # Save results to files + trade_date = state.get("trade_date", datetime.now().strftime("%Y-%m-%d")) + self._save_results(result_state, trade_date) + + return result_state diff --git a/tradingagents/graph/trading_graph.py b/tradingagents/graph/trading_graph.py index ab6ef3a7..caa4a877 100644 --- a/tradingagents/graph/trading_graph.py +++ b/tradingagents/graph/trading_graph.py @@ -62,11 +62,11 @@ class TradingAgentsGraph: # Initialize LLMs if self.config["llm_provider"].lower() == "openai" or self.config["llm_provider"] == "ollama" or self.config["llm_provider"] == "openrouter": - self.deep_thinking_llm = ChatOpenAI(model=self.config["deep_think_llm"], base_url=self.config["backend_url"]) - self.quick_thinking_llm = ChatOpenAI(model=self.config["quick_think_llm"], base_url=self.config["backend_url"]) + self.deep_thinking_llm = ChatOpenAI(model=self.config["deep_think_llm"], api_key=os.getenv("OPENAI_API_KEY")) + self.quick_thinking_llm = ChatOpenAI(model=self.config["quick_think_llm"], api_key=os.getenv("OPENAI_API_KEY")) elif self.config["llm_provider"].lower() == "anthropic": - self.deep_thinking_llm = ChatAnthropic(model=self.config["deep_think_llm"], base_url=self.config["backend_url"]) - self.quick_thinking_llm = ChatAnthropic(model=self.config["quick_think_llm"], base_url=self.config["backend_url"]) + self.deep_thinking_llm = ChatAnthropic(model=self.config["deep_think_llm"], api_key=os.getenv("ANTHROPIC_API_KEY")) + self.quick_thinking_llm = ChatAnthropic(model=self.config["quick_think_llm"], api_key=os.getenv("ANTHROPIC_API_KEY")) elif self.config["llm_provider"].lower() == "google": # Explicitly pass Google API key from environment google_api_key = os.getenv("GOOGLE_API_KEY") diff --git a/tradingagents/schemas/__init__.py b/tradingagents/schemas/__init__.py index 0782d204..fd160afc 100644 --- a/tradingagents/schemas/__init__.py +++ b/tradingagents/schemas/__init__.py @@ -3,6 +3,8 @@ from .llm_outputs import ( TradeDecision, TickerList, + TickerWithContext, + TickerContextList, ThemeList, MarketMover, MarketMovers, @@ -15,6 +17,8 @@ from .llm_outputs import ( __all__ = [ "TradeDecision", "TickerList", + "TickerWithContext", + "TickerContextList", "ThemeList", "MarketMovers", "MarketMover", diff --git a/tradingagents/schemas/llm_outputs.py b/tradingagents/schemas/llm_outputs.py index 73dec960..0d3b6f41 100644 --- a/tradingagents/schemas/llm_outputs.py +++ b/tradingagents/schemas/llm_outputs.py @@ -35,6 +35,25 @@ class TickerList(BaseModel): ) +class TickerWithContext(BaseModel): + """Individual ticker with context description.""" + + ticker: str = Field( + description="Stock ticker symbol (1-5 uppercase letters)" + ) + context: str = Field( + description="Brief description of why this ticker is relevant (key metrics, catalyst, etc.)" + ) + + +class TickerContextList(BaseModel): + """Structured output for tickers with context.""" + + candidates: List[TickerWithContext] = Field( + description="List of stock tickers with context explaining their relevance" + ) + + class ThemeList(BaseModel): """Structured output for market themes.""" diff --git a/tradingagents/tools/registry.py b/tradingagents/tools/registry.py index 8fa24382..dec73d09 100644 --- a/tradingagents/tools/registry.py +++ b/tradingagents/tools/registry.py @@ -21,6 +21,8 @@ from tradingagents.dataflows.y_finance import ( get_income_statement as get_yfinance_income_statement, get_insider_transactions as get_yfinance_insider_transactions, validate_ticker as validate_ticker_yfinance, + get_fundamentals as get_yfinance_fundamentals, + get_options_activity as get_yfinance_options_activity, ) from tradingagents.dataflows.alpha_vantage import ( get_stock as get_alpha_vantage_stock, @@ -59,6 +61,18 @@ from tradingagents.dataflows.finnhub_api import ( from tradingagents.dataflows.twitter_data import ( get_tweets as get_twitter_tweets, ) +from tradingagents.dataflows.alpha_vantage_volume import ( + get_alpha_vantage_unusual_volume, +) +from tradingagents.dataflows.alpha_vantage_analysts import ( + get_alpha_vantage_analyst_changes, +) +from tradingagents.dataflows.tradier_api import ( + get_tradier_unusual_options, +) +from tradingagents.dataflows.finviz_scraper import ( + get_finviz_short_interest, +) # ============================================================================ @@ -77,7 +91,7 @@ TOOL_REGISTRY: Dict[str, Dict[str, Any]] = { "yfinance": get_YFin_data_online, "alpha_vantage": get_alpha_vantage_stock, }, - "vendor_priority": ["yfinance", "alpha_vantage"], + "vendor_priority": ["yfinance"], "parameters": { "symbol": {"type": "str", "description": "Ticker symbol of the company (e.g., AAPL)"}, "start_date": {"type": "str", "description": "Start date in yyyy-mm-dd format"}, @@ -110,9 +124,9 @@ TOOL_REGISTRY: Dict[str, Dict[str, Any]] = { "yfinance": get_stock_stats_indicators_window, "alpha_vantage": get_alpha_vantage_indicator, }, - "vendor_priority": ["yfinance", "alpha_vantage"], + "vendor_priority": ["yfinance"], "execution_mode": "aggregate", - "aggregate_vendors": ["yfinance", "alpha_vantage"], + "aggregate_vendors": ["yfinance"], "parameters": { "symbol": {"type": "str", "description": "Ticker symbol"}, "indicator": {"type": "str", "description": "Technical indicator (rsi, macd, sma, ema, etc.)"}, @@ -129,10 +143,11 @@ TOOL_REGISTRY: Dict[str, Dict[str, Any]] = { "category": "fundamental_data", "agents": ["fundamentals"], "vendors": { + "yfinance": get_yfinance_fundamentals, "alpha_vantage": get_alpha_vantage_fundamentals, "openai": get_fundamentals_openai, }, - "vendor_priority": ["alpha_vantage", "openai"], + "vendor_priority": ["yfinance", "openai"], "parameters": { "ticker": {"type": "str", "description": "Ticker symbol"}, "curr_date": {"type": "str", "description": "Current date, yyyy-mm-dd"}, @@ -232,7 +247,7 @@ TOOL_REGISTRY: Dict[str, Dict[str, Any]] = { "reddit": get_reddit_api_global_news, "alpha_vantage": get_alpha_vantage_global_news, }, - "vendor_priority": ["openai", "google", "reddit", "alpha_vantage"], + "vendor_priority": ["openai", "google", "reddit"], "execution_mode": "aggregate", "parameters": { "date": {"type": "str", "description": "Date for news, yyyy-mm-dd"}, @@ -347,6 +362,72 @@ TOOL_REGISTRY: Dict[str, Dict[str, Any]] = { "returns": "str: Formatted IPO calendar with pricing and share details", }, + "get_unusual_volume": { + "description": "Find stocks with unusual volume but minimal price movement (accumulation signal)", + "category": "discovery", + "agents": [], + "vendors": { + "alpha_vantage": get_alpha_vantage_unusual_volume, + }, + "vendor_priority": ["alpha_vantage"], + "parameters": { + "date": {"type": "str", "description": "Analysis date in yyyy-mm-dd format", "default": None}, + "min_volume_multiple": {"type": "float", "description": "Minimum volume multiple vs average", "default": 3.0}, + "max_price_change": {"type": "float", "description": "Maximum price change percentage", "default": 5.0}, + "top_n": {"type": "int", "description": "Number of top results to return", "default": 20}, + }, + "returns": "str: Formatted report of stocks with unusual volume patterns", + }, + + "get_unusual_options_activity": { + "description": "Analyze options activity for specific tickers as confirmation signal (not for primary discovery)", + "category": "discovery", + "agents": [], + "vendors": { + "yfinance": get_yfinance_options_activity, + "tradier": get_tradier_unusual_options, + }, + "vendor_priority": ["yfinance"], + "parameters": { + "ticker": {"type": "str", "description": "Ticker symbol to analyze"}, + "num_expirations": {"type": "int", "description": "Number of nearest expiration dates to analyze", "default": 3}, + "curr_date": {"type": "str", "description": "Analysis date for reference", "default": None}, + }, + "returns": "str: Formatted report of options activity with put/call ratios", + }, + + "get_analyst_rating_changes": { + "description": "Track recent analyst upgrades/downgrades and price target changes", + "category": "discovery", + "agents": [], + "vendors": { + "alpha_vantage": get_alpha_vantage_analyst_changes, + }, + "vendor_priority": ["alpha_vantage"], + "parameters": { + "lookback_days": {"type": "int", "description": "Number of days to look back", "default": 7}, + "change_types": {"type": "list", "description": "Types of changes to track", "default": ["upgrade", "downgrade", "initiated"]}, + "top_n": {"type": "int", "description": "Number of top results", "default": 20}, + }, + "returns": "str: Formatted report of recent analyst rating changes with freshness indicators", + }, + + "get_short_interest": { + "description": "Discover stocks with high short interest by scraping Finviz screener (squeeze candidates)", + "category": "discovery", + "agents": [], + "vendors": { + "finviz": get_finviz_short_interest, + }, + "vendor_priority": ["finviz"], + "parameters": { + "min_short_interest_pct": {"type": "float", "description": "Minimum short interest % of float", "default": 10.0}, + "min_days_to_cover": {"type": "float", "description": "Minimum days to cover ratio", "default": 2.0}, + "top_n": {"type": "int", "description": "Number of top results", "default": 20}, + }, + "returns": "str: Formatted report of discovered high short interest stocks with squeeze potential", + }, + "get_reddit_discussions": { "description": "Get Reddit discussions about a specific ticker", "category": "news_data", @@ -362,6 +443,23 @@ TOOL_REGISTRY: Dict[str, Dict[str, Any]] = { }, "returns": "str: Reddit discussions and sentiment", }, + + "get_options_activity": { + "description": "Get options activity for a specific ticker (volume, open interest, put/call ratios, unusual activity)", + "category": "discovery", + "agents": ["fundamentals"], + "vendors": { + "yfinance": get_yfinance_options_activity, + "tradier": get_tradier_unusual_options, + }, + "vendor_priority": ["yfinance"], + "parameters": { + "ticker": {"type": "str", "description": "Ticker symbol"}, + "num_expirations": {"type": "int", "description": "Number of nearest expiration dates to analyze", "default": 3}, + "curr_date": {"type": "str", "description": "Current date for reference", "default": None}, + }, + "returns": "str: Options activity report with volume, OI, P/C ratios, and unusual activity", + }, }