A/B-Testprotokoll für Preise - Software für Bestandsoptimierung

A/B-Testprotokoll für Preise












Startseite » Ressourcen » Hier

Ohne Messung, kann keine Optimierung zustande kommen und für die Preisoptimierung sind sowohl Experimente als auch Messungen notwendig. Zu oft geht es bei der Preisgestaltung nur um Preisänderung, ohne diese Änderungen zu nutzen, um tiefgreifende Erkenntnisse über die Antwort des Markts auf neue Preise zu gewinnen. Die Entwicklung von Preisstrategien sollte ein wissensbasierter Prozess sein, in dem die meisten Veränderungen im Nachhinein analysiert werden, um die vorhandenen Strategien abzustimmen. Auf dieser Seite erläutern wir den A/B-Testprotokoll für Preise, der mit Lokads Unterstützung ausgeführt werden kann. Obwohl wir uns mit den Vorteilen der vorliegenden Tools beschäftigen, sollte man wissen, dass das Protokoll selbst nicht spezifisch von Lokad ist und auch mit anderen Tools nachgebildet werden kann, so auch mit Excel, wenn Blätter gut gepflegt werden.


1. Erstellen Sie ein Referenzdokument

Wenn Sie in der Lage sind, ein Preisexperiment durchzuführen, werden Sie bald Dutzende Preisexperimente durchgeführt haben. Gehen Sie aber bei der Erfassung der Information nicht strukturiert vor, werden Ihre Ergebnisse unübersichtlich und Sie verlieren die Möglichkeit, aus ihnen Schlüsse zu ziehen. Daher empfehlen wir, bei Preisexperimenten immer mit der Erstellung eines Referenzdokuments zu beginnen, in dem alle Informationen zum Experiment gesammelt werden. Dieses Dokument könnte eine Microsoft Word Datei sein, doch heutzutage ist es sinnvoll, Web-native kollaborative Tools, wie Google-Seiten, hackpad, oder eines der vielen Content Management Systemte, die online verfügbar sind, zu nutzen.

Wenn dieses Dokument dann erstellt ist, sollten Sie sich um einen einprägsamen Namen für das Experiment bemühen. Ein Experiment ist nur dann effektiv, wenn sich Personen einfach darüber unterhalten können und sich das Preisgestaltungsteam und deren Nachfolger, falls Mitarbeiter kommen und gehen, die Schlüsse merken können. Langeweile ist des Wissens Feind. Ist der Name zu langweilig, um ihn sich zu merken, wird die Information von den meisten Mitarbeitern nicht aufgenommen werden.

2. Erstellen Sie ein entsprechendes Projekt

Wir schlagen vor, innerhalb Ihres Lokad-Kontos ein entsprechendes Projekt für das Preisexperiment zu erstellen. Der Klarheit halber sollte dieses Projekt denselben einprägsamen Namen, der dafür gewählt wurde, tragen. Zusätzlich empfehlen wir Ihnen, die Link-Eigenschaften des label Elements zu nutzen, um das Referenzdokument, das auch online verfügbar ist, zu verlinken. So sollte der Beginn Ihres Envision-Skript, wie folgt, aussehen:

// Preisexperiment: Sevilla
// Beginn: 2014-07-09 Ende: 2014-08-08
// Autor: Joannes Vermorel
show label "http://example.org/my-reference-document Ref. Document"

Mit diesem Skript sollte das Titel-Element (label ) im Dashboard als ein Link zur Speicherort des Referenzdokuments erscheinen, das das Preisexperiment erläutert.

Dieses Projekt dient während der verschiedenen Phasen des Preisexperiments zu unterschiedlichen Zwecken. So wird es benutzt, um:

  1. Beispielkontrollgruppen der Artikel zu erstellen
  2. diese Gruppen zu speichern
  3. eine verbesserte Preisstrategie zu definieren
  4. die korrekte Aufstellung der Preise zu überprüfen
  5. die Visualisierung beider Kontrollgruppen zu kompilieren

