(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.tidyquantse ocupă de preluarea fără întreruperi aGC=FşiSI=Fdate, în timp cetimetkgestionează sarcina complexă de trasare cu algoritmi de netezire încorporați.dplyr&lubridate: Esențial pentru manipularea „ordonată” a datelor, permițând Agentului să funcționezeinner_joinoperaț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
localconverterpentru 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 firatio_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.")

