PROPORTAȚIA AUR/ARGINT: GenAI cu agenți Quant pe Microsoft AI Foundry

URMĂREȘTE-NE
16,065FaniÎmi place
1,142CititoriConectați-vă

(Acest articol a fost publicat pentru prima dată pe DataGeeekși cu amabilitate a contribuit la R-bloggeri). (Puteți raporta problema legată de conținutul acestei pagini aici)


Doriți să vă distribuiți conținutul pe R-bloggeri? dați clic aici dacă aveți un blog, sau aici dacă nu aveți.

1. Introducere: Avantajul strategic al finanțelor agentice

În peisajul contemporan al finanțelor cantitative, blocajul nu mai este disponibilitatea datelor, ci viteza de generare a informațiilor. Folosind Microsoft AI Foundry ecosistem, ne-am mutat dincolo de scripturile statice în domeniul Agenti financiari autonomi. Acest articol explorează modul în care un agent specializat poate naviga prin volatilitatea metalelor prețioase analizând raportul aur/argint cu precizie de înaltă performanță.

2. Infrastructură: implementare model pe Microsoft AI Foundry

Inteligența din spatele acestei analize nu este un scenariu local, ci un instanță model implementată pe Microsoft AI Foundry. Noi folosim GPT-4o model, implementat ca un serviciu web scalabil în mediul Foundry.

  • Securitate punct final: Prin utilizarea serviciului Azure OpenAI în cadrul AI Foundry, ne asigurăm că interogările și datele financiare rămân într-un perimetru securizat, de nivel enterprise.
  • Logica agentică: „Agentul” este mai mult decât un model; este o entitate programată cu un specific Prompt de sistem care își definește personajul ca cercetător cantitativ. Acest lucru permite modelului să „raționeze” prin pașii necesari: de la încărcarea bibliotecii până la îmbinarea datelor și vizualizarea finală.

3. Podul Tehnic: Integrarea Python-R

Una dintre cele mai puternice caracteristici ale agentului nostru AI Foundry este capacitatea sa multilingvă. Reduce decalajul dintre Python și R folosind rpy2 bibliotecă, creând o conductă de cercetare de înaltă performanță.

Ecosistemul R în joc:

  • tidyquant & timetk: Aceste pachete sunt motorul analizei noastre de serie de timp. tidyquant se ocupă de preluarea fără întreruperi a GC=F şi SI=F date, în timp ce timetk gestionează sarcina complexă de trasare cu algoritmi de netezire încorporați.
  • dplyr & lubridate: Esențial pentru manipularea „ordonată” a datelor, permițând Agentului să funcționeze inner_join operații și filtrare bazată pe dată cu precizie chirurgicală.

4. Metodologie: Îmblanzirea zgomotului cu precizie vizuală

Pentru a extrage tendințele acționabile, Agentul este instruit să aplice a Algoritmul de netezire LOESS. Prin setare strictă .line_size = 1.5 şi .smooth_size = 1.5ne asigurăm că linia de tendință este suficient de îndrăzneață pentru a fi obiectivul principal pentru analiști, „îmblânzind” efectiv volatilitatea zilnică a prețurilor.

5. Concluzie: Scaling Cantitative Research

Sinergia dintre Microsoft AI Foundry, LLM-uri desfășurateși specializate pachete R reprezintă viitorul cercetării financiare. Am înlocuit discuția manuală a datelor cu un agent autonom, standardizat, care poate fi scalat în mii de perechi de active diferite cu o singură comandă.

Conexiunea ABI (Conectarea Python la R în VS Code)

Pentru ca scriptul să ruleze local în Cod VStrebuie să stabilim un robust Interfață binară a aplicației (ABI) conexiune. Acest lucru este gestionat de rpy2 bibliotecă, care servește ca strat de traducere între Python și interpretul R.

  • Sincronizare: Scriptul folosește a localconverter pentru a transforma tipurile de date Python în obiecte R în timp real.
  • Sincronizarea mediului: Înainte ca codul agentului să fie executat, scriptul sincronizează automat directorul de lucru (setwd) astfel încât fișierele generate de R (cum ar fi ratio_plot.png) sunt imediat accesibile mediului Python pentru randare.
import os

# Force rpy2 to use ABI mode to avoid the Windows CFFI conflict
os.environ('RPY2_CFFI_MODE') = 'ABI'

import rpy2.robjects as robjects
from rpy2.robjects.packages import importr
print("Interface initialized in ABI mode.")

Scriptul de agent integrat:

import os
import httpx
from openai import AzureOpenAI
import rpy2.robjects as robjects
from rpy2.robjects import pandas2ri
from rpy2.robjects.conversion import localconverter
from IPython.display import Image, display

#Microsoft AI Foundry - Azure OpenAI Connection
client = AzureOpenAI(
    api_version="2024-12-01-preview",
    azure_endpoint="AZURE_OPENAI_ENDPOINT",
    api_key="AZURE_OPENAI_KEY", 
    http_client=httpx.Client(verify=False, trust_env=False)
)

def run_updated_agent(user_request):
    system_instructions = (
        "You are a Quantitative Researcher. MANDATORY: All output, comments, and labels in English. "
        "Strict Operational Guidelines:n"
        "1. Libraries: library(tidyquant), library(timetk), library(lubridate), library(dplyr), library(ggplot2).n"
        "2. Analysis: Fetch GC=F and SI=F for 3 years, merge via inner_join, and calculate 'ratio'.n"
        "3. Visualization: Use timetk::plot_time_series with .interactive = FALSE and .title = "Gold/Silver Ratio".n"
        "4. Precision: Set .line_size = 2 and ALWAYS set .smooth_size = 2 for the smoothing line.n"
        "5. Set title font face and axis texts font face to 'bold', and size to 16 with theme() function.n"
        "6. EXPORT: Save using 'ggsave("ratio_plot.png", width = 10, height = 6)'.n"
        "7. Output ONLY raw R code."
    )

    response = client.chat.completions.create(
        model="gpt-4o",
        messages=(
            {"role": "system", "content": system_instructions},
            {"role": "user", "content": user_request}
        )
    )
    
    # Cleaning any markdown or headers to get raw code
    agent_code = response.choices(0).message.content.strip()
    if agent_code.startswith("```"):
        agent_code = "n".join(agent_code.split("n")(1:-1))
    
    print("-" * 40)
    print(agent_code)
    print("-" * 40)
    
    try:
        with localconverter(robjects.default_converter + pandas2ri.converter):
            # Synchronize working directory
            robjects.r(f'setwd("{os.getcwd().replace("\", "/")}")')
            robjects.r(agent_code)
            
            if os.path.exists("ratio_plot.png"):
                display(Image(filename="ratio_plot.png"))
    except Exception as e:
        print(f"Agent Error: {e}")

# Execution
run_updated_agent("Plot the Gold/Silver ratio for the last 3 years with a smooth line.")

Dominic Botezariu
Dominic Botezariuhttps://www.noobz.ro/
Creator de site și redactor-șef.

Cele mai noi știri

Pe același subiect

LĂSAȚI UN MESAJ

Vă rugăm să introduceți comentariul dvs.!
Introduceți aici numele dvs.