ABS — Auto Buy/Sell

interno scalpel · faza 0 · komit 78382f1

Cross-market arbitraž engine za karte. Prati cene na više platformi, računa neto maržu posle svih provizija i troška držanja, i predlaže cenu — u režimu koji biraš po događaju, od pukog posmatranja do automatskog izlaganja. Jezgro je domain-agnostično.

Kako se određuje cena → Nalazi istraživanja → Izveštaj za investitore → Živi servis →
Brojevi ispravljeni 28.07.2026 — provizije su bile precenjene Raniji model je koristio 15% prodavcu i 22% kupcu. Registracija StubHub-a kod američke komisije za hartije od vrednosti pokazuje ukupan zahvat platforme od 20.4% (kupac 10–15%, prodavac 5–10%) — stari model je implicirao ~31%, što aritmetika ne dozvoljava.

Prag rentabilnosti: +45% → +31%. Potreban hit rate: 15% → 13%. Posao je lakši nego što smo tvrdili, ali i dalje daleko od „+10% je dovoljno". Detaljno: nalazi istraživanja.
Testovi115svi prolaze
Komita18jedna sesija
Platforme2nijedna potpuna
Petlje2watcher + repricer
LIVE targeti0namerno

Nalaz koji je oblikovao ceo dizajn

Sa realnim provizijama — kupovina +18%, prodaja −7.5% — karta od 100 EUR mora da poraste na 130.71 EUR samo da bi se izašlo na nulu. Zato jezgro sistema nije kupovina nego procena da li će konkretan događaj završiti u desnom repu.

0%25%50%

Naš proračun. Ponovljivo: python examples/reality_check.py. Ulazne provizije su procene iz branše — v. napomenu uz tabelu platformi.

Koliko karta mora da poskupi

Jedna karta od 100 EUR, držana 90 dana. Množitelj je odnos prodajne i kupovne cene — ono što se u razgovoru zove „×2" ili „×10".

MnožiteljProdato zaNama legneNetoPrinos
×1.20120.0099.96−9.91−8%
×1.31131.00121.18+0.27prag
×2200.00185.00+64.09+54%
×2.5250.00231.25+110.34+94%
×3300.00277.50+156.59+133%
×4400.00370.00+249.09+211%
×101000.00925.00+804.09+681%

Naš proračunexamples/portfolio_scenarios.py.

×2 do ×4 je realan raspon za dobar odabir. ×10 postoji, ali je izuzetak i ne sme biti osnova računice. Ispod ×1.31 se gubi novac ma koliko rast delovao lepo.

Šta ako se proda baš sve

10 karata po 100 EUR, uloženo 1180.00 EUR sa provizijama. Nijedna ne propada.

MnožiteljPrihodRezultatPrinos
×1.20999.60−209.50−18%
×21850.00+640.90+54%
×2.52082.50+873.40+74%
×32499.00+1289.90+109%
×43332.00+2122.90+180%

Ovo je gornja granica — savršen ishod u kome ništa ne ostane neprodato. Vredi je videti zbog prvog reda: i kad se proda svaka karta, ×1.20 je gubitak od 18%.

Kako to izgleda u stvarnosti

Ne kupuje se deset istih karata i ne završavaju sve isto. Ovo je mešovita serija — različite cene, različiti množitelji, jedna neprodata.

PartijaUloženoIshodPrihodRezultat
3 × 40 EUR141.60×2.5277.50+141.31
4 × 80 EUR377.60×1.8532.80+145.89
2 × 150 EUR354.00×3.2888.00+525.27
1 × 150 EUR177.00isteklo0.00−181.36
Ukupno1050.20 1698.30+622.20

+59% na uloženo. Devet od deset karata prodato, prosečan množitelj oko ×2.3 — nijedna eksplozija, a rezultat je solidan. Primeti i cenu jedne neprodate karte od 150 EUR: −181.36, jer se gubi i uloženo i trošak držanja.

Kad cena eksplodira

Rasprodat derbi, turneja koja nestane za minut, finale koje niko nije očekivao. Ovo je desni rep zbog koga posao uopšte postoji.

KupljenoProdatoMnožiteljNetoPrinos
50.00400.00×8+312.75+530%
100.001200.00×12+988.69+838%
50.00750.00×15+637.05+1080%
40.001000.00×25+877.64+1859%

Ali evo koliko jedna eksplozija zaista nosi. Deset karata po 100 EUR, devet propadne, jedna eksplodira:

Množitelj te jednePrihodRezultatPrinosIshod
×5462.50−746.60−63%gubitak
×10925.00−284.10−24%gubitak
×151387.50+178.40+15%profit
×201850.00+640.90+54%profit

