<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Éverton Mendes</title>
    <description>The latest articles on DEV Community by Éverton Mendes (@evertonmendes73).</description>
    <link>https://dev.to/evertonmendes73</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4091554%2Fdf5f452e-8da9-4b92-9be1-374ce943a6dd.png</url>
      <title>DEV Community: Éverton Mendes</title>
      <link>https://dev.to/evertonmendes73</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/evertonmendes73"/>
    <language>en</language>
    <item>
      <title>Building an Autonomous Quant Agent with Gemini 3.5, BigQuery TimesFM, and Gemma 2 for 2026 SWIFT CBPR+ Settlement</title>
      <dc:creator>Éverton Mendes</dc:creator>
      <pubDate>Mon, 24 Aug 2026 04:54:21 +0000</pubDate>
      <link>https://dev.to/evertonmendes73/building-an-autonomous-quant-agent-with-gemini-35-bigquery-timesfm-and-gemma-2-for-2026-swift-1jno</link>
      <guid>https://dev.to/evertonmendes73/building-an-autonomous-quant-agent-with-gemini-35-bigquery-timesfm-and-gemma-2-for-2026-swift-1jno</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Mandatory Hackathon Disclaimer:&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;em&gt;I created this piece of content for the purpose of entering the All Things Agentic Hackathon.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Executive Summary &amp;amp; System Overview
&lt;/h2&gt;

&lt;p&gt;In cross-border quantitative finance, capturing arbitrage between US-listed American Depositary Receipts (ADRs) and foreign ordinary shares requires ultra-low latency execution. However, institutional quants face severe back-office operational bottlenecks:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Evaluating execution friction (slippage, borrow costs, custody fees, and withholding tax risk).&lt;/li&gt;
&lt;li&gt;Pricing currency hedges using Covered Interest Parity: F = S × (1 + r_d) / (1 + r_f).&lt;/li&gt;
&lt;li&gt;Complying with the impending &lt;strong&gt;November 14, 2026 SWIFT CBPR+ mandate&lt;/strong&gt;, which strictly rejects cross-border payment instructions containing unstructured postal addresses.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To solve this $100M operational friction, we built &lt;strong&gt;Dual-Listing ADR / Ordinary Stock Arbitrage &amp;amp; SWIFT Converter&lt;/strong&gt;—an autonomous, event-driven quantitative AI agent designed for the &lt;strong&gt;Taskmaster Track&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  High-Level Architecture &amp;amp; Tech Stack
&lt;/h2&gt;

