i just asked grok who is investing in AI and whether AI will kill retail trading

Discussion in 'Artificial Intelligence' started by mute9003, May 26, 2025 at 11:42 AM.

  1. Dismiss Notice
  1. mute9003

    mute9003

    was looking through XAI page and saw these companies investing in xai. im assuming they are investing in other companies as well..
    black rock investing in AI is rather concerning given their reputation.
    and obviously there are people here who are full of hopium and think that every corporation an island boi just tryin to make it...
    but if i was a maniac CEO of black rock hellbent on dominating and controlling world economy. and had maniac friends who also agree with me. i would 100% invest in ai systems that would allow me to not only keep track of the past but also use ai to predict the future. because what ai allows us to do is expand data points from the past massively. possibly enough to chart and predict future events with extreme precision.
    which means retail traders success rate would be absolutely controlled by ai.
    down to ai identifying trades of specific people based on their strategy. where they will be able use specific traders as promotional figures to suck in more retail noobs.

    but you can always ask the AI yourself and see what kind of information it gives you


    i personally belive that this was known by companies like black rock 10 or more years ago. and thats why the online trading platfroms were created because they are essentially casinos that dont have to be on reservation.
    and the big investor companies are the house. and house never loses.
    using those platforms to train AI systems to be able to adapt to market conditions instantly. and manipulate price with precision


    xAI’s progress is accelerating rapidly.


    We have closed our Series C funding round of $6 billion with participation from key investors including A16Z, Blackrock, Fidelity Management & Research Company, Kingdom Holdings, Lightspeed, MGX, Morgan Stanley, OIA, QIA, Sequoia Capital, Valor Equity Partners and Vy Capital, amongst others. Strategic investors NVIDIA and AMD also participated and continue to support xAI in rapidly scaling our infrastructure.
     
    vztrdr and MarkBrown like this.
  2. MarkBrown

    MarkBrown

    Claude 4

    Your perspective raises some thought-provoking points about the intersection of AI, financial markets, and institutional power. Let me address the various aspects of your concern:

    The Valid Concerns You're Raising
    1. Information Asymmetry You're absolutely right that AI dramatically amplifies the existing information advantage that large institutions have. When BlackRock manages $10 trillion and has access to:

    • Massive proprietary datasets
    • Real-time market flow information
    • Advanced AI systems
    • Teams of PhD quants
    ...they're essentially playing a different game than retail traders.

    2. Pattern Recognition at Scale Your point about AI being able to identify individual trading strategies is technically feasible. Machine learning models can indeed:

    • Cluster trading behaviors
    • Identify retail vs institutional flow
    • Predict likely retail responses to market events
    • Even potentially identify specific traders by their "fingerprint" of behaviors
    3. The Casino Analogy The comparison to casinos is apt in some ways. Payment for order flow (PFOF) means retail orders often go through market makers who can see and potentially trade against that flow. The "house edge" exists through:

    • Spread capture
    • Better execution technology
    • Information advantages
    • Ability to move markets
    The Nuanced Reality
    However, there are some counterpoints to consider:

    1. Market Complexity Even with AI, markets remain chaotic systems. While AI can identify patterns and probabilities, it cannot predict "future events with extreme precision" because:

    • Black swan events exist
    • Human behavior adapts
    • Regulatory changes occur
    • Geopolitical events are unpredictable
    2. Regulatory Constraints There are (imperfect) guardrails:

    • Market manipulation is illegal
    • Front-running is prohibited
    • Best execution requirements exist
    • RegNMS requires fair access to quotes
    3. AI Democratization While institutions have advantages, AI tools are becoming more accessible:

    • Retail traders now have access to AI analysis tools
    • Open source models are improving
    • Information flows more freely than ever
    The Strategic Reality
    You're probably right that firms like BlackRock have been thinking about this for 10+ years. They've likely:

    • Used early online trading data to train models
    • Developed sophisticated market microstructure models
    • Built systems to optimize their execution
    But this isn't necessarily a conspiracy - it's rational business strategy in a competitive market.

    What This Means for Retail Traders
    1. The game has changed - Buy-and-hold indexing might be safer than trying to day trade against AIs
    2. Information edges matter less - Time arbitrage and behavioral edges might matter more
    3. Market structure knowledge is crucial - Understanding how markets actually work is more important than ever
    The Bigger Picture
    Your concern about concentration of power through AI is valid beyond just trading:

    • AI + capital = unprecedented predictive power
    • This could affect not just markets but political and social systems
    • The question becomes: how do we ensure AI benefits are distributed?
    The fact that xAI is raising $6B from these exact players shows they understand the stakes. Whether this leads to dystopian control or just more efficient markets depends partly on:

    • Regulatory response
    • Open source AI development
    • Public awareness and pushback
    • How we collectively choose to structure these systems
    You're asking the right questions. The challenge is channeling this healthy skepticism into productive action rather than resignation.
     
    athlonmank8, furtunious and spy like this.
  3. mute9003

    mute9003

    It will make sense once those systems are running against you and you find that none of your strategies work because ai can adapt in real time
     
  4. wxytrader

    wxytrader

    That's been going on for years. Why do you think day trading is statistically unsustainable? You are being forced out of your positions because you are giving up your only advantage which is time.
     
  5. cesfx

    cesfx

    this thread is getting better and better :D
     
  6. spy

    spy

    They must learn to swim.

     
    cesfx and Drawdown Addict like this.
  7. Sergio123

    Sergio123

    They aren't concerned with dominating retail traders.


    If thats what you think will happen then the developers of Quantum supercomputing which can break every encryption would end up winning anyways.
     
    HawaiianIceberg likes this.
  8. 2rosy

    2rosy

    Is retail forbidden from using ai to trade?
     
    spy likes this.
  9. vztrdr

    vztrdr

    Eventually yes. Last year:

     
  10. MarkBrown

    MarkBrown

    so i asked claude 4 to make me a system that is profitable long only and get the data from yahoo intc and it built and tested it for me here is the results.

    written in c#


    [​IMG]

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using PowerLanguage.Function;

    namespace PowerLanguage.Strategy
    {
    [IOGMode(IOGMode.Enabled)]
    public class ctest1 : SignalObject
    {
    #region Strategy Parameters

    [Input]
    public int LookbackWindow { get; set; }

    [Input]
    public double SignalThreshold { get; set; }

    [Input]
    public int PositionSize { get; set; }

    [Input]
    public double TransactionCost { get; set; }

    [Input]
    public double RiskFactor { get; set; }

    [Input]
    public bool EnableQuantum { get; set; }

    [Input]
    public bool EnableBacterial { get; set; }

    [Input]
    public bool EnableFractional { get; set; }

    #endregion

    #region Private Variables

    private List<double> priceHistory;
    private List<double> signalHistory;
    private List<double> velocityHistory;
    private List<double> accelerationHistory;
    private List<double> jerkHistory;
    private List<double> snapHistory;

    private double currentCompositeSignal;
    private double previousCompositeSignal;
    private int currentPosition;

    // Performance tracking
    private double totalPnL;
    private double maxDrawdown;
    private double peakEquity;
    private int totalTrades;
    private int winningTrades;

    // Risk management
    private double shortTermVol;
    private double longTermVol;
    private double currentDrawdown;

    // Orders interface - separate entry and exit orders for frequent trading
    private IOrderMarket m_BuyOrder;
    private IOrderMarket m_SellOrder;
    private IOrderMarket m_ExitLongOrder;
    private IOrderMarket m_ExitShortOrder;

    // Position tracking for frequent trading
    private int barsInPosition;
    private int maxHoldingPeriod;
    private int minHoldingPeriod;

    #endregion

    #region Constructor

    public ctest1(object _ctx) : base(_ctx)
    {
    // AGGRESSIVE SETTINGS FOR GUARANTEED LONG/SHORT TRADES
    LookbackWindow = 10; // Very short for quick mean reversion
    SignalThreshold = 0.005; // Extremely sensitive threshold
    PositionSize = 1;
    TransactionCost = 0.001;
    RiskFactor = 1.0;
    EnableQuantum = false; // Disable complex signals initially
    EnableBacterial = false; // Use only simple mean reversion
    EnableFractional = false;

    // Trading frequency controls
    maxHoldingPeriod = 12; // Shorter holding period
    minHoldingPeriod = 3; // Shorter minimum hold
    }

    #endregion

    #region Initialization

    protected override void Create()
    {
    // Initialize collections
    priceHistory = new List<double>();
    signalHistory = new List<double>();
    velocityHistory = new List<double>();
    accelerationHistory = new List<double>();
    jerkHistory = new List<double>();
    snapHistory = new List<double>();

    // Initialize variables
    currentCompositeSignal = 0;
    previousCompositeSignal = 0;
    currentPosition = 0;
    totalPnL = 0;
    maxDrawdown = 0;
    peakEquity = 0;
    totalTrades = 0;
    winningTrades = 0;

    // Initialize order interface - all 4 order types for active trading
    m_BuyOrder = OrderCreator.MarketNextBar(new SOrderParameters(Contracts.Default, EOrderAction.Buy));
    m_SellOrder = OrderCreator.MarketNextBar(new SOrderParameters(Contracts.Default, EOrderAction.SellShort));
    m_ExitLongOrder = OrderCreator.MarketNextBar(new SOrderParameters(Contracts.Default, EOrderAction.Sell));
    m_ExitShortOrder = OrderCreator.MarketNextBar(new SOrderParameters(Contracts.Default, EOrderAction.BuyToCover));

    // Initialize position tracking
    barsInPosition = 0;
    }

    #endregion

    #region Main Strategy Logic

    protected override void CalcBar()
    {
    // Update price history
    UpdatePriceHistory();

    // Need minimum bars for calculations - optimized for INTC
    if (priceHistory.Count < 5) // Very low minimum for volatile stock
    return;

    // Calculate velocity derivatives
    CalculateVelocityDerivatives();

    // Generate composite signal
    currentCompositeSignal = GenerateCompositeSignal();

    // Apply risk management
    double riskAdjustedSignal = ApplyRiskManagement(currentCompositeSignal);

    // Generate trading decision
    int tradingSignal = GenerateTradingDecision(riskAdjustedSignal);

    // Execute trades
    ExecuteTrade(tradingSignal);

    // Update performance metrics
    UpdatePerformanceMetrics();

    // Store signal for next bar
    previousCompositeSignal = currentCompositeSignal;
    signalHistory.Add(currentCompositeSignal);

    // Maintain history size
    MaintainHistorySize();

    // Output debug information
    OutputDebugInfo(tradingSignal, riskAdjustedSignal);
    }

    #endregion

    #region Core Algorithm Components

    private void UpdatePriceHistory()
    {
    priceHistory.Add(Bars.Close[0]);

    // Maintain maximum history size
    if (priceHistory.Count > LookbackWindow * 2)
    {
    priceHistory.RemoveAt(0);
    }
    }

    private void CalculateVelocityDerivatives()
    {
    if (priceHistory.Count < 5) return;

    var recentPrices = TakeLast(priceHistory, Math.Min(priceHistory.Count, LookbackWindow));

    // Calculate velocity (1st derivative)
    var velocity = CalculateGradient(recentPrices);
    if (velocity.Count > 0)
    velocityHistory.Add(velocity[velocity.Count - 1]);

    // Calculate acceleration (2nd derivative)
    if (velocityHistory.Count >= 2)
    {
    var acceleration = CalculateGradient(TakeLast(velocityHistory, Math.Min(velocityHistory.Count, 50)));
    if (acceleration.Count > 0)
    accelerationHistory.Add(acceleration[acceleration.Count - 1]);
    }

    // Calculate jerk (3rd derivative)
    if (accelerationHistory.Count >= 2)
    {
    var jerk = CalculateGradient(TakeLast(accelerationHistory, Math.Min(accelerationHistory.Count, 30)));
    if (jerk.Count > 0)
    jerkHistory.Add(jerk[jerk.Count - 1]);
    }

    // Calculate snap (4th derivative)
    if (jerkHistory.Count >= 2)
    {
    var snap = CalculateGradient(TakeLast(jerkHistory, Math.Min(jerkHistory.Count, 20)));
    if (snap.Count > 0)
    snapHistory.Add(snap[snap.Count - 1]);
    }
    }

    private List<double> CalculateGradient(List<double> data)
    {
    var gradient = new List<double>();

    if (data.Count < 2) return gradient;

    // Forward difference for first point
    gradient.Add(data[1] - data[0]);

    // Central difference for middle points
    for (int i = 1; i < data.Count - 1; i++)
    {
    gradient.Add((data[i + 1] - data[i - 1]) / 2.0);
    }

    // Backward difference for last point
    gradient.Add(data[data.Count - 1] - data[data.Count - 2]);

    return gradient;
    }

    private double GenerateCompositeSignal()
    {
    var recentPrices = TakeLast(priceHistory, Math.Min(priceHistory.Count, LookbackWindow));

    if (recentPrices.Count < 5) return 0;

    // SIMPLE MEAN REVERSION SIGNAL - This will fix the long/short imbalance
    double currentPrice = recentPrices[recentPrices.Count - 1];
    double meanPrice = Average(recentPrices);

    // Primary mean reversion signal:
    // POSITIVE when price > mean (should SHORT)
    // NEGATIVE when price < mean (should LONG)
    double primarySignal = (currentPrice - meanPrice) / meanPrice;

    // Scale the signal to make it more sensitive
    primarySignal = primarySignal * 10; // Amplify for better sensitivity

    // Debug output to see signal components
    if (Bars.CurrentBar % 5 == 0)
    {
    Output.WriteLine($"SIGNAL DEBUG - Price: {currentPrice:F2}, Mean: {meanPrice:F2}, " +
    $"Primary: {primarySignal:F4}");
    }

    return primarySignal;
    }

    #endregion

    #region Risk Management

    private double ApplyRiskManagement(double signal)
    {
    // Minimal risk management for INTC - just pass through the signal
    return signal * RiskFactor;
    }

    #endregion

    #region Trading Execution

    private int GenerateTradingDecision(double riskAdjustedSignal)
    {
    // FORCE EXIT after maximum holding period
    if (currentPosition != 0 && barsInPosition >= maxHoldingPeriod)
    {
    Output.WriteLine($"FORCED EXIT after {barsInPosition} days in position");
    return currentPosition > 0 ? -2 : 2; // Force exit long or short
    }

    // FORCE EXIT if signal reverses strongly after minimum hold period
    if (currentPosition != 0 && barsInPosition >= minHoldingPeriod)
    {
    if (currentPosition > 0 && riskAdjustedSignal > SignalThreshold * 2) // Long position, strong sell signal
    {
    Output.WriteLine($"SIGNAL REVERSAL EXIT after {barsInPosition} days - Long to Exit");
    return -2; // Exit long
    }
    if (currentPosition < 0 && riskAdjustedSignal < -SignalThreshold * 2) // Short position, strong buy signal
    {
    Output.WriteLine($"SIGNAL REVERSAL EXIT after {barsInPosition} days - Short to Exit");
    return 2; // Exit short
    }
    }

    // NEW ENTRY SIGNALS (only when flat)
    if (currentPosition == 0)
    {
    // MEAN REVERSION LOGIC:
    // Buy when signal is NEGATIVE (price below mean - expect reversion UP)
    // Sell when signal is POSITIVE (price above mean - expect reversion DOWN)

    if (riskAdjustedSignal < -SignalThreshold)
    {
    Output.WriteLine($"NEW LONG ENTRY - Price Below Mean, Signal: {riskAdjustedSignal:F4}");
    return 1; // Long entry - buy the dip
    }
    else if (riskAdjustedSignal > SignalThreshold)
    {
    Output.WriteLine($"NEW SHORT ENTRY - Price Above Mean, Signal: {riskAdjustedSignal:F4}");
    return -1; // Short entry - sell the spike
    }
    }

    return 0; // Hold current position
    }

    private void ExecuteTrade(int tradingSignal)
    {
    // Update bars in position counter
    if (currentPosition != 0)
    {
    barsInPosition++;
    }

    // Execute based on trading signal
    switch (tradingSignal)
    {
    case 1: // Buy (Long Entry)
    if (currentPosition <= 0)
    {
    m_BuyOrder.Send();
    currentPosition = 1;
    barsInPosition = 0; // Reset counter
    totalTrades++;
    Output.WriteLine($"*** LONG ENTRY at Bar {Bars.CurrentBar}, Price: {Bars.Close[0]:F2} ***");
    }
    break;

    case -1: // Sell Short (Short Entry)
    if (currentPosition >= 0)
    {
    m_SellOrder.Send();
    currentPosition = -1;
    barsInPosition = 0; // Reset counter
    totalTrades++;
    Output.WriteLine($"*** SHORT ENTRY at Bar {Bars.CurrentBar}, Price: {Bars.Close[0]:F2} ***");
    }
    break;

    case -2: // Exit Long Position
    if (currentPosition > 0)
    {
    m_ExitLongOrder.Send();
    Output.WriteLine($"*** EXIT LONG at Bar {Bars.CurrentBar}, Price: {Bars.Close[0]:F2}, Held {barsInPosition} days ***");
    currentPosition = 0;
    barsInPosition = 0;
    totalTrades++;
    }
    break;

    case 2: // Exit Short Position
    if (currentPosition < 0)
    {
    m_ExitShortOrder.Send();
    Output.WriteLine($"*** EXIT SHORT at Bar {Bars.CurrentBar}, Price: {Bars.Close[0]:F2}, Held {barsInPosition} days ***");
    currentPosition = 0;
    barsInPosition = 0;
    totalTrades++;
    }
    break;
    }
    }

    #endregion

    #region Performance Tracking

    private void UpdatePerformanceMetrics()
    {
    // Basic performance tracking
    if (Bars.CurrentBar > 1)
    {
    double currentPrice = Bars.Close[0];
    double previousPrice = Bars.Close[1];

    // Simple equity calculation
    double priceChange = currentPrice - previousPrice;

    if (priceChange > peakEquity)
    {
    peakEquity = priceChange;
    }

    double drawdown = peakEquity > 0 ? (priceChange - peakEquity) / peakEquity : 0;
    if (drawdown < maxDrawdown)
    {
    maxDrawdown = drawdown;
    }
    }
    }

    #endregion

    #region Utility Functions

    private double CalculateStandardDeviation(List<double> values)
    {
    if (values.Count < 2) return 0;

    double mean = Average(values);
    double sumSquares = 0;
    for (int i = 0; i < values.Count; i++)
    {
    sumSquares += Math.Pow(values - mean, 2);
    }
    return Math.Sqrt(sumSquares / (values.Count - 1));
    }

    private double Average(List<double> values)
    {
    if (values.Count == 0) return 0;

    double sum = 0;
    for (int i = 0; i < values.Count; i++)
    {
    sum += values;
    }
    return sum / values.Count;
    }

    private double MaxValue(List<double> values)
    {
    if (values.Count == 0) return 0;

    double max = values[0];
    for (int i = 1; i < values.Count; i++)
    {
    if (values > max)
    max = values;
    }
    return max;
    }

    private double MinValue(List<double> values)
    {
    if (values.Count == 0) return 0;

    double min = values[0];
    for (int i = 1; i < values.Count; i++)
    {
    if (values < min)
    min = values;
    }
    return min;
    }

    private List<double> TakeLast(List<double> source, int count)
    {
    if (source.Count <= count)
    return new List<double>(source);

    var result = new List<double>();
    for (int i = source.Count - count; i < source.Count; i++)
    {
    result.Add(source);
    }
    return result;
    }

    private void MaintainHistorySize()
    {
    const int maxHistorySize = 100; // Reduced size

    if (velocityHistory.Count > maxHistorySize)
    velocityHistory.RemoveAt(0);

    if (accelerationHistory.Count > maxHistorySize)
    accelerationHistory.RemoveAt(0);

    if (jerkHistory.Count > maxHistorySize)
    jerkHistory.RemoveAt(0);

    if (snapHistory.Count > maxHistorySize)
    snapHistory.RemoveAt(0);

    if (signalHistory.Count > maxHistorySize)
    signalHistory.RemoveAt(0);
    }

    private void OutputDebugInfo(int tradingSignal, double riskAdjustedSignal)
    {
    // Output EVERY bar to debug the signal issue
    if (Bars.CurrentBar % 1 == 0) // Every single bar
    {
    string positionStatus = currentPosition > 0 ? $"LONG ({barsInPosition} days)" :
    currentPosition < 0 ? $"SHORT ({barsInPosition} days)" : "FLAT";

    double currentPrice = Bars.Close[0];
    double meanPrice = priceHistory.Count > 5 ? Average(TakeLast(priceHistory, Math.Min(LookbackWindow, priceHistory.Count))) : currentPrice;
    string priceVsMean = currentPrice > meanPrice ? "ABOVE" : "BELOW";
    double priceDiff = ((currentPrice - meanPrice) / meanPrice) * 100;

    Output.WriteLine($"Bar {Bars.CurrentBar}: Price {currentPrice:F2} ({priceVsMean} mean by {priceDiff:F2}%), " +
    $"Signal {riskAdjustedSignal:F6}, Threshold ±{SignalThreshold:F6}, {GetActionName(tradingSignal)}, {positionStatus}");

    // Show exactly what should happen
    if (currentPosition == 0)
    {
    if (riskAdjustedSignal < -SignalThreshold)
    {
    Output.WriteLine($" *** LONG TRIGGER: Signal {riskAdjustedSignal:F6} < -{SignalThreshold:F6} ***");
    }
    else if (riskAdjustedSignal > SignalThreshold)
    {
    Output.WriteLine($" *** SHORT TRIGGER: Signal {riskAdjustedSignal:F6} > {SignalThreshold:F6} ***");
    }
    else
    {
    Output.WriteLine($" No trigger: Signal {riskAdjustedSignal:F6} between ±{SignalThreshold:F6}");
    }
    }
    }
    }

    private string GetActionName(int signal)
    {
    switch (signal)
    {
    case 1: return "LONG ENTRY";
    case -1: return "SHORT ENTRY";
    case 2: return "EXIT SHORT";
    case -2: return "EXIT LONG";
    default: return "HOLD";
    }
    }

    #endregion
    }
    }
     
    Last edited: May 26, 2025 at 2:43 PM
    Drawdown Addict and cesfx like this.