All diese Schritte werden durch die verschiedenen Abschnitte des Skripts für dieses Projekt eingeführt.

3. Definieren Sie die Testhypothese

Immer, wenn eine Preisstrategie getestet wird, gerät man in Verführung, im Nachhinein die Ergebnisse erneut zu erklären, unabhängig davon, ob diese mit den anfänglichen Erwartungen übereinstimmen oder nicht. Die psychologische Verzerrung wird zur narrativen Verzerrung, die am besten von Taleb beschrieben wurde:

Die narrative Verzerrung bezieht sich auf unsere eingeschränkte Fähigkeit, eine Reihe von Tatsachen zu betrachten, ohne ihnen eine Erklärung zuzuschreiben, oder eine logische Verbindung oder Beziehung zwischen ihnen zu erstellen. Erklärungen vereinen Tatsachen. Sie helfen, sich diese leichter zu merken. Sie helfen, ihnen einen Sinn zu geben. Diese Neigung kann allerdings dann scheitern, wenn es den Eindruck erweckt, unser Verständnisses zu erweiternini. —Nassim Nicholas Taleb, Der schwarze Schwan

Das Problem ist vor allen in Bezug auf Preisgestaltung äußerst wichtig, da für Marktbedingungen keine kontrollierte Umgebung gebildet werden kann. Unabhängig davon, wie gut das Experimentprotokoll beachtet wird, bleiben viele Faktoren außerhalb unsere Kontrolle, beispielsweise die Initiativen unserer Wettbewerber.

Daher ist es unabdingbar, die Hypothese, die getestet werden soll, zu Beginn des Experiments zu definieren, um sich so zu vergewissern, dass wir diese bestimmte Hypothese und keine andere, die während des Verlaufs des Experiments auftaucht, bestätigen oder verwerfen. Sie sollten die Hypothese am Anfang des Referenzdokuments, das wir davor erwähnt haben, schreiben. Eine gute Hypothese sollte so ähnlich wie diese aussehen: Wichtige Rückgänge im Absatz lassen sich nicht durch einen Rückgang des Bedarfs erklären, sondern durch weniger Erkennbare Wettbewerber, mit aggressiveren Preisen. Daher sollte unser Absatz, wenn wir unsere Margen für diese Produkte reduzieren, entsprechend wachsen.

4. Positive und negative Kontrollgruppen

Wenn Sie die Hypothese aufgeschrieben haben, ist es Zeit, zum eigentlichen Experiment überzugehen. Normalerweise ist es nicht möglich oder unpraktisch, manchmal sogar illegal, unterschiedlichen Kundengruppen verschiedene Preise für denselben Artikel anzuzeigen. Daher ist ein etwas praktischerer Ansatz im Einzelhandel, zwei ähnliche Artikelgruppen auszuwählen, die nur einen kleinen Teil des gesamten Katalogs darstellen.

Diese Beiden Proben werden jeweils, wie folgt, genannt:
  • Die positive Kontrollgruppe, auf die die neue Preisstrategie angewandt wird.
  • Die negative Kontrollgruppe, bei der die bisherige Preisstrategie erhalten bleibt.

Werden dann die Ergebnisse der positiven und der negativen Kontrollgruppe verglichen, können Sie daraus entnehmen, ob die Hypothese gestimmt hat. Mit Envision ist es dank der Hash-Funktion sehr einfach, zufällig zwei Kontrollgruppen auszuwählen:

seed := "hello world"
R = rankd(hash(concat(Id, seed)))
where R <= 1000
  // positive Gruppe hier
where R > 1000 & R <= 2000
  // negative Gruppe hier
Im oberen Skript mischen wir in Zeile 2 alle Artikel zufällig. Die Hash-Funktion erstellt pseudo-zufällige Zahlen für jedes String, das als Eingabe übergeben wird. Es ist nicht ganz zufällig, da dieselben Strings jedes Mal denselben Hashwert ergeben. Deshalb sollte man, um verschiedene Proben zu erhalten, den Text, der als Startwert benutzt wird, ändern. In Zeile 3 wählen wir dann 1000 Artikel als positive Kontrollgruppe. In Zeile 5 wiederholen wir dies und ordnen 1000 Artikel der negativen Kontrollgruppe zu.