Jedna karta mora da poraste ~×15 da sama pokrije devet promašaja. Zato posao ne počiva na eksplozijama nego na tome da većina karata bude prodata uz skroman množitelj — mešovita serija iznad daje +59% bez ijedne eksplozije.

Isto to iz ugla stope pogodaka

Ranija računica u dolarima: 10 karata po $47.20 (=$472 uloženo), promašaj propada bez ostatka, pogodak ide ×10.

PogodakaPrihodRezultatPrinosIshod
1 / 10$370.00−113.64−24%gubitak
1.31 / 100.000%prag · 13%
2 / 10$740.00+256.36+53%profit
3 / 10$1110.00+626.36+129%profit

Šta servis radi danas

Živi na ubuntuservervm.net.jovanovic.vip:11780 — docker stack na .88 (Postgres + aplikacija), dve pozadinske petlje, web UI.

DeoŠta radiRitam
Watcherobilazi watchlistu i beleži viđene cene u istoriju30 min
Repricerračuna prodajnu cenu za pozicije koje držimo30 min, 10 min pred termin
Watchlistapretraga kataloga, dodavanje, režim po događaju, istorija cenaiz browsera
Pozicijekupljene karte, predlog cene sa obrazloženjem, ručna ograničenjaiz browsera

Podržane platforme — stvarno stanje

Provereno u kodu, ne po sećanju. Nijedna nije potpuna.

PlatformaČita ceneIzlaže oglasePravila + provizijeStanje
Ticketmaster da ne da kod napisan, nikad pokrenut protiv živog API-ja — nema ključa
StubHub ne ne da samo fee model i pravna pravila

Izvori: Ticketmaster Discovery · StubHub Inventory · StubHub Catalog · StubHub o provizijama. Provereno 27.07.2026 — nalazi istraživanja.

Posledica: sistem ne može ni da napuni watchlistu ni da vidi prave konkurentske oglase. Repricer je gotov i tačan, ali radi nad praznim ulazom — sve provere su rađene nad ručno ubačenim podacima. Provizije su procene iz branše, nisu izmerene.

Zaštite koje sistem sam sprovodi

Pravna ograničenja su izvršni kod, ne komentar u dokumentaciji.

Automatska kupovina na Ticketmaster-u — krivično delo (UK Digital Economy Act 2017 s.106, US BOTS Act 2016)odbijeno
Prodaja na 2× nominale na irskoj platformi — zakonski cap je 1.0×odbijeno
Karta vezana za ime — tradable: false pre bilo kakve proceneodbijeno
Cena viđena pre 8h pri toleranciji od 1h — stale, ne ulazi u odlukufiltrirano
Neproverena jurisdikcija se tretira kao zabranjenakonzervativno

Tri greške koje su testovi uhvatili

Sve tri bi se inače pojavile tek u produkciji, tiho.

GreškaPosledica da je prošla
Baza vraća 100.0000 gde memorija vraća 100 dva skladišta se ponašaju različito — vidi se tek u ispisu
Ključ nad cenama primao samo jedan oglas po prolazu repricer nikad ne bi imao uporedive oglase; sve bi stajalo na „bez promene"
Snimak se određivao po kategoriji umesto globalno rasprodata tribina izgleda kao da još ima karata

Zajednički uzrok otkrivanja: jedan skup testova pušta se nad oba skladišta (memorija i Postgres). Kad postoje dve implementacije istog interfejsa, testovi idu nad ugovorom, ne nad implementacijom.

Sledeći koraci

  1. Ticketmaster API ključ
    Besplatan na developer.ticketmaster.com. Bez njega se watchlista ne može popuniti i sve dalje stoji.
  2. StubHub kao izvor cena
    Bez cena sa sekundarnog tržišta repricer nema uporedive oglase i sve odluke su nagađanje.
  3. Pustiti watcher da radi par nedelja
    Istorija cena je jedini kapital koji faza 0 gradi.
  4. Izmeriti stvarne provizije
    Trenutni brojevi su procene iz branše.
  5. Backtest
    Postoji li desni rep i prelazi li se hit rate od 15%. Tačka odluke za ceo projekat.
Izvori za ceo presek: naši proračuni su u examples/*.py; spoljni nalazi u istraživanju (INFO_BANK/research/karte-platforme-i-pravni-okvir.md, 42 izvora); pravni status po zemljama u src/scalpel/core/jurisdictions.py (svaki unos nosi izvor i pouzdanost).

Otvoreno: pravna provera pre prvog LIVE targeta (da li je neovlašćena preprodaja ulaznica prekršaj u Srbiji i od kog obima traži registraciju + PDV) · Ticketmaster ključ nije pribavljen · nijedan adapter nikad nije pokrenut protiv živog API-ja.

Kod: E:\Work\AI\scalpel · presek i plan: INFO_BANK/projects/scalpel/STATUS.md · nova sesija počinje sa /pickup.