diff --git a/.env.sweep.example b/.env.sweep.example index 680f9e7..0ec43e4 100644 --- a/.env.sweep.example +++ b/.env.sweep.example @@ -19,4 +19,6 @@ GITHUB_TOKEN= # Optional local benchmark defaults. # LOCAL_BENCHMARK_ARGS=--tiers static,surge,linear,qtable,ppo --alpha-values 0.0,0.3 --episodes 3 --total-timesteps 3000 --max-steps 40 --device cpu +# SIMPLE_BENCHMARK_ARGS=--tiers qtable,ppo,dqn,a2c --alpha-values 0.0,0.15,0.3,0.45,0.6 --episodes 8 --total-timesteps 8000 --max-steps 40 --device cpu +# PHANTOM_BENCHMARK_COMPARE_ROBUST=1 # BENCHMARK_AGENT_ARGS=--tiers static,surge,linear,qtable,ppo --alpha-values 0.0,0.3,0.6 --episodes 5 diff --git a/Makefile b/Makefile index 6e0db89..ab12cce 100644 --- a/Makefile +++ b/Makefile @@ -17,6 +17,7 @@ WANDB_PROJECT ?= capstone SWEEP_ID ?= LOCAL_TRAIN_ARGS ?= --algo ppo --total-timesteps 50000 LOCAL_BENCHMARK_ARGS ?= --tiers static,surge,linear,qtable,ppo --alpha-values 0.0,0.3 --episodes 3 --total-timesteps 3000 --max-steps 40 --device cpu +SIMPLE_BENCHMARK_ARGS ?= --tiers qtable,ppo,dqn,a2c --alpha-values 0.0,0.15,0.3,0.45,0.6 --episodes 8 --total-timesteps 8000 --max-steps 40 --device cpu BENCHMARK_AGENT_ARGS ?= AGENT_COUNT ?= 0 @@ -34,7 +35,7 @@ SWEEP_ENV_LOAD = set -a; [ -f "$(SWEEP_ENV_FILE)" ] && . "$(SWEEP_ENV_FILE)" || .PHONY: help help: - @echo "pdf.build pdf.watch pdf.clean pdf.genpop pdf.genpop.watch | test.backend test.e2e test.all | web.dev | install | train | benchmark | benchmark.agent | train.agent | train.bootstrap | stats.lines" + @echo "pdf.build pdf.watch pdf.clean pdf.genpop pdf.genpop.watch | test.backend test.e2e test.all | web.dev | install | train | benchmark | benchmark.simple | benchmark.agent | train.agent | train.bootstrap | stats.lines" @echo "backend.server backend.provider backend.worker | platform.up platform.down platform.logs | docker.train.publish" @echo "" @echo "Build general public version:" @@ -46,6 +47,9 @@ help: @echo "Local benchmark run:" @echo " make benchmark LOCAL_BENCHMARK_ARGS='--tiers static,surge,linear --alpha-values 0.0,0.3 --episodes 3 --no-wandb'" @echo "" + @echo "Simple benchmark run (.env.sweep defaults, robust+no_robust compare by default):" + @echo " make benchmark.simple" + @echo "" @echo "Local sweep agent from this repo:" @echo " make train.agent SWEEP_ID=entity/project/id AGENT_COUNT=5" @echo "" @@ -109,6 +113,10 @@ train: benchmark: @WANDB_ENTITY="$(WANDB_ENTITY)" WANDB_PROJECT="$(WANDB_PROJECT)" SWEEP_ENV_FILE="$(SWEEP_ENV_FILE)" LOCAL_BENCHMARK_ARGS="$(LOCAL_BENCHMARK_ARGS)" $(NX) run research:benchmark +.PHONY: benchmark.simple +benchmark.simple: + @WANDB_ENTITY="$(WANDB_ENTITY)" WANDB_PROJECT="$(WANDB_PROJECT)" SWEEP_ENV_FILE="$(SWEEP_ENV_FILE)" SIMPLE_BENCHMARK_ARGS="$(SIMPLE_BENCHMARK_ARGS)" PHANTOM_BENCHMARK_COMPARE_ROBUST="$(PHANTOM_BENCHMARK_COMPARE_ROBUST)" $(NX) run research:benchmark-simple + .PHONY: benchmark.agent benchmark.agent: @WANDB_ENTITY="$(WANDB_ENTITY)" WANDB_PROJECT="$(WANDB_PROJECT)" SWEEP_ENV_FILE="$(SWEEP_ENV_FILE)" SWEEP_ID="$(SWEEP_ID)" AGENT_COUNT="$(AGENT_COUNT)" BENCHMARK_AGENT_ARGS="$(BENCHMARK_AGENT_ARGS)" $(NX) run research:benchmark-agent diff --git a/docs/index.html b/docs/index.html index a3f587b..872f461 100644 --- a/docs/index.html +++ b/docs/index.html @@ -17,8 +17,8 @@ - - + + @@ -30,17 +30,12 @@ - - - - - - - - - - - + + + + + + @@ -103,50 +98,42 @@ { "@context": "https://schema.org", "@type": "ScholarlyArticle", - "headline": "PAPER_TITLE", - "description": "BRIEF_DESCRIPTION_OF_YOUR_RESEARCH_CONTRIBUTION_AND_FINDINGS", + "headline": "PHANTOM: Pricing Heuristics Against Non-human Transaction Orchestration Mechanisms", + "description": "Research on preserving dynamic pricing integrity under LLM-mediated reconnaissance and purchasing behavior.", "author": [ { "@type": "Person", - "name": "FIRST_AUTHOR_NAME", + "name": "Daniel Rösel", "affiliation": { "@type": "Organization", - "name": "INSTITUTION_NAME" - } - }, - { - "@type": "Person", - "name": "SECOND_AUTHOR_NAME", - "affiliation": { - "@type": "Organization", - "name": "INSTITUTION_NAME" + "name": "IE University" } } ], - "datePublished": "2024-01-01", + "datePublished": "2025-01-01", "publisher": { "@type": "Organization", - "name": "CONFERENCE_OR_JOURNAL_NAME" + "name": "IE University" }, - "url": "https://YOUR_DOMAIN.com/YOUR_PROJECT_PAGE", - "image": "https://YOUR_DOMAIN.com/static/images/social_preview.png", - "keywords": ["KEYWORD1", "KEYWORD2", "KEYWORD3", "machine learning", "computer vision"], - "abstract": "FULL_ABSTRACT_TEXT_HERE", - "citation": "BIBTEX_CITATION_HERE", + "url": "https://velocitatem.github.io/PHANTOM/", + "image": "https://raw.githubusercontent.com/velocitatem/PHANTOM/main/docs/static/images/carousel1.jpg", + "keywords": ["dynamic pricing", "llm agents", "e-commerce", "distributionally robust optimization", "reinforcement learning"], + "abstract": "This thesis formalizes Cost of Information erosion under agentic reconnaissance, learns separable human and agent behavior kernels, and trains contamination-aware robust pricing policies.", + "citation": "Rösel, Daniel. PHANTOM: Pricing Heuristics Against Non-human Transaction Orchestration Mechanisms. IE University, 2025.", "isAccessibleForFree": true, "license": "https://creativecommons.org/licenses/by/4.0/", "mainEntity": { "@type": "WebPage", - "@id": "https://YOUR_DOMAIN.com/YOUR_PROJECT_PAGE" + "@id": "https://velocitatem.github.io/PHANTOM/" }, "about": [ { "@type": "Thing", - "name": "RESEARCH_AREA_1" + "name": "Dynamic Pricing" }, { "@type": "Thing", - "name": "RESEARCH_AREA_2" + "name": "Agent Behavior Modeling" } ] } @@ -158,8 +145,7 @@ "@context": "https://schema.org", "@type": "Organization", "name": "IE University", - "url": "https://www.ie.edu", - "logo": "TODO" + "url": "https://www.ie.edu" } @@ -173,45 +159,64 @@
-
- -
- - - -