Diese Logik kann leicht an einen anderen Fall angepasst werden, in dem wir zwei Gruppen definieren wollen, in denen beide bestimmte Bedingungen erfüllen. Gehen wir davon aus, dass wir Kontrollgruppen aus einer bestimmten Reihe von Artikel erstellen wollen, die von der Marke Fabrikam stammen. Dies könnte so gemacht werden:
where Brand == "Fabrikam" // Bereichsdefinition nur Merke 'Fabrikam'
  seed := "hello world"
  R = rankd(hash(concat(Id, seed)))
  where R <= 50
    // positive Gruppe hier
  where R > 50 & R <= 100
    // negative Gruppe hier

5. Speichern Sie die Kontrollgruppen

Wenn komplexe Bedingungen für die Auswahl der Kontrollgruppen benutzt werden, besteht die Gefahr, dass Logik zur Erstellung der Probe langfristig nicht dieselbe Artikelliste ergibt. Werden beispielsweise neue Artikel eingeführt, beeinflussen Sie die Logik der Musterziehung, wie im vorangehenden Abschnitt erklärt wurde. Daher empfehlen wir Ihnen, die Kontrollgruppen in einer separaten Datei zu speichern, so dass sie sich in Laufe der Zeit verändern.

seed := "hello world"
R = rankd(hash(concat(Id, seed)))
Control = ""
where R <= 1000
  Control = "pos" // positive Gruppe
where R > 1000 & R <= 2000
  Control = "neg" // negative Gruppe

// Export der Gruppe
startDate := "2014-07-09"
endDate := "2014-08-09"
where Control != ""
  show table "sample" export:"/exp/g-sevilla.tsv" with
    Id
    startDate as "Date"
    endDate
    Control
    Price

Im oberen Skript speichern wir die Ergebnisse, wenn die Gruppen erstellt wurden, in eine Datei namens `g-sevilla.tsv`. Im folgenden Abschnitt zeigen wir die Vorteile vom Präfix `g` (oder alternativen Präfixen), um die Überlappung von Proben zu vermeiden. `sevilla` ist lediglich ein Beispiel für einen einprägsamen Experimentnamen. Diese Datei ist bereits als Datei mit Ereignisströmen gespeichert, die Sie später einfach erneut auf Lokad laden können. Sie sollten diese Logik einmal laufen lassen und den Exportpfad löschen, um zu vermeiden, dass frühere Dateien überschrieben werden. Als Sicherheitsmaßnahme sollten Sie die Datei herunterladen und eine Kopie davon an Ihr Referenzdokument anhängen.

Um zu einem späteren Zeitpunkt die Überlappung von Gruppen aus einem anderen laufenden Experiment nicht definieren zu müssen, können Sie die Datei, die gespeichert wurde, erneut hochladen und diese Information nutzen, um die relevanten Artikel auszuschließen. Dies könnte so vorgenommen werden:
read "/exp/g-*" as Experiments // alle bisherigen Experimente laden

today := Date(2014,7,9)
IsPartOfGroup = false
where Experiments.EndDate < today // wir schließen alle noch laufenden Experimente aus
  // suchen nach einer Gruppe, die übereinstimmt
  IsPartOfGroup = exists(Experiments.Date) 

where not IsPartOfGroup
  seed := "hello world"
  R = rankd(hash(concat(Id, seed)))
  Control = ""
  where R <= 1000
    // positive Gruppe hier
  where R > 1000 & R <= 2000
    // negative Gruppe hier

6. Definieren Sie das neue Preis-Skript

In den vorangehenden Abschnitten haben wir verschiedene Preisstrategien vorgestellt. An diesem Punkt des Experimentprotokolls angelangt, ist es Zeit, das verbesserte Preis-Skript umzusetzen. Die Details der Preislogik selbst gehen über das Ziel dieses Abschnitts hinaus, doch Sie sollten wissen, dass Preise gewöhnlich mit einem einfachen table Element exportiert werden können:
read "/exp/g-sevilla.tsv" as Scope