&lt;p&gt;Our system runs asynchronously in the background on Google Cloud Platform without human hand-holding.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4d6axmsm6gkzz0xwsje6.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4d6axmsm6gkzz0xwsje6.jpg" alt=" " width="800" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Component&lt;/th&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;th&gt;Architectural Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Reasoning Engine&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Gemini 3.5 Flash (&lt;code&gt;gemini-3.5-flash&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;High-speed financial reasoning and 30-min Context Caching for ISO 20022 schemas.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Agent Framework&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Google ADK (&lt;code&gt;google-adk&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;Multi-step background orchestration and tool binding.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Active Defense&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Google Cloud Model Armor&lt;/td&gt;
&lt;td&gt;Proxy pattern scanning incoming payloads for prompt injection and PII leaks.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Syntax Judge&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Gemma 2 9B IT (&lt;code&gt;google/gemma-2-9b-it&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;Inline LLM judge enforcing 2026 SWIFT CBPR+ XML compliance.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Anomaly Engine&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;BigQuery ML (&lt;code&gt;AI.DETECT_ANOMALIES&lt;/code&gt; / TimesFM)&lt;/td&gt;
&lt;td&gt;Zero-training statistical time-series anomaly detection.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Compute&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Google Cloud Run (&lt;code&gt;quant-agent-executor&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;Serverless microservice scaling to zero (&lt;code&gt;min_instances = 0&lt;/code&gt;) to preserve cloud credits.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Observability&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;OpenTelemetry OTLP &amp;amp; Cloud Trace&lt;/td&gt;
&lt;td&gt;End-to-end reasoning chain trace visualization in Google Cloud Console.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Deep-Dive: Core Engineering Components
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Zero-Training Signal Detection via BigQuery TimesFM
&lt;/h3&gt;

&lt;p&gt;Rather than relying on brittle, fixed lookback windows or static Z-scores, we utilize Google's pre-trained &lt;strong&gt;TimesFM&lt;/strong&gt; foundation model in BigQuery ML to detect true statistical spread anomalies:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;AI&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;DETECT_ANOMALIES&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;event_timestamp&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;adr_price_usd&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;data_col&lt;/span&gt; 
    &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="nv"&gt;`quantapp-1721025819770.market_spreads_prod.v_flattened_spreads`&lt;/span&gt; 
    &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;adr_ticker&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'BABA'&lt;/span&gt;
  &lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="n"&gt;STRUCT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'event_timestamp'&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;time_col&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'data_col'&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;data_col&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;95&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;anomaly_prob_threshold&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;is_anomaly&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;TRUE&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Zero-Trust Boundary via Google Model Armor Proxy
&lt;/h3&gt;

&lt;p&gt;To protect our financial tools from prompt injection via unverified broker notes, incoming Eventarc webhooks pass through an inline security proxy:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;ModelArmorSecurityProxy&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="sh"&gt;"""&lt;/span&gt;&lt;span class="s"&gt;Proxy Pattern: Scans payloads for prompt injection and PII leakage.&lt;/span&gt;&lt;span class="sh"&gt;"""&lt;/span&gt;
    &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;validate_payload&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Dict&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Any&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="c1"&gt;# Intercepts payload and consults Google Cloud Model Armor
&lt;/span&gt;        &lt;span class="n"&gt;is_clean&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;model_armor_client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;scan&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;is_clean&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;logger&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;critical&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SECURITY ALERT: Payload rejected by Model Armor guardrails.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Institutional Financial Reasoning Tools
&lt;/h3&gt;

&lt;p&gt;Our agent is equipped with modular tools that evaluate execution viability:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic TCA Tool:&lt;/strong&gt; Calculates &lt;em&gt;True Net Spread&lt;/em&gt; by subtracting slippage, borrow costs, creation/cancellation fees ($0.05/share), and cablewire charges from the ratio-adjusted spread.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WHT Risk Checker:&lt;/strong&gt; Overrides positive spreads and issues an autonomous "No-Go" halt if an ex-dividend date is imminent (≤ 21 days) with a high Withholding Tax rate (≥ 5%).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Covered Interest Parity (CIP):&lt;/strong&gt; Prices forward exchange contracts &lt;strong&gt;F = S × (1 + r_d) / (1 + r_f)&lt;/strong&gt; to hedge secondary currency legs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Closed-Loop Self-Healing via Gemma 2
&lt;/h3&gt;

&lt;p&gt;Before dispatching SWIFT instructions, Gemini 3.5 Flash passes the generated XML payload to &lt;strong&gt;Gemma 2 9B IT&lt;/strong&gt;. Gemma validates that all postal addresses contain mandatory &lt;code&gt;&amp;lt;TwnNm&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;Ctry&amp;gt;&lt;/code&gt; elements under &lt;code&gt;&amp;lt;PstlAdr&amp;gt;&lt;/code&gt;. If Gemma flags a structural error, Gemini 3.5 Flash autonomously restructures the XML payload and resubmits it until validated.&lt;/p&gt;




&lt;h2&gt;
  
  
  Key Learnings &amp;amp; Conclusion
&lt;/h2&gt;

&lt;p&gt;Building this agent demonstrated the power of decoupling data signals, security boundaries, and LLM reasoning. Utilizing &lt;strong&gt;Gemini 3.5 Flash's Context Caching&lt;/strong&gt; allowed us to store massive ISO 20022 schemas in memory, achieving near-zero latency while keeping cloud costs minimal.&lt;/p&gt;

&lt;p&gt;Check out our full source code, Terraform configurations, and spin-up instructions on GitHub:&lt;/p&gt;

&lt;p&gt;🔗 &lt;strong&gt;Repository:&lt;/strong&gt; &lt;a href="https://github.com/evertonmendes/Dual-Listing-ADR-Ordinary-Stock-Arbitrage-SWIFT-Converter" rel="noopener noreferrer"&gt;https://github.com/evertonmendes/Dual-Listing-ADR-Ordinary-Stock-Arbitrage-SWIFT-Converter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>allthingsagentichackathon</category>
      <category>gemini</category>
      <category>gcp</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