- Aliquam vitae elit ullamcorper tellus egestas pellentesque. Ut lacus tellus, maximus vel lectus at, placerat pretium mi. Maecenas dignissim tincidunt vestibulum. Sed consequat hendrerit nisl ut maximus. -

+
+ PHANTOM teaser diagram connecting vulnerability, behavioral signal, and robust control +
- +
@@ -314,10 +319,10 @@

Abstract

- This research establishes the following contributions: definition and formalization of non-human transactors in e-commerce platforms, development of a testing-ground for capturing the behavioral essence of these transactors across a large variety of digital systems, construction of a discriminative model to prove separability as a strong learner for downstream mitigation of contamination by non-human entities, translation of such learned separability into existing dynamic pricing machine learning loops, and establishment of a high-level KPI-affecting causal effect and cost-saving framework for the future of internet commerce in the presence of such non-human learners. + PHANTOM formalizes a mechanism failure in dynamic pricing under non-human transaction orchestration. LLM-based agents can run reconnaissance in isolated sessions and execute purchases in clean sessions, reducing the platform's ability to extract the Cost of Information (COI), the premium usually generated by demand signal expression.

- This work develops behavioral signature models using recommendation system techniques to profile session-level interaction, temporal engagement, and cross-session correlation. The AI Agent market is forecasted to grow from around USD 5-8 billion in 2025 to USD 42-52 billion by 2030, raising the question of how these systems should be designed for future robustness and how to maintain a competitive edge in the analytical components of e-commerce platforms. + The project combines behavioral modeling and robust control. We built a controlled e-commerce platform (hotel and airline modes), logged full interaction trajectories and price exposures, learned separable human/agent transition kernels, and used those signals to train contamination-aware pricing policies with a distributionally robust reinforcement learning objective.

@@ -326,6 +331,26 @@
+
+
+
+

Project Scope

+

+ The current thesis revision extends both theory and implementation. The main research question is how a pricing system can preserve margin integrity when browsing and purchasing are increasingly orchestrated by AI agents. +

+
    +
  • Formal contribution: a Cost of Information erosion theorem showing why price-query saturation can collapse dynamic pricing power.
  • +
  • System contribution: a hybrid online/offline stack (Next.js storefront, pricing provider, Kafka event streams, Airflow ETL, Redis serving layer).
  • +
  • Modeling contribution: class-specific transition kernels for human and agent behavior, with KL-divergence based separability scores.
  • +
  • Control contribution: a contamination-aware DR-RL pricing policy trained under distributional uncertainty using Wasserstein-style robustness.
  • +
+

+ Controlled trials currently include balanced human and agent sessions with goal-driven tasks across hotel and airline interfaces. Early separability results are strong (Mann-Whitney U=2.0, p=0.0006), while robust pricing gains remain regime-dependent and are being calibrated in larger sweeps. +

+
+
+
+
@@ -333,32 +358,27 @@
@@ -370,53 +390,27 @@ - -
-
-
- -

Video Presentation

-
-
- -
- - -
-
-
-
-
-
- - -
-

Another Carousel

- @@ -432,10 +426,10 @@
-
-

Poster

+
+

Full Thesis

-
@@ -457,7 +451,7 @@
@thesis{Rosel2025PHANTOM,
   title={Pricing Heuristics Against Non-human Transaction Orchestration Mechanisms},
-  author={R{\"o}sel, Daniel},
+  author={Rösel, Daniel},
   school={IE University},
   year={2025},
   address={Madrid, Spain},