// Originale Logik zur Erstellung der Kontrollgruppe ist auskommentiert.
// Wir laden die Kontrollgruppe erneut direkt von der persistierten Kopie.
Control = last(Scope.Control) or ""

where Control != "" // Ausschließen der Artikel, die nicht im Bereich liegen
  // hier abgeschnitten: tatsächliche Preislogik
  show table "sample" export:"/exp/p-sevilla.tsv" with Id, today() as Date, Price
Dieses Skript beginnt mit dem Laden der gespeicherten Kopie der Kontrollgruppen. Anschließend wird ein Bereich erneut definiert, der ausschließlich auf die Kontrollgruppen beschränkt wird. Zuletzt werden die neuen Preise als Datei exportiert.

In der Praxis kann es vorkommen, dass es nicht so einfach ist, die verbesserten Preise zu speichern, im Vergleich zum Speichern der Kontrollgruppen selbst. Denn Preise verändern sich ständig nach den entsprechenden Strategien während der Dauer des Experiments.

7. Preisveröffentlichung und Beobachtung

Funktioniert das Skript und kann er verbesserte Preise erstellen, sollten diese in den verschiedenen Kanälen veröffentlicht werden. Sie sollten immer, wenn es möglich ist, eine ziemlich automatisierte Preisveröffentlichung bevorzugen. Insbesondere biete Lokad eine REST API, die eine automatische Auslösung von Projekten unterstützt. Nach Ausführung des Skripts können die Ausgabedaten über FTP oder FTPS von Lokad in das Produktionssystem importiert werden.

Um sich auf die Beobachtungen nach der Preisveränderungen verlassen zu können, ist es auch wichtig, zu überprüfen, ob die in den Vertriebskanälen angezeigten Preise auch tatsächlich mit den über das Envision-Skript erstellte Preise übereinstimmen. Immer wieder sehen wir, dass Preise unvollständig oder fehlerhaft importiert werden und somit zu Abweichungen zwischen den tatsächlich veröffentlichten und den in der Preisstrategie berechneten Preisen führen.

Idealerweise sollten die historischen Preise in Lokad als Eingabe eingespeist werden. Wenn eine solche Schleife vorhanden ist, ist es möglich, die veröffentlichten Preisen mit denen, die von Lokad berechnet wurden, zu vergleichen und sich zu vergewissern, dass sie übereinstimmen. Im unteren Skript laden wir die historischen Preise aus der Produktion, dann den Bereich des Experiments und den ursprünglich berechneten Preisen.

//  ... abgeschnittene Artikel und andere Datendateien ...
read "/prices.tsv" as Prices // from the production systems
read "/exp/g-sevilla.tsv" as Scope
read "/exp/p-sevilla.tsv" as ExpPrices

// Die originale Logik zur Erstellung der Kontrollgruppe ist auskommentiert.
// Wir laden die Kontrollgruppe erneut direkt von der persistierten Kopie.
Control = last(Scope.Control) or ""

where Control != "" // Ausschließen der Artikel, die nicht im Beireich liegen
  // relevantes Datum für das Veröffentlichungsdatum der Preise
  when date <= date(2014,8,1) 
    where last(Prices.Price) != last(ExpPrices.Price)
      show table "Item count with price mismatch" with count(Id) 
Die Ausgabe des Skripts ist die Anzahl der Abweichungen der Preise, also die Fälle, in denen der Preis aus dem Produktionssystem nicht mit dem ursprünglich vom Skript berechnet Preis übereinstimmt.

Zum Schluss, nach einigen Tagen oder Wochen, je nach Dauer des Preisexperiments, werden die Beobachtungen zur Entwicklung des Absatzes gesammelt und für beide Gruppen verglichen, um festzustellen, ob die anfängliche Hypothese korrekt war. Viele Händler sammeln beweiskräftige Experimente, um mit der Zeit immer effizientere Preisstrategien zu entwickeln.