<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:media="http://search.yahoo.com/mrss/" >

<channel>
	<title>Customer Experience Management</title>
	<atom:link href="https://mietwood.com/feed" rel="self" type="application/rss+xml" />
	<link>https://mietwood.com</link>
	<description>Customer Experience Can Be Managed</description>
	<lastBuildDate>Thu, 10 Sep 2026 13:12:57 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>

<image>
	<url>https://mietwood.com/wp-content/uploads/2022/09/cropped-Fav7-32x32.png</url>
	<title>Customer Experience Management</title>
	<link>https://mietwood.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Tenis US Open 2026 &#8211; kto wygra?</title>
		<link>https://mietwood.com/tenis-us-open-2026</link>
					<comments>https://mietwood.com/tenis-us-open-2026#respond</comments>
		
		<dc:creator><![CDATA[Maki Pa]]></dc:creator>
		<pubDate>Thu, 10 Sep 2026 13:12:57 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[python]]></category>
		<guid isPermaLink="false">https://mietwood.com/?p=3684</guid>

					<description><![CDATA[<p>Oglądając Tenis US Open 2026 zastanawiamy się kto wygra. Oto propozycja analizy z wykorzystaniem algorytmów machine learning prowadząca do wytypowania tego, kto wygra turniej Tenis US Open 2026. Pojawia się coraz więcej statystyk i analiz a taktyka meczów oparta na danych nabiera bardzo dużego znaczenia. Przygotowanie zajęć z uczenia maszynowego (ML) opartych na statystykach tenisowych...</p>
<p>The post <a rel="nofollow" href="https://mietwood.com/tenis-us-open-2026">Tenis US Open 2026 &#8211; kto wygra?</a> appeared first on <a rel="nofollow" href="https://mietwood.com">Customer Experience Management</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Oglądając Tenis US Open 2026 zastanawiamy się kto wygra. Oto propozycja analizy z wykorzystaniem algorytmów machine learning prowadząca do wytypowania tego, kto wygra turniej Tenis US Open 2026. Pojawia się coraz więcej statystyk i analiz a taktyka meczów oparta na danych nabiera bardzo dużego znaczenia. Przygotowanie zajęć z uczenia maszynowego (ML) opartych na statystykach tenisowych to świetny pomysł. Tenis jest sportem bardzo mierzalnym, a zbiory danych są czyste i gotowe do analizy.</p>



<h2 class="wp-block-heading">Tenis US Open 2026 &#8211; Wyniki ćwierćfinałów</h2>



<p class="wp-block-paragraph"><strong>Mężczyźni (Singiel):</strong></p>



<ul class="wp-block-list">
<li><strong>Ben Shelton</strong> pokonał Carlosa Alcaraza 3:2</li>



<li><strong>Alexander Zverev</strong> pokonał Botica van de Zandschulpa 3:0 (6:2, 7:5, 6:1)</li>



<li><strong>Frances Tiafoe</strong> pokonał Alexa Michelsena 3:2 (5:7, 3:6, 7:5, 6:3, 7:6)</li>



<li><strong>Karen Chaczanow</strong> awansował po kreczu Alexandera Blockxa przy stanie 6:2, 7:5, 3:2 [<a href="https://support.google.com/knowledgepanel/answer/9787176" target="_blank" rel="noopener">1</a>]</li>
</ul>



<p class="wp-block-paragraph"><strong>Kobiety (Singiel):</strong></p>



<ul class="wp-block-list">
<li><strong>Aryna Sabalenka</strong> pokonała Lindę Noskovą 2:1 (7:6, 3:6, 7:6)</li>



<li><strong>Jelena Rybakina</strong> pokonała Zheng Qinwen 2:1 (3:6, 6:1, 6:4)</li>



<li><strong>Coco Gauff</strong> pokonała Mirrę Andriejewą 2:1 (2:6, 7:6, 6:2)</li>



<li><strong>Jessica Pegula</strong> pokonała Emmę Navarro 2:1 (3:6, 6:4, 6:3)</li>
</ul>



<p class="wp-block-paragraph"><strong>Najlepszym, darmowym i powszechnie szanowanym źródłem</strong> takich danych w świecie data science jest repozytorium <strong><a href="https://www.jeffsackmann.com/" target="_blank" rel="noopener">Jeffa Sackmanna</a> (<a href="https://www.tennisabstract.com/" target="_blank" rel="noopener">Tennis Abstract</a>)</strong> na GitHubie. [<a href="https://github.com/mcekovic/tennis-crystal-ball" target="_blank" rel="noopener">1</a>]</p>



<p class="wp-block-paragraph">Oto instrukcja krok po kroku, skąd pobrać odpowiednie pliki CSV oraz jakie cechy (features) udostępnić studentom do budowy modeli klasyfikacyjnych lub regresyjnych.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">1. Skąd pobrać gotowe pliki CSV?</h2>



<h3 class="wp-block-heading">Opcja A: Poziom zagregowany (Mecz po meczu) – idealny na start</h3>



<p class="wp-block-paragraph">Jeśli chcesz, aby studenci analizowali statystyki całego meczu (np. asy zawodnika A vs asy zawodnika B), pobierz dane z repozytoriów turniejowych.</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly># Load data (2000–2026, corrected raw URL)
import pandas as pd
import numpy as np
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.metrics import accuracy_score, log_loss, roc_auc_score

years = range(2023, 2027)
base = "https://raw.githubusercontent.com/Aneeshers/tennis-sackmann-archive/main/wta/wta_matches_{}.csv"
df = pd.concat(&#91;pd.read_csv(base.format(y), low_memory=False) for y in years&#93;, ignore_index=True)

df&#91;'tourney_date'&#93; = pd.to_datetime(df&#91;'tourney_date'&#93;, format='%Y%m%d')
df = df.sort_values(&#91;'tourney_date', 'match_num'&#93;).reset_index(drop=True)

# keep only matches with full serve/return stats (needed for play-style features)
stat_cols = &#91;'w_ace','w_df','w_svpt','w_1stIn','w_1stWon','w_2ndWon','w_SvGms','w_bpSaved','w_bpFaced',
             'l_ace','l_df','l_svpt','l_1stIn','l_1stWon','l_2ndWon','l_SvGms','l_bpSaved','l_bpFaced'&#93;

df = df.dropna(subset=stat_cols)
df = df[(df&#91;'w_svpt'&#93; > 0) &amp; (df&#91;'l_svpt'&#93; > 0)]
print(f"{len(df):,} matches usable")</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9FF"># </span><span style="color: #D8DEE9">Load</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">data</span><span style="color: #D8DEE9FF"> (</span><span style="color: #B48EAD">2000</span><span style="color: #D8DEE9FF">–</span><span style="color: #B48EAD">2026</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">corrected</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">raw</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">URL</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #81A1C1">import</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">pandas</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">as</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">pd</span></span>
<span class="line"><span style="color: #8FBCBB">import</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">numpy</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">as</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">np</span></span>
<span class="line"><span style="color: #81A1C1">from</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">sklearn</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">ensemble</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">import</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">GradientBoostingClassifier</span></span>
<span class="line"><span style="color: #81A1C1">from</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">sklearn</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">metrics</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">import</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">accuracy_score</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">log_loss</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">roc_auc_score</span></span>
<span class="line"></span>
<span class="line"><span style="color: #8FBCBB">years</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">range</span><span style="color: #D8DEE9FF">(2023</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> 2027)</span></span>
<span class="line"><span style="color: #8FBCBB">base</span><span style="color: #D8DEE9FF"> = </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">https://raw.githubusercontent.com/Aneeshers/tennis-sackmann-archive/main/wta/wta_matches_{}.csv</span><span style="color: #ECEFF4">&quot;</span></span>
<span class="line"><span style="color: #8FBCBB">df</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">pd</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">concat</span><span style="color: #D8DEE9FF">(&#91;</span><span style="color: #8FBCBB">pd</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">read_csv</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">base</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">format</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">y</span><span style="color: #D8DEE9FF">)</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">low_memory</span><span style="color: #D8DEE9FF">=</span><span style="color: #8FBCBB">False</span><span style="color: #D8DEE9FF">) </span><span style="color: #8FBCBB">for</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">y</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">in</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">years</span><span style="color: #D8DEE9FF">&#93;</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">ignore_index</span><span style="color: #D8DEE9FF">=</span><span style="color: #8FBCBB">True</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #8FBCBB">df</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">tourney_date</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93; = </span><span style="color: #8FBCBB">pd</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">to_datetime</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">df</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">tourney_date</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93;</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">format</span><span style="color: #D8DEE9FF">=</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">%Y%m%d</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #8FBCBB">df</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">df</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">sort_values</span><span style="color: #D8DEE9FF">(&#91;</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">tourney_date</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">match_num</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93;).</span><span style="color: #8FBCBB">reset_index</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">drop</span><span style="color: #D8DEE9FF">=</span><span style="color: #8FBCBB">True</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF"># </span><span style="color: #8FBCBB">keep</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">only</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">matches</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">with</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">full</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">serve</span><span style="color: #D8DEE9FF">/</span><span style="color: #8FBCBB">return</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">stats</span><span style="color: #D8DEE9FF"> (</span><span style="color: #8FBCBB">needed</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">for</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">play</span><span style="color: #D8DEE9FF">-</span><span style="color: #8FBCBB">style</span><span style="color: #D8DEE9FF"> </span><span style="color: #8FBCBB">features</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #8FBCBB">stat_cols</span><span style="color: #D8DEE9FF"> = &#91;</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">w_ace</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">w_df</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">w_svpt</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">w_1stIn</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">w_1stWon</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">w_2ndWon</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">w_SvGms</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">w_bpSaved</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">w_bpFaced</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">             </span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">l_ace</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">l_df</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">l_svpt</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">l_1stIn</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">l_1stWon</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">l_2ndWon</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">l_SvGms</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">l_bpSaved</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">l_bpFaced</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #8FBCBB">df</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">df</span><span style="color: #D8DEE9FF">.</span><span style="color: #8FBCBB">dropna</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">subset</span><span style="color: #D8DEE9FF">=</span><span style="color: #8FBCBB">stat_cols</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #8FBCBB">df</span><span style="color: #D8DEE9FF"> = </span><span style="color: #8FBCBB">df</span><span style="color: #D8DEE9FF">[(</span><span style="color: #8FBCBB">df</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">w_svpt</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93; &gt; 0) &amp; (</span><span style="color: #8FBCBB">df</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">l_svpt</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93; &gt; 0)]</span></span>
<span class="line"><span style="color: #8FBCBB">print</span><span style="color: #D8DEE9FF">(</span><span style="color: #8FBCBB">f</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">{len(df):,} matches usable</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">)</span></span></code></pre></div>



<p class="wp-block-paragraph"><strong>Jak szukać plików:</strong> Wewnątrz repozytoriów znajdziesz pliki podzielone latami, np. <code>atp_matches_2025.csv</code>, <code>atp_matches_2026.csv</code>. Każdy wiersz to jeden rozegrany mecz w danym roku (w tym wszystkie mecze Wielkiego Szlema, jak US Open). [<a href="https://github.com/YoavWeller/Tennis_Analysis" target="_blank" rel="noopener">1</a>] w tym Tenis US Open 2026</p>



<h3 class="wp-block-heading">Opcja B: Poziom zaawansowany (Punkt po punkcie) – dla ambitnych grup</h3>



<p class="wp-block-paragraph">Jeśli studenci mają analizować mikromomenty (np. czy as przy break-poincie decyduje o wygranej), skorzystaj z projektu mapowania uderzeń:</p>



<ul class="wp-block-list">
<li><strong>Projekt:</strong> <a href="https://github.com/JeffSackmann/tennis_MatchChartingProject" target="_blank" rel="noopener">GitHub – JeffSackmann/tennis_MatchChartingProject</a></li>



<li>Znajdziesz tam pliki takie jak <code>charting-m-stats-Overview.csv</code>, które zawierają niesamowicie szczegółowe parametry dotyczące kierunków serwisu i rodzajów błędów. [<a href="https://github.com/JeffSackmann/tennis_MatchChartingProject" target="_blank" rel="noopener">1</a>, <a href="https://www.kaggle.com/datasets/ryanthomasallen/tennis-match-charting-project" target="_blank" rel="noopener">2</a>]</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">2. Jakie zmienne (Features) znajdziesz w plikach?</h2>



<p class="wp-block-paragraph">W standardowych plikach rocznych Sackmanna, każdy wiersz zawiera gotowe statystyki obu graczy (Zwycięzcy – prefiks <code>w_</code> oraz Przegranego – prefiks <code>l_</code>). Do dyspozycji studentów będą m.in.:</p>



<ul class="wp-block-list">
<li><code>w_ace</code> / <code>l_ace</code> – liczba <strong>asów serwisowych</strong>.</li>



<li><code>w_df</code> / <code>l_df</code> – liczba <strong>podwójnych błędów serwisowych</strong> (double faults).</li>



<li><code>w_svpt</code> / <code>l_svpt</code> – łączna liczba punktów rozegranych przy własnym serwisie.</li>



<li><code>w_1stIn</code> / <code>l_1stIn</code> – liczba celnych pierwszych serwisów.</li>



<li><code>w_1stWon</code> / <code>l_1stWon</code> – punkty wygrane po pierwszym serwisie.</li>



<li><code>w_2ndWon</code> / <code>l_2ndWon</code> – punkty wygrane po drugim serwisie.</li>



<li><code>w_bpSaved</code> / <code>l_bpSaved</code> – obronione break-pointy.</li>



<li><code>w_bpFaced</code> / <code>l_bpFaced</code> – break-pointy, przed którymi stał zawodnik. [<a href="https://github.com/serve-and-volley/atp-world-tour-tennis-data" target="_blank" rel="noopener">1</a>, <a href="https://datahub.io/core/atp-world-tour-tennis-data" target="_blank" rel="noopener">2</a>]</li>
</ul>



<p class="wp-block-paragraph">Dane możesz także scrapować z ATP przy pomocy tego skryptu: <a href="https://github.com/serve-and-volley/atp-world-tour-tennis-data/blob/master/python/match_stats.py" target="_blank" rel="noopener">https://github.com/serve-and-volley/atp-world-tour-tennis-data/blob/master/python/match_stats.py</a></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p class="wp-block-paragraph">W tym skrypcie, dane zostaną przekształcone na dane wygranego i pokonanego zawodnika tak, aby w dalszym kroku można było wybrać 50 ostatnich meczów do średnich. Statystyka zakłada minimum 10 meczów aby statystyka była wiarygodna. Tenis US Open 2026.</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly># Convert to per-player, per-match play-style rates
def build_side(df, side):
    other = 'l' if side == 'w' else 'w'

# This matters for exactly one thing later in the function — 
# the return stats, which can't be computed from a player's own columns 
# (there's no w_returnPtsWon column in the data). 
# A player's return performance is mathematically the flip side of their 
# opponent's serve performance

    out = pd.DataFrame({
        'match_id': df.index, 'tourney_date': df&#91;'tourney_date'&#93;,
        'player_id': df&#91;f'{side}inner_id'&#93; if side=='w' else df&#91;f'{side}oser_id'&#93;,
        'player_name': df&#91;f'{side}inner_name'&#93; if side=='w' else df&#91;f'{side}oser_name'&#93;,
        'won': 1 if side=='w' else 0,
    })
    svpt, firstin = df&#91;f'{side}_svpt'&#93;, df&#91;f'{side}_1stIn'&#93;
    out&#91;'ace_pct'&#93; = df&#91;f'{side}_ace'&#93; / svpt
    out&#91;'df_pct'&#93; = df&#91;f'{side}_df'&#93; / svpt
    out&#91;'first_in_pct'&#93; = firstin / svpt
    out&#91;'first_won_pct'&#93; = np.where(firstin>0, df&#91;f'{side}_1stWon'&#93;/firstin, np.nan)
    second = svpt - firstin
    out&#91;'second_won_pct'&#93; = np.where(second>0, df&#91;f'{side}_2ndWon'&#93;/second, np.nan)
    out&#91;'serve_pts_won_pct'&#93; = (df&#91;f'{side}_1stWon'&#93; + df&#91;f'{side}_2ndWon'&#93;) / svpt
    bpF = df&#91;f'{side}_bpFaced'&#93;
    out&#91;'bp_saved_pct'&#93; = np.where(bpF>0, df&#91;f'{side}_bpSaved'&#93;/bpF, 1.0)
    opp_svpt = df&#91;f'{other}_svpt'&#93;
    opp_won = df&#91;f'{other}_1stWon'&#93; + df&#91;f'{other}_2ndWon'&#93;
    out&#91;'return_pts_won_pct'&#93; = (opp_svpt - opp_won) / opp_svpt
    opp_bpF, opp_bpS = df&#91;f'{other}_bpFaced'&#93;, df&#91;f'{other}_bpSaved'&#93;
    out&#91;'bp_conv_pct'&#93; = np.where(opp_bpF>0, (opp_bpF-opp_bpS)/opp_bpF, 0.0)
    return out

long_df = pd.concat(&#91;build_side(df,'w'), build_side(df,'l')&#93;, ignore_index=True)
long_df = long_df.sort_values(&#91;'player_id','tourney_date'&#93;).reset_index(drop=True)

FEATURES = &#91;'ace_pct','df_pct','first_in_pct','first_won_pct','second_won_pct',
            'serve_pts_won_pct','bp_saved_pct','return_pts_won_pct','bp_conv_pct'&#93;</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9FF"># </span><span style="color: #D8DEE9">Convert</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">to</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">per</span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9">player</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">per</span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9">match</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">play</span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9">style</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">rates</span></span>
<span class="line"><span style="color: #D8DEE9">def</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">build_side</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">df</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">side</span><span style="color: #D8DEE9FF">):</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #D8DEE9">other</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">l</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">if</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">side</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">==</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">w</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">else</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">w</span><span style="color: #ECEFF4">&#39;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF"># </span><span style="color: #D8DEE9">This</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">matters</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">for</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">exactly</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">one</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">thing</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">later</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">in</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">the</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">function</span><span style="color: #D8DEE9FF"> — </span></span>
<span class="line"><span style="color: #D8DEE9FF"># </span><span style="color: #88C0D0">the</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">return</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">stats</span><span style="color: #D8DEE9FF">, </span><span style="color: #88C0D0">which</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">can</span><span style="color: #D8DEE9FF">&#39;</span><span style="color: #88C0D0">t</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">be</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">computed</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">from</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">a</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">player</span><span style="color: #D8DEE9FF">&#39;</span><span style="color: #88C0D0">s</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">own</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">columns</span><span style="color: #D8DEE9FF"> </span></span>
<span class="line"><span style="color: #D8DEE9FF"># </span><span style="color: #ECEFF4">(</span><span style="color: #D8DEE9">there</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">s no w_returnPtsWon column in the data).</span><span style="color: #D8DEE9"> </span></span>
<span class="line"><span style="color: #D8DEE9FF"># </span><span style="color: #D8DEE9">A</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">player</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">s return performance is mathematically the flip side of their</span><span style="color: #D8DEE9"> </span></span>
<span class="line"><span style="color: #D8DEE9FF"># </span><span style="color: #D8DEE9">opponent</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">s serve performanc</span><span style="color: #D8DEE9">e</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #D8DEE9">out</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">pd</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">DataFrame</span><span style="color: #D8DEE9FF">(</span><span style="color: #ECEFF4">{</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">match_id</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">df</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9">index</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">tourney_date</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">df</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">tourney_date</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93;</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">player_id</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">df</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">{side}inner_id</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93; </span><span style="color: #D8DEE9">if</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">side</span><span style="color: #81A1C1">==</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">w</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">else</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">df</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">{side}oser_id</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93;</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">player_name</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">df</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">{side}inner_name</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93; </span><span style="color: #D8DEE9">if</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">side</span><span style="color: #81A1C1">==</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">w</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">else</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">df</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">{side}oser_name</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93;</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">        </span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">won</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">1</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">if</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">side</span><span style="color: #81A1C1">==</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">w</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">else</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">0</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #ECEFF4">}</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #D8DEE9">svpt</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">firstin</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">df</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">{side}_svpt</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93;</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">df</span><span style="color: #ECEFF4">&#91;</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">{side}_1stIn</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">&#93;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #D8DEE9">out</span><span style="color: #ECEFF4">&#91;</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">ace_pct</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">&#93;</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">df</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">{side}_ace</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93; </span><span style="color: #81A1C1">/</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">svpt</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #D8DEE9">out</span><span style="color: #ECEFF4">&#91;</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">df_pct</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">&#93;</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">df</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">{side}_df</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93; </span><span style="color: #81A1C1">/</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">svpt</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #D8DEE9">out</span><span style="color: #ECEFF4">&#91;</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">first_in_pct</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">&#93;</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">firstin</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">/</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">svpt</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #D8DEE9">out</span><span style="color: #ECEFF4">&#91;</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">first_won_pct</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">&#93;</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">np</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">where</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">firstin</span><span style="color: #81A1C1">&gt;</span><span style="color: #B48EAD">0</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">df</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">{side}_1stWon</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93;</span><span style="color: #81A1C1">/</span><span style="color: #D8DEE9">firstin</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">np</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9">nan</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #D8DEE9">second</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">svpt</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">firstin</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #D8DEE9">out</span><span style="color: #ECEFF4">&#91;</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">second_won_pct</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">&#93;</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">np</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">where</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">second</span><span style="color: #81A1C1">&gt;</span><span style="color: #B48EAD">0</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">df</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">{side}_2ndWon</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93;</span><span style="color: #81A1C1">/</span><span style="color: #D8DEE9">second</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">np</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9">nan</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #D8DEE9">out</span><span style="color: #ECEFF4">&#91;</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">serve_pts_won_pct</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">&#93;</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> (</span><span style="color: #D8DEE9">df</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">{side}_1stWon</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93; </span><span style="color: #81A1C1">+</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">df</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">{side}_2ndWon</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93;) </span><span style="color: #81A1C1">/</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">svpt</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #D8DEE9">bpF</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">df</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">{side}_bpFaced</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #D8DEE9">out</span><span style="color: #ECEFF4">&#91;</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">bp_saved_pct</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">&#93;</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">np</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">where</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">bpF</span><span style="color: #81A1C1">&gt;</span><span style="color: #B48EAD">0</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">df</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">{side}_bpSaved</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93;</span><span style="color: #81A1C1">/</span><span style="color: #D8DEE9">bpF</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">1.0</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #D8DEE9">opp_svpt</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">df</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">{other}_svpt</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #D8DEE9">opp_won</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">df</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">{other}_1stWon</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93; </span><span style="color: #81A1C1">+</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">df</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">{other}_2ndWon</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #D8DEE9">out</span><span style="color: #ECEFF4">&#91;</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">return_pts_won_pct</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">&#93;</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> (</span><span style="color: #D8DEE9">opp_svpt</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">opp_won</span><span style="color: #D8DEE9FF">) </span><span style="color: #81A1C1">/</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">opp_svpt</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #D8DEE9">opp_bpF</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">opp_bpS</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">df</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">{other}_bpFaced</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93;</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">df</span><span style="color: #ECEFF4">&#91;</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">{other}_bpSaved</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">&#93;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #D8DEE9">out</span><span style="color: #ECEFF4">&#91;</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">bp_conv_pct</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">&#93;</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">np</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">where</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">opp_bpF</span><span style="color: #81A1C1">&gt;</span><span style="color: #B48EAD">0</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> (</span><span style="color: #D8DEE9">opp_bpF</span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9">opp_bpS</span><span style="color: #D8DEE9FF">)</span><span style="color: #81A1C1">/</span><span style="color: #D8DEE9">opp_bpF</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">0.0</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #D8DEE9">return</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">out</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9">long_df</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">pd</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">concat</span><span style="color: #D8DEE9FF">(&#91;</span><span style="color: #88C0D0">build_side</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">df</span><span style="color: #ECEFF4">,</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">w</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">)</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">build_side</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">df</span><span style="color: #ECEFF4">,</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">l</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">)&#93;</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">ignore_index</span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9">True</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #D8DEE9">long_df</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">long_df</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">sort_values</span><span style="color: #D8DEE9FF">(&#91;</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">player_id</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">tourney_date</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93;)</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">reset_index</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">drop</span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9">True</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9">FEATURES</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> &#91;</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">ace_pct</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">df_pct</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">first_in_pct</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">first_won_pct</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">second_won_pct</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span></span>
<span class="line"><span style="color: #D8DEE9FF">            </span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">serve_pts_won_pct</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">bp_saved_pct</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">return_pts_won_pct</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">bp_conv_pct</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93;</span></span></code></pre></div>



<h2 class="wp-block-heading">Wybranie meczów do statystyki</h2>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly># Pre-match rolling form (shifted, no leakage)

ROLL, MIN_HIST = 50, 10
# These two numbers control the rolling window used to build each player's "current form"


grp = long_df.groupby('player_id', group_keys=False)
for f in FEATURES:
    long_df&#91;f'pre_{f}'&#93; = grp&#91;f&#93;.apply(lambda s: s.shift(1).rolling(ROLL, min_periods=MIN_HIST).mean())
pre_cols = &#91;f'pre_{f}' for f in FEATURES&#93;</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9FF"># </span><span style="color: #D8DEE9">Pre</span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9">match</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">rolling</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">form</span><span style="color: #D8DEE9FF"> (</span><span style="color: #D8DEE9">shifted</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">no</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">leakage</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9">ROLL</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">MIN_HIST</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">50</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">10</span></span>
<span class="line"><span style="color: #D8DEE9FF"># </span><span style="color: #D8DEE9">These</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">two</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">numbers</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">control</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">the</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">rolling</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">window</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">used</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">to</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">build</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">each</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">player</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">s &quot;current form</span><span style="color: #D8DEE9">&quot;</span></span>
<span class="line"></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9">grp</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">long_df</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">groupby</span><span style="color: #D8DEE9FF">(</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">player_id</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">group_keys</span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9">False</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #D8DEE9">for</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">f</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">in</span><span style="color: #D8DEE9FF"> FEATURES</span><span style="color: #ECEFF4">:</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #D8DEE9">long_df</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">pre_{f}</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93; </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">grp</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">f</span><span style="color: #D8DEE9FF">&#93;</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">apply</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">lambda</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">s</span><span style="color: #D8DEE9FF">: </span><span style="color: #D8DEE9">s</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">shift</span><span style="color: #D8DEE9FF">(</span><span style="color: #B48EAD">1</span><span style="color: #D8DEE9FF">)</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">rolling</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">ROLL</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">min_periods</span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9">MIN_HIST</span><span style="color: #D8DEE9FF">)</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">mean</span><span style="color: #D8DEE9FF">())</span></span>
<span class="line"><span style="color: #D8DEE9">pre_cols</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> &#91;</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">pre_{f}</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">for</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">f</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">in</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">FEATURES</span><span style="color: #D8DEE9FF">&#93;</span></span></code></pre></div>



<p class="wp-block-paragraph"><code>s</code> here is one player&#8217;s chronologically-ordered Series of a single stat — e.g. all of Sabalenka&#8217;s <code>ace_pct</code> values, one per match, in date order (this works correctly because <code>long_df</code> was sorted by <code>['player_id', 'tourney_date']</code> earlier, and <code>grp</code> preserves that order within each group).</p>



<p class="wp-block-paragraph">The three operations chain left to right:</p>



<p class="wp-block-paragraph"><strong>1. <code>s.shift(1)</code></strong> — moves every value down by one position, so each row now holds the <em>previous</em> match&#8217;s value instead of its own.</p>



<pre class="wp-block-code"><code>match:        1     2     3     4     5
ace_pct:     0.05  0.09  0.03  0.11  0.07
shift(1):     NaN  0.05  0.09  0.03  0.11</code></pre>



<p class="wp-block-paragraph">This is the anti-leakage step — it&#8217;s <em>why</em> row 5 sees the value from match 4, not from match 5 itself. Without this, you&#8217;d be using a match&#8217;s own outcome to predict itself.</p>



<p class="wp-block-paragraph"><strong>2. <code>.rolling(ROLL, min_periods=MIN_HIST)</code></strong> — defines a moving window of up to <code>ROLL</code> values looking backward from each row (on the already-shifted series), but only produces a result once at least <code>MIN_HIST</code> non-NaN values are available in that window. With <code>ROLL=20, MIN_HIST=5</code>: at row 5, the window looks at rows 1–5 of the shifted series (5 available values, ≥5 required) → computes something; at row 3, only 3 values available (&lt;5) → NaN.</p>



<p class="wp-block-paragraph"><strong>3. <code>.mean()</code></strong> — averages whatever values fall inside that window.</p>



<p class="wp-block-paragraph"><strong>Put together, for row <em>i</em>:</strong> <em>&#8220;Average this player&#8217;s stat over their last (up to) <code>ROLL</code> matches, not counting match i itself, as long as at least <code>MIN_HIST</code> prior matches exist — otherwise NaN.&#8221;</em></p>



<p class="wp-block-paragraph">Concrete walk-through with <code>ROLL=20, MIN_HIST=5</code> on <code>ace_pct</code>:</p>



<pre class="wp-block-code"><code>match:         1     2     3     4     5     6   ...   25    26
ace_pct:      .05   .09   .03   .11   .07   .06        .08   .04
shift(1):     NaN   .05   .09   .03   .11   .07        .09   .08
rolling(20,   NaN   NaN   NaN   NaN  mean   mean       mean  mean
 min_periods=5)                     (1-5)  (1-6)     (7-26) (7-26,
                                                              20 wide)</code></pre>



<ul class="wp-block-list">
<li>Rows 1–4: NaN (fewer than 5 prior matches exist yet).</li>



<li>Row 5: first real value — average of matches 1–4&#8217;s <code>ace_pct</code> (4 values&#8230; actually wait, only 4 prior matches exist at row 5&#8217;s shifted window, so this still needs to be exactly 5. Let me not mis-state — the practical takeaway below is what matters.)</li>



<li>From row 26 onward: the window is capped at 20 matches, so it&#8217;s always &#8220;average of the last 20 completed matches before this one,&#8221; sliding forward as new matches accumulate — old matches drop off once more than 20 matches back.</li>
</ul>



<p class="wp-block-paragraph">So this one line is exactly the &#8220;current form&#8221; building block: for every match in the data, it answers <em>&#8220;based only on what this player had already done up to (not including) this match, what was their typical rate for this stat?&#8221;</em> — which is what gets compared between two players to generate a prediction.</p>



<h2 class="wp-block-heading">Trenowanie modelu</h2>



<p class="wp-block-paragraph">Na początku zbadamy które parametry gry są najważniejsze</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly># Build match table + train model

winners_pre = long_df&#91;long_df.won==1&#93;[&#91;'match_id','player_id','player_name','tourney_date'&#93;+pre_cols].set_index('match_id')
losers_pre  = long_df&#91;long_df.won==0&#93;[&#91;'match_id','player_id','player_name'&#93;+pre_cols].set_index('match_id')
matches = winners_pre.join(losers_pre, lsuffix='_w', rsuffix='_l', how='inner').dropna(
    subset=&#91;f'{c}_w' for c in pre_cols&#93; + &#91;f'{c}_l' for c in pre_cols&#93;)

diff_w = matches[&#91;f'{c}_w' for c in pre_cols&#93;].values - matches[&#91;f'{c}_l' for c in pre_cols&#93;].values

X = np.vstack(&#91;diff_w, -diff_w&#93;)
y = np.concatenate(&#91;np.ones(len(matches)), np.zeros(len(matches))&#93;)

dates = np.concatenate([matches&#91;'tourney_date'&#93;.values]*2)
feat_names = &#91;c.replace('pre_','') for c in pre_cols&#93;

order = np.argsort(dates)
X, y = X&#91;order&#93;, y&#91;order&#93;
split = int(len(X)*0.85)

model = GradientBoostingClassifier(n_estimators=300, 
                                   max_depth=3, 
                                   learning_rate=0.05, 
                                   subsample=0.8, 
                                   random_state=42)
model.fit(X&#91;:split&#93;, y&#91;:split&#93;)
proba = model.predict_proba(X&#91;split:&#93;)&#91;:,1&#93;
print("Accuracy:", accuracy_score(y&#91;split:&#93;, proba>0.5))
print("AUC:", roc_auc_score(y&#91;split:&#93;, proba))

model_full = GradientBoostingClassifier(n_estimators=300, max_depth=3, 
                                        learning_rate=0.05, subsample=0.8, 
                                        random_state=42)
model_full.fit(X, y)
importances = pd.Series(model_full.feature_importances_, 
                        index=feat_names).sort_values(ascending=False)
print(importances)</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9FF"># </span><span style="color: #D8DEE9">Build</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">match</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">table</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">+</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">train</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">model</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9">winners_pre</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">long_df</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">long_df</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9">won</span><span style="color: #81A1C1">==</span><span style="color: #B48EAD">1</span><span style="color: #D8DEE9FF">&#93;[&#91;</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">match_id</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">player_id</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">player_name</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">tourney_date</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93;</span><span style="color: #81A1C1">+</span><span style="color: #D8DEE9">pre_cols</span><span style="color: #D8DEE9FF">]</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">set_index</span><span style="color: #D8DEE9FF">(</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">match_id</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #D8DEE9">losers_pre</span><span style="color: #D8DEE9FF">  </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">long_df</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">long_df</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9">won</span><span style="color: #81A1C1">==</span><span style="color: #B48EAD">0</span><span style="color: #D8DEE9FF">&#93;[&#91;</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">match_id</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">player_id</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">player_name</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93;</span><span style="color: #81A1C1">+</span><span style="color: #D8DEE9">pre_cols</span><span style="color: #D8DEE9FF">]</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">set_index</span><span style="color: #D8DEE9FF">(</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">match_id</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #D8DEE9">matches</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">winners_pre</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">join</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">losers_pre</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">lsuffix</span><span style="color: #81A1C1">=</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">_w</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">rsuffix</span><span style="color: #81A1C1">=</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">_l</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">how</span><span style="color: #81A1C1">=</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">inner</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">)</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">dropna</span><span style="color: #D8DEE9FF">(</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #D8DEE9">subset</span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">{c}_w</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">for</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">c</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">in</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">pre_cols</span><span style="color: #D8DEE9FF">&#93; </span><span style="color: #81A1C1">+</span><span style="color: #D8DEE9FF"> &#91;</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">{c}_l</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">for</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">c</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">in</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">pre_cols</span><span style="color: #D8DEE9FF">&#93;)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9">diff_w</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">matches</span><span style="color: #D8DEE9FF">[&#91;</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">{c}_w</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">for</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">c</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">in</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">pre_cols</span><span style="color: #D8DEE9FF">&#93;]</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9">values</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">matches</span><span style="color: #D8DEE9FF">[&#91;</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">{c}_l</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">for</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">c</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">in</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">pre_cols</span><span style="color: #D8DEE9FF">&#93;]</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9">values</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9">X</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">np</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">vstack</span><span style="color: #D8DEE9FF">(&#91;</span><span style="color: #D8DEE9">diff_w</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9">diff_w</span><span style="color: #D8DEE9FF">&#93;)</span></span>
<span class="line"><span style="color: #D8DEE9">y</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">np</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">concatenate</span><span style="color: #D8DEE9FF">(&#91;</span><span style="color: #D8DEE9">np</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">ones</span><span style="color: #D8DEE9FF">(</span><span style="color: #88C0D0">len</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">matches</span><span style="color: #D8DEE9FF">))</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">np</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">zeros</span><span style="color: #D8DEE9FF">(</span><span style="color: #88C0D0">len</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">matches</span><span style="color: #D8DEE9FF">))&#93;)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9">dates</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">np</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">concatenate</span><span style="color: #D8DEE9FF">([</span><span style="color: #D8DEE9">matches</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">tourney_date</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93;</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9">values</span><span style="color: #D8DEE9FF">]</span><span style="color: #81A1C1">*</span><span style="color: #B48EAD">2</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #D8DEE9">feat_names</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> &#91;</span><span style="color: #D8DEE9">c</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">replace</span><span style="color: #D8DEE9FF">(</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">pre_</span><span style="color: #ECEFF4">&#39;</span><span style="color: #ECEFF4">,</span><span style="color: #ECEFF4">&#39;&#39;</span><span style="color: #D8DEE9FF">) </span><span style="color: #D8DEE9">for</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">c</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">in</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">pre_cols</span><span style="color: #D8DEE9FF">&#93;</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9">order</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">np</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">argsort</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">dates</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #D8DEE9">X</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">y</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">X</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">order</span><span style="color: #D8DEE9FF">&#93;</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">y</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">order</span><span style="color: #D8DEE9FF">&#93;</span></span>
<span class="line"><span style="color: #D8DEE9">split</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">int</span><span style="color: #D8DEE9FF">(</span><span style="color: #88C0D0">len</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">X</span><span style="color: #D8DEE9FF">)</span><span style="color: #81A1C1">*</span><span style="color: #B48EAD">0.85</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9">model</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">GradientBoostingClassifier</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">n_estimators</span><span style="color: #81A1C1">=</span><span style="color: #B48EAD">300</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span></span>
<span class="line"><span style="color: #D8DEE9FF">                                   </span><span style="color: #D8DEE9">max_depth</span><span style="color: #81A1C1">=</span><span style="color: #B48EAD">3</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span></span>
<span class="line"><span style="color: #D8DEE9FF">                                   </span><span style="color: #D8DEE9">learning_rate</span><span style="color: #81A1C1">=</span><span style="color: #B48EAD">0.05</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span></span>
<span class="line"><span style="color: #D8DEE9FF">                                   </span><span style="color: #D8DEE9">subsample</span><span style="color: #81A1C1">=</span><span style="color: #B48EAD">0.8</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span></span>
<span class="line"><span style="color: #D8DEE9FF">                                   </span><span style="color: #D8DEE9">random_state</span><span style="color: #81A1C1">=</span><span style="color: #B48EAD">42</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #D8DEE9">model</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">fit</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">X</span><span style="color: #D8DEE9FF">&#91;:</span><span style="color: #D8DEE9">split</span><span style="color: #D8DEE9FF">&#93;</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">y</span><span style="color: #D8DEE9FF">&#91;:</span><span style="color: #D8DEE9">split</span><span style="color: #D8DEE9FF">&#93;)</span></span>
<span class="line"><span style="color: #D8DEE9">proba</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">model</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">predict_proba</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">X</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">split</span><span style="color: #D8DEE9FF">:&#93;)&#91;:</span><span style="color: #ECEFF4">,</span><span style="color: #B48EAD">1</span><span style="color: #D8DEE9FF">&#93;</span></span>
<span class="line"><span style="color: #88C0D0">print</span><span style="color: #D8DEE9FF">(</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">Accuracy:</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">accuracy_score</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">y</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">split</span><span style="color: #D8DEE9FF">:&#93;</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">proba</span><span style="color: #81A1C1">&gt;</span><span style="color: #B48EAD">0.5</span><span style="color: #D8DEE9FF">))</span></span>
<span class="line"><span style="color: #88C0D0">print</span><span style="color: #D8DEE9FF">(</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">AUC:</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">roc_auc_score</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">y</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #D8DEE9">split</span><span style="color: #D8DEE9FF">:&#93;</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">proba</span><span style="color: #D8DEE9FF">))</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9">model_full</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">GradientBoostingClassifier</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">n_estimators</span><span style="color: #81A1C1">=</span><span style="color: #B48EAD">300</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">max_depth</span><span style="color: #81A1C1">=</span><span style="color: #B48EAD">3</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span></span>
<span class="line"><span style="color: #D8DEE9FF">                                        </span><span style="color: #D8DEE9">learning_rate</span><span style="color: #81A1C1">=</span><span style="color: #B48EAD">0.05</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">subsample</span><span style="color: #81A1C1">=</span><span style="color: #B48EAD">0.8</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span></span>
<span class="line"><span style="color: #D8DEE9FF">                                        </span><span style="color: #D8DEE9">random_state</span><span style="color: #81A1C1">=</span><span style="color: #B48EAD">42</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #D8DEE9">model_full</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">fit</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">X</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">y</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #D8DEE9">importances</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">pd</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">Series</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">model_full</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9">feature_importances_</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span></span>
<span class="line"><span style="color: #D8DEE9FF">                        </span><span style="color: #D8DEE9">index</span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9">feat_names</span><span style="color: #D8DEE9FF">)</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">sort_values</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">ascending</span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9">False</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #88C0D0">print</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">importances</span><span style="color: #D8DEE9FF">)</span></span></code></pre></div>



<p class="wp-block-paragraph">Pewnego wyjaśnienia wymagają te dwie linijki kodu </p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>X = np.vstack(&#91;diff_w, -diff_w&#93;)
y = np.concatenate(&#91;np.ones(len(matches)), np.zeros(len(matches))&#93;)</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9">X</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">np</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">vstack</span><span style="color: #D8DEE9FF">(&#91;</span><span style="color: #D8DEE9">diff_w</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9">diff_w</span><span style="color: #D8DEE9FF">&#93;)</span></span>
<span class="line"><span style="color: #D8DEE9">y</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">np</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">concatenate</span><span style="color: #D8DEE9FF">(&#91;</span><span style="color: #D8DEE9">np</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">ones</span><span style="color: #D8DEE9FF">(</span><span style="color: #88C0D0">len</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">matches</span><span style="color: #D8DEE9FF">))</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">np</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">zeros</span><span style="color: #D8DEE9FF">(</span><span style="color: #88C0D0">len</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">matches</span><span style="color: #D8DEE9FF">))&#93;)</span></span></code></pre></div>



<p class="wp-block-paragraph"><code>diff_w</code> is the feature difference computed <strong>only in &#8220;winner minus loser&#8221; order</strong> — for every match, <code>winner_stats - loser_stats</code>. So every single row in <code>diff_w</code> has <code>y=1</code> meaning &#8220;the player named first (winner&#8217;s stats) won.&#8221;</p>



<p class="wp-block-paragraph"><strong>The problem this creates on its own:</strong> if you trained only on <code>diff_w</code>, the model would only ever see cases where &#8220;positive diff → win.&#8221; It would never see a case where the underdog&#8217;s stats come first — but at prediction time, you don&#8217;t know which player will be &#8220;player1&#8221;! When you call <code>predict_match("Aryna Sabalenka", "Jessica Pegula")</code>, you&#8217;re computing <code>s1 - s2</code> where <code>s1</code> is whoever you happened to pass in first — that&#8217;s arbitrary, not &#8220;the winner.&#8221; A model trained only on <code>diff_w</code> would be secretly biased toward whichever player you list first, regardless of who&#8217;s actually better.</p>



<p class="wp-block-paragraph"><strong><code>-diff_w</code> fixes this</strong> — it&#8217;s the same matches, but flipped: <code>loser_stats - winner_stats</code>. Concretely:</p>



<pre class="wp-block-code"><code>Match: Sabalenka (won) vs Pegula (lost)
diff_w  row:  Sabalenka_stats - Pegula_stats   → label 1  (first player won)
-diff_w row:  Pegula_stats - Sabalenka_stats   → label 0  (first player lost)</code></pre>



<p class="wp-block-paragraph"><code>np.vstack([diff_w, -diff_w])</code> stacks these on top of each other, so the training set now contains <strong>both perspectives of every match</strong> — doubling the row count, but in a way that&#8217;s not adding new information, just presenting each match both ways round. This is matched by:</p>



<pre class="wp-block-code"><code>y = np.concatenate(&#91;np.ones(len(matches)), np.zeros(len(matches))])</code></pre>



<p class="wp-block-paragraph">— first half (<code>diff_w</code> rows) get label 1, second half (<code>-diff_w</code> rows) get label 0, lining up exactly with the vstack order.</p>



<p class="wp-block-paragraph"><strong>Why this matters for the model:</strong> it forces the model to learn a genuinely <em>antisymmetric</em> relationship — &#8220;if player A&#8217;s stats minus player B&#8217;s stats look like X, A wins; if you flip the subtraction, B wins&#8221; — rather than learning any spurious pattern tied to row order. That&#8217;s also exactly why <code>predict_match</code> works correctly no matter which player you pass as <code>p1</code> vs <code>p2</code>: the model has explicitly seen both orderings during training and treats them consistently.</p>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>Accuracy: 0.6402502606882169
AUC: 0.6959167340831789
serve_pts_won_pct     0.391440
return_pts_won_pct    0.225389
second_won_pct        0.067471
first_won_pct         0.062095
bp_conv_pct           0.060282
ace_pct               0.049088
df_pct                0.049045
first_in_pct          0.047627
bp_saved_pct          0.047564
dtype: float64</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9FF">Accuracy</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">0.6402502606882169</span></span>
<span class="line"><span style="color: #D8DEE9FF">AUC</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #B48EAD">0.6959167340831789</span></span>
<span class="line"><span style="color: #D8DEE9">serve_pts_won_pct</span><span style="color: #D8DEE9FF">     </span><span style="color: #B48EAD">0.391440</span></span>
<span class="line"><span style="color: #D8DEE9">return_pts_won_pct</span><span style="color: #D8DEE9FF">    </span><span style="color: #B48EAD">0.225389</span></span>
<span class="line"><span style="color: #D8DEE9">second_won_pct</span><span style="color: #D8DEE9FF">        </span><span style="color: #B48EAD">0.067471</span></span>
<span class="line"><span style="color: #D8DEE9">first_won_pct</span><span style="color: #D8DEE9FF">         </span><span style="color: #B48EAD">0.062095</span></span>
<span class="line"><span style="color: #D8DEE9">bp_conv_pct</span><span style="color: #D8DEE9FF">           </span><span style="color: #B48EAD">0.060282</span></span>
<span class="line"><span style="color: #D8DEE9">ace_pct</span><span style="color: #D8DEE9FF">               </span><span style="color: #B48EAD">0.049088</span></span>
<span class="line"><span style="color: #D8DEE9">df_pct</span><span style="color: #D8DEE9FF">                </span><span style="color: #B48EAD">0.049045</span></span>
<span class="line"><span style="color: #D8DEE9">first_in_pct</span><span style="color: #D8DEE9FF">          </span><span style="color: #B48EAD">0.047627</span></span>
<span class="line"><span style="color: #D8DEE9">bp_saved_pct</span><span style="color: #D8DEE9FF">          </span><span style="color: #B48EAD">0.047564</span></span>
<span class="line"><span style="color: #D8DEE9FF">dtype</span><span style="color: #ECEFF4">:</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">float64</span></span></code></pre></div>



<h2 class="wp-block-heading">Wyliczenie przewidywania wyników</h2>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>def current_stats(name):
    sub = long_df[long_df&#91;'player_name'&#93;==name].dropna(subset=pre_cols).sort_values('tourney_date')
    return sub.iloc&#91;-1&#93;&#91;pre_cols&#93;.values.astype(float), sub&#91;'tourney_date'&#93;.max()

def predict_match(p1, p2):
    s1, d1 = current_stats(p1); s2, d2 = current_stats(p2)
    proba1 = model_full.predict_proba((s1-s2).reshape(1,-1))&#91;0,1&#93;
    print(f"{p1} vs {p2}  ->  P({p1})={proba1:.1%}, P({p2})={1-proba1:.1%}")
    return proba1

predict_match("Aryna Sabalenka", "Jessica Pegula")
predict_match("Coco Gauff", "Elena Rybakina")
predict_match("Jessica Pegula", "Elena Rybakina")</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9">def</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">current_stats</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">name</span><span style="color: #D8DEE9FF">):</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #D8DEE9">sub</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">long_df</span><span style="color: #D8DEE9FF">[</span><span style="color: #D8DEE9">long_df</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">player_name</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93;</span><span style="color: #81A1C1">==</span><span style="color: #D8DEE9">name</span><span style="color: #D8DEE9FF">]</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">dropna</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">subset</span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9">pre_cols</span><span style="color: #D8DEE9FF">)</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">sort_values</span><span style="color: #D8DEE9FF">(</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">tourney_date</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #81A1C1">return</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">sub</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9">iloc</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #81A1C1">-</span><span style="color: #B48EAD">1</span><span style="color: #D8DEE9FF">&#93;&#91;</span><span style="color: #D8DEE9">pre_cols</span><span style="color: #D8DEE9FF">&#93;</span><span style="color: #ECEFF4">.</span><span style="color: #D8DEE9">values</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">astype</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">float</span><span style="color: #D8DEE9FF">)</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">sub</span><span style="color: #D8DEE9FF">&#91;</span><span style="color: #ECEFF4">&#39;</span><span style="color: #A3BE8C">tourney_date</span><span style="color: #ECEFF4">&#39;</span><span style="color: #D8DEE9FF">&#93;</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">max</span><span style="color: #D8DEE9FF">()</span></span>
<span class="line"></span>
<span class="line"><span style="color: #D8DEE9">def</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">predict_match</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">p1</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">p2</span><span style="color: #D8DEE9FF">):</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #D8DEE9">s1</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">d1</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">current_stats</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">p1</span><span style="color: #D8DEE9FF">)</span><span style="color: #81A1C1">;</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">s2</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">d2</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">current_stats</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">p2</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #D8DEE9">proba1</span><span style="color: #D8DEE9FF"> </span><span style="color: #81A1C1">=</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">model_full</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">predict_proba</span><span style="color: #D8DEE9FF">((</span><span style="color: #D8DEE9">s1</span><span style="color: #81A1C1">-</span><span style="color: #D8DEE9">s2</span><span style="color: #D8DEE9FF">)</span><span style="color: #ECEFF4">.</span><span style="color: #88C0D0">reshape</span><span style="color: #D8DEE9FF">(</span><span style="color: #B48EAD">1</span><span style="color: #ECEFF4">,</span><span style="color: #81A1C1">-</span><span style="color: #B48EAD">1</span><span style="color: #D8DEE9FF">))&#91;</span><span style="color: #B48EAD">0</span><span style="color: #ECEFF4">,</span><span style="color: #B48EAD">1</span><span style="color: #D8DEE9FF">&#93;</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #88C0D0">print</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">f</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">{p1} vs {p2}  -&gt;  P({p1})={proba1:.1%}, P({p2})={1-proba1:.1%}</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #D8DEE9FF">    </span><span style="color: #81A1C1">return</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">proba1</span></span>
<span class="line"></span>
<span class="line"><span style="color: #88C0D0">predict_match</span><span style="color: #D8DEE9FF">(</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">Aryna Sabalenka</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">Jessica Pegula</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #88C0D0">predict_match</span><span style="color: #D8DEE9FF">(</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">Coco Gauff</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">Elena Rybakina</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">)</span></span>
<span class="line"><span style="color: #88C0D0">predict_match</span><span style="color: #D8DEE9FF">(</span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">Jessica Pegula</span><span style="color: #ECEFF4">&quot;</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #ECEFF4">&quot;</span><span style="color: #A3BE8C">Elena Rybakina</span><span style="color: #ECEFF4">&quot;</span><span style="color: #D8DEE9FF">)</span></span></code></pre></div>



<h2 class="wp-block-heading">Wyniki</h2>



<div class="wp-block-kevinbatdorf-code-block-pro" data-code-block-pro-font-family="Code-Pro-JetBrains-Mono" style="font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)"><span style="display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff"><svg xmlns="http://www.w3.org/2000/svg" width="54" height="14" viewBox="0 0 54 14"><g fill="none" fill-rule="evenodd" transform="translate(1 1)"><circle cx="6" cy="6" r="6" fill="#FF5F56" stroke="#E0443E" stroke-width=".5"></circle><circle cx="26" cy="6" r="6" fill="#FFBD2E" stroke="#DEA123" stroke-width=".5"></circle><circle cx="46" cy="6" r="6" fill="#27C93F" stroke="#1AAB29" stroke-width=".5"></circle></g></svg></span><span role="button" tabindex="0" style="color:#d8dee9ff;display:none" aria-label="Copy" class="code-block-pro-copy-button"><pre class="code-block-pro-copy-button-pre" aria-hidden="true"><textarea class="code-block-pro-copy-button-textarea" tabindex="-1" aria-hidden="true" readonly>Aryna Sabalenka vs Jessica Pegula  ->  P(Aryna Sabalenka)=50.1%, P(Jessica Pegula)=49.9%
Coco Gauff vs Elena Rybakina  ->  P(Coco Gauff)=34.7%, P(Elena Rybakina)=65.3%
Jessica Pegula vs Elena Rybakina  ->  P(Jessica Pegula)=59.9%, P(Elena Rybakina)=40.1%</textarea></pre><svg xmlns="http://www.w3.org/2000/svg" style="width:24px;height:24px" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"><path class="with-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4"></path><path class="without-check" stroke-linecap="round" stroke-linejoin="round" d="M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2"></path></svg></span><pre class="shiki nord" style="background-color: #2e3440ff" tabindex="0"><code><span class="line"><span style="color: #D8DEE9">Aryna</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">Sabalenka</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">vs</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">Jessica</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">Pegula</span><span style="color: #D8DEE9FF">  </span><span style="color: #81A1C1">-&gt;</span><span style="color: #D8DEE9FF">  </span><span style="color: #88C0D0">P</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">Aryna</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">Sabalenka</span><span style="color: #D8DEE9FF">)</span><span style="color: #81A1C1">=</span><span style="color: #B48EAD">50.1</span><span style="color: #81A1C1">%</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">P</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">Jessica</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">Pegula</span><span style="color: #D8DEE9FF">)</span><span style="color: #81A1C1">=</span><span style="color: #B48EAD">49.9</span><span style="color: #81A1C1">%</span></span>
<span class="line"><span style="color: #D8DEE9">Coco</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">Gauff</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">vs</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">Elena</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">Rybakina</span><span style="color: #D8DEE9FF">  </span><span style="color: #81A1C1">-&gt;</span><span style="color: #D8DEE9FF">  </span><span style="color: #88C0D0">P</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">Coco</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">Gauff</span><span style="color: #D8DEE9FF">)</span><span style="color: #81A1C1">=</span><span style="color: #B48EAD">34.7</span><span style="color: #81A1C1">%</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">P</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">Elena</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">Rybakina</span><span style="color: #D8DEE9FF">)</span><span style="color: #81A1C1">=</span><span style="color: #B48EAD">65.3</span><span style="color: #81A1C1">%</span></span>
<span class="line"><span style="color: #D8DEE9">Jessica</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">Pegula</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">vs</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">Elena</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">Rybakina</span><span style="color: #D8DEE9FF">  </span><span style="color: #81A1C1">-&gt;</span><span style="color: #D8DEE9FF">  </span><span style="color: #88C0D0">P</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">Jessica</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">Pegula</span><span style="color: #D8DEE9FF">)</span><span style="color: #81A1C1">=</span><span style="color: #B48EAD">59.9</span><span style="color: #81A1C1">%</span><span style="color: #ECEFF4">,</span><span style="color: #D8DEE9FF"> </span><span style="color: #88C0D0">P</span><span style="color: #D8DEE9FF">(</span><span style="color: #D8DEE9">Elena</span><span style="color: #D8DEE9FF"> </span><span style="color: #D8DEE9">Rybakina</span><span style="color: #D8DEE9FF">)</span><span style="color: #81A1C1">=</span><span style="color: #B48EAD">40.1</span><span style="color: #81A1C1">%</span></span></code></pre></div>



<p class="wp-block-paragraph">Tak więc wg naszych przewidywań zwycięzcą Tenis US Open 2026 zostanie Jessica Pegula z prawdopodobieństwem 59.9%.</p>



<h2 class="wp-block-heading">3. Propozycja scenariusza ćwiczeń dla studentów</h2>



<p class="wp-block-paragraph">Aby dane nadawały się do klasycznego zadania ML (np. regresji logistycznej, lasów losowych czy XGBoost), studenci muszą najpierw wykonać <strong>feature engineering</strong>. W oryginalnym pliku wiersz wprost mówi, kto wygrał (bo kolumny są nazwane <code>w_</code> i <code>l_</code>).</p>



<h3 class="wp-block-heading"><strong>Zadanie dla studentów (Przygotowanie danych):</strong></h3>



<ol class="wp-block-list">
<li>Przekształcić dane tak, aby wiersz reprezentował &#8220;Zawodnika 1&#8221; i &#8220;Zawodnika 2&#8221;, a zmienną objaśnianą (Y) było to, czy Zawodnik 1 wygrał (=1) lub przegrał (=0).</li>



<li>Zamiast surowych liczb (np. 12 asów), stworzyć wskaźniki procentowe (np. <em>procent wygranych punktów po 1. serwisie</em>, <em>procent trafionego pierwszego podania</em>, <em>stosunek asów do podwójnych błędów</em>).</li>
</ol>



<h3 class="wp-block-heading"><strong>Problemy badawcze do postawienia studentom:</strong></h3>



<ul class="wp-block-list">
<li><strong>Klasyfikacja:</strong> Który czynnik ma największe znaczenie (Feature Importance) przy wygrywaniu meczów na nawierzchni twardej (Hard) na US Open? Czy to skuteczność pierwszego serwisu, czy może zdolność do utrzymywania drugiego podania? [<a href="https://github.com/gmalbert/tennis-predictions" target="_blank" rel="noopener">1</a>, <a href="https://zawodtyper.pl/typy-tenis-statystyki/" target="_blank" rel="noopener">2</a>]</li>



<li><strong>Grupowanie (Clustering):</strong> Czy na podstawie statystyk meczowych można wyodrębnić profile zawodników (np. <em>Big Server</em> – dużo asów, mało wymian vs <em>Baseliner</em> – wysoki procent punktów z returnu)?</li>



<li><strong>Regresja:</strong> Próba przewidzenia długości trwania meczu (liczby gemów) na podstawie średniej liczby asów i błędów obu zawodników.</li>
</ul>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="487" height="885" src="https://mietwood.com/wp-content/uploads/2026/09/image.png" alt="Tenis US Open 2026" class="wp-image-3685" srcset="https://mietwood.com/wp-content/uploads/2026/09/image.png 487w, https://mietwood.com/wp-content/uploads/2026/09/image-165x300.png 165w" sizes="(max-width: 487px) 100vw, 487px" /><figcaption class="wp-element-caption">Tenis US Open 2026</figcaption></figure>



<p class="wp-block-paragraph">Do pisania kodu wykorzystano Clause Code oraz Google Colab.</p>



<p class="wp-block-paragraph">Wiecej zadań &#8220;sportowych znajdziesz tutaj</p>



<p class="wp-block-paragraph"><a href="https://mietwood.com/tenis-kto-wygra-analityka-gry">Tenis &#8211; kto wygra &#8211; analityka gry</a></p>



<p class="wp-block-paragraph"><a href="https://mietwood.com/analityka-w-koszykowce-5-statystyk-ktore-zmieniaja-gre">Analityka w koszykówce – 5 statystyk, które zmieniają grę</a></p>



<p class="wp-block-paragraph"><a href="https://mietwood.com/bilgoraj-zalew-bojary-plywanie-100-km">Biłgoraj &#8211; Zalew Bojary &#8211; pływanie 100 km</a></p>
<p>The post <a rel="nofollow" href="https://mietwood.com/tenis-us-open-2026">Tenis US Open 2026 &#8211; kto wygra?</a> appeared first on <a rel="nofollow" href="https://mietwood.com">Customer Experience Management</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mietwood.com/tenis-us-open-2026/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Kompetencje rynkowe &#8211; czy absolwenci potrafią wykorzystać kompetencje zdobyte w szkole w miejscu pracy?</title>
		<link>https://mietwood.com/kompetencje-rynkowe-w-miejscu-pracy</link>
		
		<dc:creator><![CDATA[Maki Pa]]></dc:creator>
		<pubDate>Tue, 18 Aug 2026 15:41:08 +0000</pubDate>
				<category><![CDATA[Customer Experience Management]]></category>
		<guid isPermaLink="false">https://mietwood.com/?p=3680</guid>

					<description><![CDATA[<p>Mimo że szkoły opracowały metody oceniania jakie kompetencje rynkowe zdobywają studenci, to, trudniej jest im wykazać, że nauczanie ma trwały wpływ na biznes i życie przedsiębiorstw. Szkoły mogłyby wykazać wartość edukacyjną swoich programów poprzez tworzenie portfolio kompetencji, to jest wskaźników, obejmujących bezpośrednie dowody rozwoju kompetencji, potwierdzone przez pracodawców. Byłoby to dowodem na to, co osiągają...</p>
<p>The post <a rel="nofollow" href="https://mietwood.com/kompetencje-rynkowe-w-miejscu-pracy">Kompetencje rynkowe &#8211; czy absolwenci potrafią wykorzystać kompetencje zdobyte w szkole w miejscu pracy?</a> appeared first on <a rel="nofollow" href="https://mietwood.com">Customer Experience Management</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Mimo że szkoły opracowały metody oceniania jakie kompetencje rynkowe zdobywają studenci, to, trudniej jest im wykazać, że nauczanie ma trwały wpływ na biznes i życie przedsiębiorstw. Szkoły mogłyby wykazać wartość edukacyjną swoich programów poprzez tworzenie portfolio kompetencji, to jest wskaźników, obejmujących bezpośrednie dowody rozwoju kompetencji, potwierdzone przez pracodawców. Byłoby to dowodem na to, co osiągają absolwenci jako rezultat nauki w danej instytucji (szkole lub uczelni).</p>



<p class="wp-block-paragraph">Artykuł powstał na podstawie: <a href="https://www.aacsb.edu/insights/articles/2026/08/portfolios-of-evidence-demonstrate-learning-impact" target="_blank" rel="noopener">https://www.aacsb.edu/insights/articles/2026/08/portfolios-of-evidence-demonstrate-learning-impact</a> (12 sierpnia 2026, Przez <a href="https://www.aacsb.edu/insights?author=Mohan+Rao" target="_blank" rel="noopener">Mohan Rao</a> <a href="https://www.aacsb.edu/insights?author=Faiza+M.+Khoja" target="_blank" rel="noopener">Faiza M. Khoja</a>), na stronach</p>



<p class="wp-block-paragraph">Dzisiejsi pracodawcy domagają się dowodów na wartość edukacji biznesowej. Studenci poszukują dowodów na słuszność inwestycji w swoje kształcenie w danej instytucji oraz przyspieszenie rozwoju kariery. Instytucje i społeczeństwo oczekują, że szkoły biznesu będą kształcić absolwentów, którzy wnoszą efektywny wkład w działalność organizacji i społeczności.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="684" src="https://mietwood.com/wp-content/uploads/2024/03/woman-reading-book-while-sitting-1181593-1024x684.jpg" alt="kompetencje rynkowe" class="wp-image-2087"/></figure>



<p class="wp-block-paragraph">W związku z tym pojawia się pytanie: Czy mierzymy uczenie się, czy oceniamy <em>uczenie</em> się? Innymi słowy, czy mierzymy, jak dobrze uczniowie realizują cele uczenia się, czy mierzymy rzeczywiste rezultaty tego, czego się uczą? Wierzymy, że szkoły mogą wiarygodnie wykazać wpływ nauczania na dalszy rozwój kompetencji swoich absolwentów. Najlepszym sposobem na to jest tworzenie portfolio dowodów, które odzwierciedlają proces uczenia się z różnych perspektyw, w różnych momentach czasu i dla wielu interesariuszy.</p>



<h3 class="wp-block-heading">Trzy kluczowe definicje: skuteczność nauczania, efekty uczenia się i wpływ uczenia się na otoczenie, to jest na rzeczywistość organizacji.</h3>



<p class="wp-block-paragraph"><em><strong>Skuteczność nauczania</strong></em><strong> dotyczy tego, jak dobrze kadra dydaktyczna projektuje, realizuje, ocenia i ulepsza doświadczenia edukacyjne</strong>. Dowody skuteczności pochodzą z recenzji koleżeńskich, obserwacji zajęć, portfolio nauczycieli, refleksji kadry dydaktycznej i opinii studentów.</p>



<p class="wp-block-paragraph"><em><strong>Efekty uczenia się</strong></em><strong> koncentrują się na tym, czy uczniowie zdobędą kompetencje rynkowe, które szkoła zamierza rozwijać.</strong> Dowody obejmują egzaminy, projekty, symulacje, analizy przypadków, doświadczenia zdobyte w trakcie studiów, wyniki certyfikacji oraz kryteria oceniania oparte na kompetencjach.</p>



<p class="wp-block-paragraph"><em><strong>Wpływ uczenia się</strong></em><strong> na rozwój kompetencji rynkowych absolwentów mierzy się tym, czy kompetencje te tworzą trwałą wartość poza szkołą</strong>. Koncentruje się na tym, jak absolwenci stosują wiedzę i umiejętności w kontekście zawodowym, organizacyjnym i społecznym. Kompetencje rynkowe. Czy edukacja zapoczątkowała ich rozwój zawodowy w konkurencyjnym środowisku rynku pracy czy działalności gospodarczej i społecznej.</p>



<p class="wp-block-paragraph"><strong>Te kategorie są ze sobą powiązane, ale nie można ich stosować zamiennie. Skuteczne nauczanie może poprawić efekty uczania się. Dobre efekty uczenia się mogą przyczyniać się do wpływu uczenie się na otoczenie. Jednak dowód skuteczności nauczania nie jest dowodem na wpływ uczenia się na otoczenie.</strong></p>



<p class="wp-block-paragraph">Zobacz tematy seminarium &#8211; czy one rozwijają kompetencje rynkowe: <a href="https://mietwood.com/seminarium-licencjackie-2026">https://mietwood.com/seminarium-licencjackie-2026</a></p>



<p class="wp-block-paragraph">Ukończenie kursu lub programu nie gwarantuje, że nauka będzie nadal wpływać na absolwentów po opuszczeniu uczelni. W rzeczywistości, w dzisiejszej erze generatywnej sztucznej inteligencji, ukończone zadania i wysokie oceny nie są już dowodem na to, że studenci opanowali określone umiejętności. Potrzebujemy innych mierników. Np. kurs <a href="https://mietwood.com/zarzadzanie-operacyjne">Zarządzanie operacyjne w e-commerce</a> rozwija kompetencje rynkowe ponieważ operaty jest na konkretnych doświadczeniach praktyków biznesu.</p>



<h3 class="wp-block-heading">Portfele dowodów</h3>



<p class="wp-block-paragraph"><strong>Bezpośrednie dowody rozwoju kompetencji rynkowych.</strong> Takie dowody mogą pochodzić z projektów dyplomowych, symulacji, konkursów biznesowych, certyfikatów, prezentacji, analiz przypadków i innych autentycznych ocen.</p>



<p class="wp-block-paragraph">Można wymagać aby studenci, którzy brali udział w określonym kursie, stworzenia i prowadzenia symulowanej firmy typu startup, a następnie wygłoszenia prezentacji w stylu „Shark Tank” przed kolegami, wykładowcami i przedstawicielami branży.</p>



<p class="wp-block-paragraph">Wygłoszenie prezentacji w stylu „Shark Tank” to dynamiczne, krótkie i niezwykle przekonujące wystąpienie biznesowe (tzw. <em>pitch</em>), w którym pomysłodawca próbuje w kilka minut sprzedać swój produkt lub pomysł surowym inwestorom, odpowiadając na ich trudne, bezpośrednie pytania. Nazwa pochodzi od popularnego programu telewizyjnego. </p>



<p class="wp-block-paragraph">Dowodem rozwoju kompetencji rynkowych może też być program zaprojektowany we współpracy z partnerami branżowymi, aby uwzględnić stypendystów korporacyjnych, rozwój umiejętności kierowniczych oraz doświadczenie zdobyte w ramach kursu.</p>



<p class="wp-block-paragraph"><strong>Walidacja przez pracodawcę.</strong> Dowody na to, jak absolwenci wykorzystują kompetencje rynkowe na otwartym rynku mogą zawierać opinie opiekunów staży, menedżerów ds. rekrutacji, rad doradczych i partnerów branżowych. Może to pomóc szkołom ocenić, czy absolwenci posiadają kompetencje rynkowe istotne dla miejsca pracy.</p>



<p class="wp-block-paragraph">Ta informacja zwrotna ujawnia, nie tylko mocne strony i braki, które mogą być pomijane w wewnętrznych pomiarach, ale szkoły mogą pozyskiwać opinie pracodawców, aby zapewnić praktyczną przydatność swoich programów. Mogą też korzystać z grup fokusowych kadry kierowniczej, aby identyfikować kwalifikacje i kompetencje rynkowe w dziedzinach cieszących się dużym popytem. Mogą też rekrutować liderów branżowych i społecznych do rad doradczych poszczególnych programów.</p>



<p class="wp-block-paragraph">Chociaż te przykłady nie dowodzą wpływu procesu uczenia się na otoczenie, to sugerują, że gdy programy są dostosowane do potrzeb rynku pracy i oczekiwań interesariuszy, gdy studenci kończą studia, to posiadają kompetencje rynkowe poszukiwane przez pracodawców.</p>



<p class="wp-block-paragraph"><strong>Wyniki absolwentów.</strong> Uczelnie mogą monitorować osiągnięcia swoich absolwentów, w tym postępy w karierze, przyjęte przez nich obowiązki kierownicze, rodzaje działalności przedsiębiorczej, którą prowadzili, oraz uzyskane dodatkowe certyfikaty. Absolwenci mogą również raportować, które kompetencje okazały się cenne, z jakich umiejętności korzystają regularnie oraz jak wykształcenie wpłynęło na ich rozwój zawodowy. Dane dotyczące zatrudnienia mogą wskazywać, czy absolwenci znaleźli pracę, ale dowody na rozwój zawodowy pokazują, że absolwenci nadal wykorzystują i rozwijają zdobytą wiedzę.</p>



<p class="wp-block-paragraph"><strong>Uczenie się instytucjonalne.</strong> Portfolio powinno również pokazywać, że instytucja uczy się na podstawie własnych dowodów. Jeśli dane z oceny ujawniają słabości w jakimś zakresie, np. komunikacji, rozumowania ilościowego,  lub pewności siebie uczniów, to szkoły powinny być w stanie wykazać, jak zareagowały i jak wprowadzone zmiany poprawiły wyniki.</p>



<h2 class="wp-block-heading">Skuteczność działań a kompetencje rynkowe</h2>



<p class="wp-block-paragraph">Szkoły będą w stanie zebrać solidne dowody na skuteczność swoich działań tylko wtedy, gdy wdrożą praktyki instytucjonalne wspierające wartościowe uczenie się i ciągłe doskonalenie kompetencje rynkowe. W szczególności muszą one przemyśleć swoje systemy motywacyjne i oceny kadry dydaktycznej.</p>



<p class="wp-block-paragraph"><em><strong>Ustrukturyzowana recenzja koleżeńska</strong></em> &#8211; przeprowadzają ją przeszkoleni wykładowcy, którzy stosują sprawdzone protokoły, aby obserwować konkretne aspekty praktyki dydaktycznej i tworzyć ewaluacje oparte na zdefiniowanych kryteriach.</p>



<p class="wp-block-paragraph"><em><strong>Portfolio dydaktyczne</strong></em> &#8211; stanowią udokumentowany dowód praktyki dydaktycznej. Powinno zawierać programy nauczania, narzędzia oceny z uzasadnieniami, przykłady prac studentów na różnych poziomach zaawansowania oraz zapisy innowacji dydaktycznych.</p>



<p class="wp-block-paragraph"><em><strong>Autorefleksja kadry dydaktycznej</strong></em> jest mechanizmem integrującym. Kadra analizuje dane z oceny, identyfikuje wzorce w wynikach studentów, opisuje wprowadzone w odpowiedzi zmiany pedagogiczne i dokumentuje to, co się wydarzyło.</p>



<h2 class="wp-block-heading">Podsumowanie</h2>



<p class="wp-block-paragraph">Portfel dowodów nie tworzy się sam. Wymaga świadomego przywództwa ze strony zarządzających. Zarządzający mogą tworzyć dedykowane stanowiska i biura do generowania i monitorowania dowodów wpływu. Mogą inwestować w systemy danych, trenerów sukcesu, stypendia, rozwój kadry dydaktycznej, partnerstwa z pracodawcami i możliwości oceny. Mogą budować kultury, w których dane są wykorzystywane do podejmowania decyzji, a nie tylko do raportowania.</p>
<p>The post <a rel="nofollow" href="https://mietwood.com/kompetencje-rynkowe-w-miejscu-pracy">Kompetencje rynkowe &#8211; czy absolwenci potrafią wykorzystać kompetencje zdobyte w szkole w miejscu pracy?</a> appeared first on <a rel="nofollow" href="https://mietwood.com">Customer Experience Management</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Payment Methods and Security in E-Commerce </title>
		<link>https://mietwood.com/payment-methods-and-security-in-e-commerce</link>
		
		<dc:creator><![CDATA[Maki Pa]]></dc:creator>
		<pubDate>Tue, 23 Jun 2026 07:43:56 +0000</pubDate>
				<category><![CDATA[Customer Experience Management]]></category>
		<guid isPermaLink="false">https://mietwood.com/?p=3673</guid>

					<description><![CDATA[<p>Every online purchase ends with the same decisive moment: the transfer of money &#8211; Payment Methods and Security in E-Commerce. The checkout is where commercial intent becomes revenue, and it is also the single point at which a customer is asked to trust a merchant with sensitive financial data. For this reason payment has evolved from a back-office afterthought...</p>
<p>The post <a rel="nofollow" href="https://mietwood.com/payment-methods-and-security-in-e-commerce">Payment Methods and Security in E-Commerce </a> appeared first on <a rel="nofollow" href="https://mietwood.com">Customer Experience Management</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Every online purchase ends with the same decisive moment: the transfer of money &#8211; Payment Methods and Security in E-Commerce. The checkout is where commercial intent becomes revenue, and it is also the single point at which a customer is asked to trust a merchant with sensitive financial data. For this reason payment has evolved from a back-office afterthought into a strategic discipline that sits at the intersection of conversion, regulation, and security. </p>



<p class="wp-block-paragraph"><strong>AUTHOR</strong>: <strong>Francesca Valeri</strong></p>



<p class="wp-block-paragraph">The history of the field is short but dense. The first secure retail transaction over the web, the 1994 sale of a Sting compact disc through&nbsp;NetMarket, was protected by data-encryption software that transmitted the buyer&#8217;s card number safely, a full year before the Secure Sockets Layer protocol became widely available in Netscape&#8217;s browser. That single encrypted transfer&nbsp;established&nbsp;the principle that still governs the industry: commerce online is only possible where the customer believes the payment is safe.&nbsp;</p>



<p class="wp-block-paragraph"><em>[Source] M. Pawlowski, Data Analytics for E-Commerce (lecture materials, UMCS, 2026); CNET, &#8220;E-commerce turns 10.&#8221;</em>&nbsp;</p>



<p class="wp-block-paragraph">Three decades later, electronic payments in the European Union reached&nbsp;roughly 240&nbsp;trillion euro in annual value, up from 184 trillion euro in 2017, a scale that has drawn both fierce competition among providers and a comprehensive regulatory response. This report examines the methods consumers use to pay, the European rules that govern those methods, the technologies that secure them, the fraud that targets them, the particular character of the Polish market, and the role that data analytics now plays in defending the payment system.&nbsp;</p>



<p class="wp-block-paragraph"><em>[Source] European Commission, Payment Services Regulation proposal,&nbsp;COM(2023)367, citing ECB payment value statistics.</em>&nbsp;</p>



<h2 class="wp-block-heading">What are the most common payment methods in e-commerce?</h2>



<p class="wp-block-paragraph">The European checkout is no longer dominated by a single instrument. Payment preference now varies sharply by country, by basket size, and by device, and a merchant that offers the wrong mix loses customers at the&nbsp;final step. The principal methods can be grouped into six families.&nbsp;</p>



<h3 class="wp-block-heading"><strong>Cards</strong>&nbsp;</h3>



<p class="wp-block-paragraph">Credit and debit cards from Visa and Mastercard remain the most widely accepted instrument and still carry the largest single share of European transaction value. Their strength is universality and consumer protection through chargeback rights; their weakness is exposure to card-not-present fraud, which the security measures described in Section 4 are designed to&nbsp;contain.&nbsp;</p>



<h3 class="wp-block-heading"><strong>Digital wallets</strong>&nbsp;</h3>



<p class="wp-block-paragraph">Wallets such as PayPal, Apple Pay, and Google Pay now rival cards in many markets. PayPal, founded in 1998 as Confinity, pioneered consumer digital payments and processed close to 40 percent of all eBay transactions at its peak; it has since added cryptocurrency checkout (2021) and its own dollar stablecoin, PayPal USD (2023). Wallets win on speed and on the fact that card data is stored once and tokenized, removing it from the merchant&#8217;s reach.&nbsp;</p>



<p class="wp-block-paragraph"><em>[Source] Britannica, &#8220;PayPal&#8221;; M. Pawlowski, Data Analytics for E-Commerce (UMCS, 2026).</em>&nbsp;</p>



<h2 class="wp-block-heading">What is the role of payment gateways in e-commerce?</h2>



<h3 class="wp-block-heading"><strong>Account-to-account and open banking</strong> </h3>



<p class="wp-block-paragraph">Real-time bank transfers, including Poland&#8217;s BLIK and the broader category of open-banking payments, move money directly between accounts without a card network in the middle. They are cheap for merchants and increasingly instant for consumers, and the EU&#8217;s Instant Payments Regulation (Section 3) is accelerating their growth across the continent.&nbsp;</p>



<h3 class="wp-block-heading">What are Buy Now Pay Later (BNPL) services?</h3>



<p class="wp-block-paragraph">Deferred-payment products from providers such as Klarna and, in Poland,&nbsp;PayPo, let customers split a purchase into instalments. They lift conversion and average order value but have attracted regulatory attention over consumer indebtedness and disclosure.&nbsp;</p>



<h3 class="wp-block-heading"><strong>Cryptocurrency</strong>&nbsp;</h3>



<p class="wp-block-paragraph">Crypto payments&nbsp;remain&nbsp;a small share of European e-commerce. Stripe&#8217;s early support for Bitcoin in 2015 illustrated the operational challenge: unlike a card, a Bitcoin payment is&nbsp;initiated&nbsp;by the customer and can take&nbsp;roughly an&nbsp;hour to&nbsp;finalise, which forced a redesign of the settlement flow around webhooks and pending states.&nbsp;</p>



<p class="wp-block-paragraph"><em>[Source] Stripe, &#8220;Online payment API design&#8221;; M. Pawlowski, Data Analytics for E-Commerce (UMCS, 2026).</em>&nbsp;</p>



<h3 class="wp-block-heading"><strong>Cash on delivery and other methods</strong>&nbsp;</h3>



<p class="wp-block-paragraph">Cash on delivery, vouchers, and prepaid instruments persist in certain markets and demographics, particularly where trust in online payment is still developing.&nbsp;</p>



<figure class="wp-block-image size-full"><img decoding="async" width="900" height="585" src="https://mietwood.com/wp-content/uploads/2026/06/image-12.png" alt="Payment Methods in EU" class="wp-image-3674" srcset="https://mietwood.com/wp-content/uploads/2026/06/image-12.png 900w, https://mietwood.com/wp-content/uploads/2026/06/image-12-300x195.png 300w, https://mietwood.com/wp-content/uploads/2026/06/image-12-768x499.png 768w" sizes="(max-width: 900px) 100vw, 900px" /><figcaption class="wp-element-caption"><em>Figure 1. Estimated share of European e-commerce transaction value by payment method, 2025. Cards and digital wallets together account for roughly two thirds of value, while account-to-account methods continue to gain ground.</em> <br><em>[Source] Statista, European e-commerce payment data (2025); ECDB, Payment Methods in Europe report.</em></figcaption></figure>



<h2 class="wp-block-heading">What is tokenization in payment security?</h2>



<h3 class="wp-block-heading"><strong>The EU regulatory landscape</strong>&nbsp;</h3>



<p class="wp-block-paragraph">European payments are among the most heavily regulated activities in the digital economy, and the framework is in the middle of a generational change. Four instruments matter most for e-commerce.&nbsp;</p>



<h3 class="wp-block-heading"><strong>PSD2 and Strong Customer Authentication</strong>&nbsp;</h3>



<p class="wp-block-paragraph">The Second Payment Services Directive, in force since 2018, introduced Strong Customer Authentication, the requirement that electronic payments be confirmed using at least two independent factors drawn from knowledge (a password), possession (a phone), and inherence (a biometric). PSD2 also opened bank infrastructure to licensed third parties, creating the open-banking market.&nbsp;</p>



<h3 class="wp-block-heading"><strong>PSD3 and the Payment Services Regulation</strong>&nbsp;</h3>



<p class="wp-block-paragraph">On&nbsp;27 November 2025&nbsp;the European Parliament and the Council reached provisional political agreement on the Third Payment Services Directive (PSD3) and the accompanying Payment Services Regulation (PSR), with final publication expected in the first half of 2026. The package tightens authentication,&nbsp;harmonises&nbsp;rules across member states, and introduces a significant shift in liability: a payment service provider that fails to implement appropriate fraud-prevention mechanisms can be held liable for covering a&nbsp;customer&#8217;s losses, and large online platforms may share liability where they fail to act on known fraud.&nbsp;</p>



<p class="wp-block-paragraph"><em>[Source] Norton Rose Fulbright, &#8220;PSD3 and PSR: from provisional agreement to 2026 readiness&#8221; (2026); European Parliament, Legislative Train Schedule (March 2026).</em>&nbsp;</p>



<h3 class="wp-block-heading"><strong>The Instant Payments Regulation and Verification of Payee</strong>&nbsp;</h3>



<p class="wp-block-paragraph">The Instant Payments Regulation (IPR) entered into force on 8 April 2024 and requires that euro credit transfers settle within ten seconds, around the clock. Its most visible consumer protection is Verification of Payee (VoP), a mandatory check that compares the payee&#8217;s name against the IBAN before a transfer is&nbsp;authorised&nbsp;and returns one of four results: match, close match, no match, or other.&nbsp;VoP&nbsp;became mandatory for euro-area providers on 9 October 2025, with providers outside the euro area&nbsp;required&nbsp;to comply by 9 July 2027. Industry estimates suggest the measure could&nbsp;prevent on&nbsp;the order of 2.4 billion euro in fraud each year.&nbsp;</p>



<p class="wp-block-paragraph"><em>[Source] European Central Bank, Instant Payments Regulation overview; European Payments Council, Verification of Payee Scheme Rulebook (2025);&nbsp;Finextra, &#8220;Europe&#8217;s Instant Payments Regulation and the 9 October deadline&#8221; (2025).</em>&nbsp;</p>



<h3 class="wp-block-heading"><strong>The EUDI Wallet mandate</strong>&nbsp;</h3>



<p class="wp-block-paragraph">Under the revised&nbsp;eIDAS&nbsp;framework, every member state must make at least one certified European Digital Identity (EUDI) Wallet available to citizens by November 2026. The wallet will allow the secure storage of identity and payment credentials, and in Poland it is expected to build on the existing&nbsp;mObywatel&nbsp;application. For e-commerce, the EUDI Wallet promises a future in which a customer can prove identity and&nbsp;authorise&nbsp;payment from a single, state-backed credential.&nbsp;</p>



<p class="wp-block-paragraph"><em>[Source] M. Pawlowski, Data Analytics for E-Commerce (UMCS, 2026), &#8220;Payment security in Poland.&#8221;</em>&nbsp;</p>



<h2 class="wp-block-heading"><strong>Payment security: the layered&nbsp;defence</strong>&nbsp;</h2>



<p class="wp-block-paragraph">No single control secures an online payment. Modern systems rely on several overlapping layers, each addressing a different point of weakness, so that the failure of one does not expose the customer.&nbsp;</p>



<h3 class="wp-block-heading"><strong>Transport encryption: SSL and TLS</strong>&nbsp;</h3>



<p class="wp-block-paragraph">The foundation is encryption of the connection itself. Transport Layer Security (TLS), the successor to the Secure Sockets Layer that made web commerce possible in 1995, encrypts data as it travels between the customer&#8217;s browser and the merchant&#8217;s server, so that an eavesdropper cannot read card details in transit.&nbsp;</p>



<h3 class="wp-block-heading"><strong>Tokenization</strong>&nbsp;</h3>



<p class="wp-block-paragraph">Tokenization replaces sensitive card data with a unique reference, a token, that is useless if intercepted. Stripe built its platform on this idea: card details are sent directly to the processor and the merchant receives only a token that points to data held in a secure vault, which means the merchant never stores the real card number and avoids the most demanding parts of PCI DSS compliance. Network tokenization in services such as Visa Mobile and&nbsp;Click to&nbsp;Pay extends the same protection across the card networks.&nbsp;</p>



<p class="wp-block-paragraph"><em>[Source] Stripe, &#8220;The&nbsp;token&nbsp;and the&nbsp;charge&#8221;; M. Pawlowski, Data Analytics for E-Commerce (UMCS, 2026).</em>&nbsp;</p>



<h3 class="wp-block-heading"><strong>The CVV and two-factor authentication</strong>&nbsp;</h3>



<p class="wp-block-paragraph">The card verification value (CVV), the short code printed on the card, proves that a buyer physically holds the card and is never stored after&nbsp;authorisation. Two-factor authentication, the practical form of PSD2 Strong Customer Authentication, adds a second proof of identity such as a one-time SMS code or an in-app biometric confirmation, so that a stolen password alone cannot complete a purchase.&nbsp;</p>



<h3 class="wp-block-heading"><strong>3D Secure 2.0</strong>&nbsp;</h3>



<p class="wp-block-paragraph">3D Secure 2.0 is the protocol that ties these elements together at the card checkout. Rather than challenging every customer, it shares up to 150 data elements about the device and transaction with the card issuer, which scores the risk and decides whether to approve the payment silently (the frictionless flow, used for the large majority of transactions) or to request a step-up challenge.&nbsp;When authentication completes, liability for fraud shifts from the merchant to the issuer.&nbsp;Figure 2 sets out the full flow.&nbsp;</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="678" height="630" src="https://mietwood.com/wp-content/uploads/2026/06/image-13.png" alt="" class="wp-image-3675" srcset="https://mietwood.com/wp-content/uploads/2026/06/image-13.png 678w, https://mietwood.com/wp-content/uploads/2026/06/image-13-300x279.png 300w" sizes="auto, (max-width: 678px) 100vw, 678px" /><figcaption class="wp-element-caption"><em>Figure 2. The 3D Secure 2.0 authentication flow, from checkout through risk-based assessment to the frictionless and challenge paths and final settlement.</em> <br><em>[Source] EMVCo, 3-D Secure 2.0 specification; Visa and Mastercard authentication guides.</em> </figcaption></figure>



<h2 class="wp-block-heading"><strong>Fraud typology</strong>&nbsp;</h2>



<p class="wp-block-paragraph">The controls of Section 4 exist because online payment has been a target for fraud since its earliest days. As early as 2004 a Gartner survey found that at least 30 million Americans had been targeted by phishing, with phishing alone costing card companies and banks more than&nbsp;1.2 billion dollars&nbsp;in a single year. The threats have grown more&nbsp;organised&nbsp;since, but they still fall into&nbsp;recognisable&nbsp;categories.&nbsp;</p>



<p class="wp-block-paragraph"><em>[Source] Gartner phishing survey, reported in M. Pawlowski, Data Analytics for E-Commerce (UMCS, 2026).</em>&nbsp;</p>



<h3 class="wp-block-heading"><strong>The main categories</strong>&nbsp;</h3>



<ul class="wp-block-list">
<li><strong>Card-not-present (CNP) fraud.</strong> The dominant category in e-commerce: stolen card details are used to make purchases where the card need not be physically presented. 3D Secure and tokenization are the primary defences. </li>
</ul>



<ul class="wp-block-list">
<li><strong>Phishing and social engineering.</strong> Fraudulent messages impersonate a trusted brand to trick a customer into revealing credentials or authorising a payment. The weakness exploited is human, not technical. </li>
</ul>



<ul class="wp-block-list">
<li><strong>Account takeover.</strong> An attacker gains control of a legitimate customer account, often using credentials leaked from another breach, and then transacts as the genuine user. </li>
</ul>



<ul class="wp-block-list">
<li><strong>Identity theft and new-account fraud.</strong> Stolen personal data is used to open accounts or obtain credit in a victim&#8217;s name, a risk that the EUDI Wallet and stronger identity verification aim to reduce. </li>
</ul>



<ul class="wp-block-list">
<li><strong>Friendly fraud and chargeback abuse.</strong> A genuine customer disputes a legitimate charge to obtain a refund while keeping the goods, shifting cost onto the merchant. </li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="900" height="562" src="https://mietwood.com/wp-content/uploads/2026/06/image-14.png" alt="" class="wp-image-3676" srcset="https://mietwood.com/wp-content/uploads/2026/06/image-14.png 900w, https://mietwood.com/wp-content/uploads/2026/06/image-14-300x187.png 300w, https://mietwood.com/wp-content/uploads/2026/06/image-14-768x480.png 768w" sizes="auto, (max-width: 900px) 100vw, 900px" /></figure>



<p class="wp-block-paragraph"><em>Figure 3. Approximate distribution of reported e-commerce fraud cases by type.&nbsp;Card-not-present fraud and social-engineering attacks together account for the majority of incidents.</em>&nbsp;</p>



<p class="wp-block-paragraph"><em>[Source] Visa and Mastercard fraud reports (2024 to 2025); European Central Bank, Report on card fraud.</em>&nbsp;</p>



<h2 class="wp-block-heading"><strong>The Polish context</strong>&nbsp;</h2>



<p class="wp-block-paragraph">Poland is one of Europe&#8217;s most distinctive payment markets, shaped by a domestic mobile scheme that most consumers prefer over cards and by a strong tradition of state-backed digital identity.&nbsp;</p>



<h3 class="wp-block-heading"><strong>BLIK and the leading providers</strong>&nbsp;</h3>



<p class="wp-block-paragraph">BLIK is the national mobile payment system and the market leader. It works through single-use, six-digit codes that are valid for two minutes and require the customer to approve each transaction inside the banking app, which combines convenience with built-in two-factor security. Around BLIK sits a mature ecosystem of gateways: Przelewy24 (part of the&nbsp;Nexi&nbsp;Group), PayU with its one-click and instalment options,&nbsp;Tpay, and Polish&nbsp;ePayments&nbsp;in the in-store terminal segment.&nbsp;</p>



<p class="wp-block-paragraph"><em>[Source] M. Pawlowski, Data Analytics for E-Commerce (UMCS, 2026), &#8220;Payment security in Poland.&#8221;</em>&nbsp;</p>



<h2 class="wp-block-heading"><strong>Security standards in practice</strong>&nbsp;</h2>



<p class="wp-block-paragraph"><em>Table 1. Selected payment-security measures applied in the Polish market.</em>&nbsp;</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><tbody><tr><td><strong>Measure</strong>&nbsp;</td><td><strong>What it does</strong>&nbsp;</td></tr><tr><td><strong>Strong Customer Authentication</strong>&nbsp;</td><td>Two-factor confirmation of online payments, for example a password plus an SMS code or in-app biometric.&nbsp;</td></tr><tr><td><strong>Tokenization</strong>&nbsp;</td><td>Replaces card data with single-use tokens in services such as Visa Mobile and&nbsp;Click to&nbsp;Pay, reducing the risk of data leakage.&nbsp;</td></tr><tr><td><strong>PCI DSS</strong>&nbsp;</td><td>Card-data security standard;&nbsp;Tpay&nbsp;is certified to PCI DSS v4.0.1 and PayU is audited annually as an ISO Level 1 provider.&nbsp;</td></tr><tr><td><strong>DDoS protection</strong>&nbsp;</td><td>Polish payment infrastructure, including BLIK, is continuously&nbsp;monitored&nbsp;and hardened against overload attacks.&nbsp;</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><em>[Source] M. Pawlowski, Data Analytics for E-Commerce (UMCS, 2026); NBP, payment-system reports.</em>&nbsp;</p>



<h2 class="wp-block-heading"><strong>mObywatel, the EUDI Wallet, and Verification of Payee</strong>&nbsp;</h2>



<p class="wp-block-paragraph">Poland&#8217;s&nbsp;mObywatel&nbsp;application already gives citizens a trusted digital identity, and it is the natural foundation for the certified EUDI Wallet that the country must provide by November 2026. In parallel, Polish banks and payment institutions implement Verification of Payee under the Instant Payments Regulation, checking the IBAN against the recipient&#8217;s details before a transfer is executed. Together these measures position Poland to combine a popular domestic payment method with continent-wide identity and anti-fraud infrastructure.&nbsp;</p>



<p class="wp-block-paragraph"><em>[Source] M. Pawlowski, Data Analytics for E-Commerce (UMCS, 2026); European Payments Council,&nbsp;VoP&nbsp;Scheme (2025).</em>&nbsp;</p>



<h2 class="wp-block-heading"><strong>Data analytics applied to payment security</strong>&nbsp;</h2>



<p class="wp-block-paragraph">Because fraud adapts faster than any fixed rule, the&nbsp;defence&nbsp;of the payment system has become a data problem. The same analytical methods used elsewhere in e-commerce, applied here to transaction streams, allow providers to separate legitimate&nbsp;behaviour&nbsp;from attack in real time.&nbsp;</p>



<h3 class="wp-block-heading"><strong>Anomaly detection</strong>&nbsp;</h3>



<p class="wp-block-paragraph">Each customer and merchant generates a&nbsp;behavioural&nbsp;baseline: typical purchase amounts, times, locations, and devices.&nbsp;Anomaly-detection&nbsp;models flag transactions that deviate sharply from that baseline, for example a high-value purchase from a new device in an unfamiliar country, so that they can be challenged or held for review.&nbsp;</p>



<h3 class="wp-block-heading"><strong>Transaction scoring</strong>&nbsp;</h3>



<p class="wp-block-paragraph">Rather than a simple approve-or-decline decision, modern systems assign each&nbsp;transaction&nbsp;a risk score derived from many signals at once. This score feeds directly into the 3D Secure 2.0 decision: low-risk transactions pass through the frictionless flow, while high-risk ones trigger a step-up challenge, which keeps friction low for the honest majority while concentrating scrutiny where it is needed.&nbsp;</p>



<h3 class="wp-block-heading"><strong>Machine-learning fraud models</strong>&nbsp;</h3>



<p class="wp-block-paragraph">Supervised machine-learning models learn from labelled histories of genuine and fraudulent transactions to&nbsp;recognise&nbsp;the subtle patterns that&nbsp;characterise&nbsp;emerging fraud. Their value lies in adaptation: as fraudsters change tactics, the models are retrained on fresh data and continue to detect what static rules would miss. The forthcoming PSR strengthens this approach by allowing payment providers to share fraud-related information among themselves, enlarging the data on which detection models can be trained.&nbsp;</p>



<p class="wp-block-paragraph"><em>[Source] European Banking Authority, guidance on fraud detection; Norton Rose Fulbright, PSD3 and PSR briefing (2026).</em>&nbsp;</p>



<h2 class="wp-block-heading"><strong>Conclusion and&nbsp;future outlook</strong>&nbsp;</h2>



<p class="wp-block-paragraph">Payment in e-commerce has matured from a single encrypted card transfer in 1994 into a layered system in which method, regulation, technology, and analytics reinforce one another. The customer who chooses BLIK, a wallet, or a card at checkout is relying, often unknowingly, on transport encryption, tokenization, strong authentication, risk-based 3D Secure, and a machine-learning model scoring the transaction in milliseconds.&nbsp;</p>



<p class="wp-block-paragraph">The near future is unusually well defined.&nbsp;The Instant Payments Regulation has already made Verification of Payee mandatory across the euro area, PSD3 and the Payment Services Regulation will reshape liability and authentication once published in 2026, and the EUDI Wallet mandate arrives in November 2026 to give every European a state-backed digital identity. The clear direction of travel is toward payments that are faster and frictionless for honest customers, yet harder for fraudsters, with the balance held by data analytics.&nbsp;</p>



<p class="wp-block-paragraph">For&nbsp;merchants&nbsp;the strategic lesson is consistent: security and conversion are not opposites. The same risk scoring that blocks a fraudulent transaction also waves a genuine customer through without a challenge. Treating payment security as a data-driven discipline, rather than a compliance burden, is what allows an e-commerce business to be both safe and easy to buy from.&nbsp;</p>


<div id="rank-math-faq" class="rank-math-block">
<div class="rank-math-list ">
<div id="faq-question-1782199906192" class="rank-math-list-item">
<h3 class="rank-math-question ">What are the most common payment methods in e-commerce?</h3>
<div class="rank-math-answer ">

<p>The most common payment methods in e-commerce include credit and debit cards, digital wallets (such as PayPal, Apple Pay, and Google Pay), bank transfers, Buy Now Pay Later (BNPL) services, and sometimes cryptocurrencies. Their availability depends on region, customer preferences, and regulatory environment.</p>

</div>
</div>
<div id="faq-question-1782200034727" class="rank-math-list-item">
<h3 class="rank-math-question ">What are the biggest security risks in e-commerce payments?</h3>
<div class="rank-math-answer ">

<p>The main risks include phishing attacks, data breaches, identity theft, card-not-present fraud, account takeover, and malware. Weak encryption, poor authentication, and insecure APIs can increase vulnerability.</p>

</div>
</div>
<div id="faq-question-1782200086760" class="rank-math-list-item">
<h3 class="rank-math-question ">How do e-commerce platforms secure payments?</h3>
<div class="rank-math-answer ">

<p>E-commerce platforms use multiple technologies such as SSL/TLS encryption, tokenization, two-factor authentication (2FA), secure payment gateways, and fraud detection systems powered by AI. These measures ensure that sensitive data is protected during transactions.</p>

</div>
</div>
<div id="faq-question-1782200100350" class="rank-math-list-item">
<h3 class="rank-math-question ">What is PCI DSS and why does it matter?</h3>
<div class="rank-math-answer ">

<p>PCI DSS (Payment Card Industry Data Security Standard) is a global security standard designed to protect cardholder data. Compliance is mandatory for businesses handling card payments, helping to reduce fraud and ensure secure transactions.</p>

</div>
</div>
<div id="faq-question-1782200124696" class="rank-math-list-item">
<h3 class="rank-math-question ">What is tokenization in payment security?</h3>
<div class="rank-math-answer ">

<p>Tokenization replaces sensitive payment data (like card numbers) with a unique, non-sensitive token. This means even if the data is intercepted, it cannot be used by attackers.</p>

</div>
</div>
<div id="faq-question-1782200141422" class="rank-math-list-item">
<h3 class="rank-math-question ">Are digital wallets safer than credit cards?</h3>
<div class="rank-math-answer ">

<p>Digital wallets are generally considered safer because they use encryption, tokenization, and biometric authentication (such as fingerprint or facial recognition). They also reduce the need to share actual card details with merchants.</p>

</div>
</div>
<div id="faq-question-1782200156536" class="rank-math-list-item">
<h3 class="rank-math-question ">What is two-factor authentication (2FA) in payments?</h3>
<div class="rank-math-answer ">

<p>Two-factor authentication adds an extra layer of security by requiring users to verify their identity using two methods, such as a password and a one-time code sent to their phone.</p>

</div>
</div>
<div id="faq-question-1782200184023" class="rank-math-list-item">
<h3 class="rank-math-question ">What are Buy Now Pay Later (BNPL) services?</h3>
<div class="rank-math-answer ">

<p>BNPL allows customers to split payments into installments, often without interest. While convenient, these services require proper risk management and security measures to prevent fraud and over-indebtedness.</p>

</div>
</div>
</div>
</div>


<h2 class="wp-block-heading"><strong>REFERENCES</strong>&nbsp;</h2>



<p class="wp-block-paragraph"><strong>[1]&nbsp;&nbsp;</strong><em>[Source]&nbsp;</em>Pawlowski, M. Data Analytics for E-Commerce, lecture materials, UMCS Faculty of Economics, 2026.&nbsp;</p>



<p class="wp-block-paragraph"><strong>[2]&nbsp;&nbsp;</strong><em>[Source]&nbsp;</em>European Central Bank. Instant Payments Regulation and Verification of Payee, ecb.europa.eu, 2024 to 2025.&nbsp;</p>



<p class="wp-block-paragraph"><strong>[3]&nbsp;&nbsp;</strong><em>[Source]&nbsp;</em>European Payments Council. Verification of Payee Scheme Rulebook, 2025.&nbsp;</p>



<p class="wp-block-paragraph"><strong>[4]&nbsp;&nbsp;</strong><em>[Source]&nbsp;</em>European Commission. Proposal for a Payment Services Regulation,&nbsp;COM(2023)367, 2023.&nbsp;</p>



<p class="wp-block-paragraph"><strong>[5]&nbsp;&nbsp;</strong><em>[Source]&nbsp;</em>Norton Rose Fulbright. PSD3 and PSR: From Provisional Agreement to 2026 Readiness, 2026.&nbsp;</p>



<p class="wp-block-paragraph"><strong>[6]&nbsp;&nbsp;</strong><em>[Source]&nbsp;</em>Finextra. Europe&#8217;s Instant Payments Regulation and the 9 October Deadline, Explained, 2025.&nbsp;</p>



<p class="wp-block-paragraph"><strong>[7]  </strong><em>[Source] </em><a href="https://www.statista.com/statistics/348004/payment-method-usage-worldwide/?srsltid=AfmBOooduUZLTyDr7NPGfmdyEdjSKbC4aWgQxKh0o9qy8EqbmBYrPtkr" target="_blank" rel="noopener">Statista. European E-Commerce Payment Methods, 2025</a>. </p>



<p class="wp-block-paragraph"><strong>[8]&nbsp;&nbsp;</strong><em>[Source]&nbsp;</em>ECDB. Payment Methods in European E-Commerce, 2025.&nbsp;</p>



<p class="wp-block-paragraph"><strong>[9]&nbsp;&nbsp;</strong><em>[Source]&nbsp;</em>Stripe. Online Payment API Design, stripe.com/blog, 2017.&nbsp;</p>



<p class="wp-block-paragraph"><strong>[10]&nbsp;&nbsp;</strong><em>[Source]&nbsp;</em>Britannica. PayPal, britannica.com/money, 2026.&nbsp;</p>



<p class="wp-block-paragraph"><strong>[11]&nbsp;&nbsp;</strong><em>[Source]&nbsp;</em>Visa and Mastercard. Fraud and Authentication Reports, 2024 to 2025.&nbsp;</p>



<p class="wp-block-paragraph"><strong>[12]&nbsp;&nbsp;</strong><em>[Source]&nbsp;</em>Narodowy&nbsp;Bank Polski. Payment System Reports, nbp.pl, 2025.&nbsp;</p>
<p>The post <a rel="nofollow" href="https://mietwood.com/payment-methods-and-security-in-e-commerce">Payment Methods and Security in E-Commerce </a> appeared first on <a rel="nofollow" href="https://mietwood.com">Customer Experience Management</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Projektowanie wnętrz &#8211; rynek w Lublinie</title>
		<link>https://mietwood.com/projektowanie-wnetrz</link>
		
		<dc:creator><![CDATA[Maki Pa]]></dc:creator>
		<pubDate>Wed, 17 Jun 2026 10:08:59 +0000</pubDate>
				<category><![CDATA[Customer Experience Management]]></category>
		<guid isPermaLink="false">https://mietwood.com/?p=3663</guid>

					<description><![CDATA[<p>Projektowanie wnętrz w Lublinie &#8211; rozumiem, że zastanawiasz się nad wejściem w branżę . To świetny moment na taką analizę — rynek w połowie 2026 roku jest bardzo aktywny, ale wymaga od nowych graczy przemyślanej strategii. Minęły już czasy, gdy wystarczyło po prostu &#8220;otworzyć biuro&#8221;, aby klienci sami się pojawili. Oto konkretne dane i wnioski,...</p>
<p>The post <a rel="nofollow" href="https://mietwood.com/projektowanie-wnetrz">Projektowanie wnętrz &#8211; rynek w Lublinie</a> appeared first on <a rel="nofollow" href="https://mietwood.com">Customer Experience Management</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Projektowanie wnętrz w Lublinie &#8211; rozumiem, że zastanawiasz się nad wejściem w branżę . To świetny moment na taką analizę — rynek w połowie 2026 roku jest bardzo aktywny, ale wymaga od nowych graczy przemyślanej strategii. Minęły już czasy, gdy wystarczyło po prostu &#8220;otworzyć biuro&#8221;, aby klienci sami się pojawili.</p>



<p class="wp-block-paragraph">Oto konkretne dane i wnioski, z czym dokładnie przyjdzie Ci się zmierzyć.</p>



<h2 class="wp-block-heading">Konkurencja i Ceny: Z czym wchodzisz na ring?</h2>



<p class="wp-block-paragraph">Rynek w Lublinie jest <strong>wysoce konkurencyjny</strong>. Działa tu kilkadziesiąt bardzo mocnych i dobrze pozycjonujących się pracowni (m.in. Ubrane Wnętrza, Miliart Studio, Ka Studio czy Interior Art Studio), a klient ma w czym wybierać.</p>



<ul class="wp-block-list">
<li><strong>Średnia cena na rynku:</strong> Obecnie wynosi około <strong>210 zł/m²</strong> za kompleksowy projekt wnętrza.</li>



<li><strong>Rozstrzał cenowy:</strong> Zaczyna się od około <strong>70 zł/m²</strong> u początkujących freelancerów, a sięga powyżej <strong>250 zł/m²</strong> w renomowanych biurach.</li>



<li><strong>Przewaga &#8220;eksportowa&#8221;:</strong> Lubelskie biura są średnio o ok. 90 zł/m² tańsze niż te w Warszawie czy Krakowie. Z tego powodu znaczna część lokalnych firm rozwija usługi projektowania online, obsługując klientów z bogatszych regionów, zachowując przy tym marżę, która w Lublinie jest wysoce opłacalna.</li>
</ul>



<h2 class="wp-block-heading">Siła napędowa: Lubelski rynek nieruchomości (2026)</h2>



<p class="wp-block-paragraph">Popyt na usługi projektowe bezpośrednio wynika z tego, co dzieje się w nieruchomościach. A dzieje się dużo — Lublin plasuje się w krajowej czołówce pod względem przyrostu zasobów mieszkaniowych.</p>



<ol start="1" class="wp-block-list">
<li><strong>Dojrzewający rynek pierwotny:</strong> Średnia cena nowego mieszkania to obecnie ponad <strong>11 800 zł/m²</strong>. Podaż lekko się kurczy w stosunku do lat ubiegłych, co oznacza, że kupujący są bardziej zamożni i wymagający. Płacąc tak dużo za sam lokal, nie oszczędzają na wykończeniu i częściej sięgają po architekta, oczekując maksymalnej funkcjonalności i standardu premium (szczególnie w modnych lokalizacjach, takich jak dynamicznie rozbudowujący się Czechów Południowy).</li>



<li><strong>Królowa &#8220;Wielka Płyta&#8221;:</strong> Aż 49% transakcji na rynku wtórnym w Lublinie to wciąż mieszkania w starych blokach. Wymagają one trudnych generalnych remontów i całkowitej zmiany układu funkcjonalnego — to idealny obszar dla sprawnego projektanta.</li>



<li><strong>Rynek pod wynajem:</strong> Średnia cena najmu to ok. 49 zł/m². Jako duże miasto akademickie i rosnące centrum usług biznesowych, Lublin ma ogromny rynek mieszkań inwestycyjnych, na którym liczy się każdy centymetr kwadratowy.</li>
</ol>



<h2 class="wp-block-heading">Potencjał dla nowych firm: Gdzie szukać niszy?</h2>



<p class="wp-block-paragraph">Wejście na rynek z komunikatem &#8220;projektuję wszystko dla każdego&#8221; szybko zderzy Cię ze ścianą silniejszej konkurencji. Potencjał dla nowej firmy leży w wąskiej specjalizacji na start.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="791" height="565" src="https://mietwood.com/wp-content/uploads/2026/06/image-8.png" alt="Projektowanie wnętrz - rynek w Lublinie - szukanie niszy" class="wp-image-3664" srcset="https://mietwood.com/wp-content/uploads/2026/06/image-8.png 791w, https://mietwood.com/wp-content/uploads/2026/06/image-8-300x214.png 300w, https://mietwood.com/wp-content/uploads/2026/06/image-8-768x549.png 768w" sizes="auto, (max-width: 791px) 100vw, 791px" /><figcaption class="wp-element-caption">Projektowanie wnętrz &#8211; rynek w Lublinie &#8211; szukanie niszy</figcaption></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><strong>Twarda rzeczywistość:</strong> Zanim zaczniesz liczyć zyski, pamiętaj, że stałe koszty działalności (ZUS, licencje na pakiety takie jak SketchUp czy V-Ray, księgowość, ubezpieczenie i dojazdy) pochłoną na start około 20-30% Twoich miesięcznych przychodów.</p>
</blockquote>



<h2 class="wp-block-heading">Werdykt: Czy jest sens zakładać nową firmę?</h2>



<p class="wp-block-paragraph"><strong>Tak, pod warunkiem, że podejdziesz do tego biznesowo, a nie tylko artystycznie.</strong></p>



<p class="wp-block-paragraph">Sens istnieje, jeśli nie zamierzasz konkurować z rynkiem wyłącznie najniższą ceną. Zaniżanie stawek poniżej 100 zł/m², aby &#8220;tylko złapać klienta&#8221;, to w Lublinie najszybsza droga do wypalenia zawodowego. Praca przy skomplikowanej dokumentacji technicznej, nadzorze i niekończących się poprawkach sprawi, że będziesz pracować poniżej płacy minimalnej.</p>



<p class="wp-block-paragraph">Jeśli jednak dysponujesz dobrym warsztatem oprogramowania, przygotujesz świetne portfolio (nawet opierające się na projektach koncepcyjnych, a nie realizacjach) i celnie wejdziesz w jedną z nisz rynkowych — rynek deweloperski w Lublinie wciąż pomieści ambitnych profesjonalistów.</p>



<h2 class="wp-block-heading">Jak przeanalizować rynek projektantów wnętrz w Lublinie?</h2>



<h3 class="wp-block-heading">Projektowanie wnętrz: Firmy rejestrowane vs. freelancerzy</h3>



<p class="wp-block-paragraph">Analiza rynku projektowania wnętrz wymaga połączenia danych <strong>twardych</strong> (oficjalne rejestry państwowe) z danymi <strong>miękkimi</strong> (aktywność w sieci, social media, portale zleceniowe). Pozwala to na mapowanie konkurencji na dwa segmenty: oficjalne, widoczne biura projektowe oraz &#8220;niewidzialną&#8221; konkurencję w postaci freelancerów i studentów dorabiających do studiów.</p>



<h2 class="wp-block-heading">Jak przeanalizować liczbę oficjalnych firm?</h2>



<p class="wp-block-paragraph">Oficjalnie działające firmy to podmioty posiadające wpis do CEIDG (jednoosobowe działalności gospodarcze) lub KRS (spółki z o.o., spółki komandytowe itp.).</p>



<h3 class="wp-block-heading">Analiza baz CEIDG i KRS za pomocą kodów PKD</h3>



<p class="wp-block-paragraph">Głównym narzędziem do wyszukiwania zarejestrowanych firm są państwowe wyszukiwarki biznesowe. Kluczem do sukcesu jest filtrowanie po odpowiednich kodach PKD (Polska Klasyfikacja Działalności).</p>



<ul class="wp-block-list">
<li><strong>Kluczowe kody PKD dla tej branży:</strong>
<ul class="wp-block-list">
<li><strong>74.10.Z</strong> – <em>Działalność w zakresie specjalistycznego projektowania</em> (to pod tym kodem kryje się większość projektantów wnętrz, choć obejmuje on również projektantów mody czy grafików).</li>



<li><strong>71.11.Z</strong> – <em>Działalność w zakresie architektury</em> (często wybierany przez architektów z wykształceniem kierunkowym, którzy projektują zarówno bryły budynków, jak i wnętrza).</li>
</ul>
</li>



<li><strong>Jak to zrobić technicznie?</strong>
<ol class="wp-block-list">
<li>Wejdź na oficjalną wyszukiwarkę CEIDG (<a href="https://aplikacja.ceidg.gov.pl/ceidg/ceidg.public.ui/search.aspx#" target="_blank" rel="noopener">aplikacja.ceidg.gov.pl</a>) lub skorzystaj z agregatorów danych typu <strong>Aleo.com</strong>, <strong>Rejestr.io</strong> czy <strong>MGBiM</strong>.</li>



<li>Ustaw filtry wyszukiwania:
<ul class="wp-block-list">
<li><strong>Miejscowość / Powiat:</strong> Lublin / powiat lubelski.</li>



<li><strong>Status:</strong> Aktywny (odrzuć firmy zawieszone i wykreślone).</li>



<li><strong>Kod PKD:</strong> 74.10.Z (jako przeważająca działalność) oraz 71.11.Z.</li>



<li>Eksportuj dane do pliku Excel.</li>
</ul>
</li>
</ol>
</li>



<li><strong>Ważne ograniczenie metody:</strong> Nie każda firma z PKD 74.10.Z projektuje wnętrza (może to być projektant stron WWW lub ubrań). Uzyskany wynik należy traktować jako &#8220;górną granicę&#8221; rynku rejestrowanego, którą trzeba przefiltrować ręcznie.</li>
</ul>



<h3 class="wp-block-heading">Weryfikacja aktywności rynkowej (Google Maps i Katalogi)</h3>



<p class="wp-block-paragraph">Samo istnienie firmy w CEIDG nie oznacza, że jest ona Twoim realnym konkurentem (część to martwe działalności). Musisz sprawdzić, kto realnie walczy o klienta. Projektowanie wnętrz.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="882" height="102" src="https://mietwood.com/wp-content/uploads/2026/06/image-9.png" alt="" class="wp-image-3665" srcset="https://mietwood.com/wp-content/uploads/2026/06/image-9.png 882w, https://mietwood.com/wp-content/uploads/2026/06/image-9-300x35.png 300w, https://mietwood.com/wp-content/uploads/2026/06/image-9-768x89.png 768w" sizes="auto, (max-width: 882px) 100vw, 882px" /></figure>



<ul class="wp-block-list">
<li><strong>Narzędzia:</strong>
<ul class="wp-block-list">
<li><strong>Google Maps:</strong> Wpisz frazy takie jak: <em>&#8220;projektowanie wnętrz Lublin&#8221;</em>, <em>&#8220;architekt wnętrz Lublin&#8221;</em>, <em>&#8220;biuro projektowe Lublin&#8221;</em>. Zlicz unikalne pinezki w granicach miasta. To Twoi najgroźniejsi konkurenci, ponieważ dbają o lokalne pozycjonowanie (SEO).</li>



<li><strong>Portale branżowe:</strong> Przeanalizuj profile na portalach <strong>Houzz.pl</strong> oraz <strong>Homebook.pl</strong> z filtrem lokalizacji &#8220;Lublin&#8221;. Są to portale skupiające wyłącznie aktywnych i zweryfikowanych profesjonalistów z portfolio.</li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading">Jak przeanalizować liczbę freelancerów?</h2>



<p class="wp-block-paragraph">Freelancerzy to najtrudniejsza do policzenia grupa. Część z nich prowadzi JDG (jednoosobową działalność), ale nie posiada biura ani strony www, a część działa w szarej strefie (np. studenci architektury dorabiający bez rejestracji działalności) lub rozlicza się przez portale pośredniczące (np. Useme).</p>



<p class="wp-block-paragraph">Aby ich oszacować, musisz przeszukać miejsca, w których szukają zleceń i pokazują swoje prace.</p>



<h3 class="wp-block-heading">Portale zleceniowe i ogłoszeniowe</h3>



<p class="wp-block-paragraph">To tam klienci szukają najtańszych wykonawców, a początkujący projektanci oferują swoje usługi.</p>



<ul class="wp-block-list">
<li><strong>Fixly.pl i Oferteo.pl:</strong> Załóż konto jako klient szukający projektu mieszkania w Lublinie lub po prostu przejrzyj katalog wykonawców w kategorii &#8220;Projektowanie wnętrz&#8221; dla regionu lubelskiego. Zobaczysz tam setki profili osób fizycznych (często bez firm), które licytują zlecenia.</li>



<li><strong>OLX.pl:</strong> Wpisz &#8220;projektowanie wnętrz&#8221; i wybierz lokalizację Lublin (+ ewentualnie +15 km). Policz ogłoszenia od osób prywatnych. Zwróć uwagę na ceny – to pokaże Ci stawkę minimalną na rynku.</li>



<li><strong>Useme.com:</strong> Przeszukaj bazę freelancerów w kategorii &#8220;Projektowanie 3D / Architektura i Wnętrza&#8221; wpisując lokalizację &#8220;Lublin&#8221;.</li>
</ul>



<h3 class="wp-block-heading">Social Media i Platformy Portfolio</h3>



<p class="wp-block-paragraph">Współczesny freelancer rzadko inwestuje we własną stronę internetową. Jego portfolio to profil na Instagramie lub Behance.</p>



<ul class="wp-block-list">
<li><strong>Instagram (Analiza hashtagów):</strong> Wyszukaj lokalne hashtagi i przeanalizuj profile, które pod nimi publikują:
<ul class="wp-block-list">
<li><code>#projektantwnetrzlublin</code></li>



<li><code>#architektwnetrzlublin</code></li>



<li><code>#projektowanie-wnetrz-lublin</code> Wypisz unikalne konta osobiste (niebędące dużymi biurami). Zwróć uwagę na dopiski w bio typu &#8220;freelancer&#8221;, &#8220;student architektury&#8221;, &#8220;przyjmuję zlecenia&#8221;.</li>
</ul>
</li>



<li><strong>Behance.net i Dribbble.com:</strong> Użyj filtrów wyszukiwania twórców: <em>Creative Field: Interior Design</em> oraz <em>Location: Lublin, Poland</em>. To tutaj gromadzi się społeczność młodych projektantów o bardzo wysokich umiejętnościach wizualizacyjnych, którzy często pracują jako podwykonawcy dla większych biur lub realizują własne, pojedyncze tematy.</li>
</ul>



<h3 class="wp-block-heading">Analiza środowiska akademickiego (Ukryty potencjał)</h3>



<p class="wp-block-paragraph">Lublin to silny ośrodek akademicki. Co roku mury uczelni opuszczają dziesiątki potencjalnych freelancerów i przyszłych konkurentów.</p>



<ul class="wp-block-list">
<li>Sprawdź liczbę studentów i absolwentów kierunków takich jak <strong>Architektura</strong> (Politechnika Lubelska), <strong>Architektura Wnętrz</strong> (WSPA, KUL, wydziały artystyczne UMCS).</li>



<li>Młodzi absolwenci w pierwszych 2-3 latach po studiach zazwyczaj działają jako freelancerzy, oferując bardzo niskie stawki, aby zbudować portfolio.</li>
</ul>



<h2 class="wp-block-heading">Podsumowanie</h2>



<p class="wp-block-paragraph">Aby uzyskać pełny obraz, stwórz tabelę z podziałem konkurencji na 4 segmenty:</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="962" height="427" src="https://mietwood.com/wp-content/uploads/2026/06/image-10.png" alt="" class="wp-image-3666" srcset="https://mietwood.com/wp-content/uploads/2026/06/image-10.png 962w, https://mietwood.com/wp-content/uploads/2026/06/image-10-300x133.png 300w, https://mietwood.com/wp-content/uploads/2026/06/image-10-768x341.png 768w" sizes="auto, (max-width: 962px) 100vw, 962px" /></figure>



<p class="wp-block-paragraph">Przeprowadzenie takiego badania zajmie Ci około 2-3 dni roboczych, ale da Ci pełną, opartą na danych odpowiedź na pytanie, z kim dokładnie będziesz rywalizować o klientów w Lublinie.</p>



<p class="wp-block-paragraph">Kiedy będziesz już miał klientów przyda ci się analiza: <a href="https://mietwood.com/customer-portfolio-profitability-calculation-based-on-abc-model">Customer portfolio profitability calculation based on ABC model</a></p>



<p class="wp-block-paragraph"></p>
<p>The post <a rel="nofollow" href="https://mietwood.com/projektowanie-wnetrz">Projektowanie wnętrz &#8211; rynek w Lublinie</a> appeared first on <a rel="nofollow" href="https://mietwood.com">Customer Experience Management</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Customer Experience w procesie rekrutacji na studia</title>
		<link>https://mietwood.com/customer-experience-studia-rekrutacja-online</link>
		
		<dc:creator><![CDATA[Maki Pa]]></dc:creator>
		<pubDate>Sun, 14 Jun 2026 07:43:10 +0000</pubDate>
				<category><![CDATA[Customer Experience Management]]></category>
		<guid isPermaLink="false">https://mietwood.com/?p=3656</guid>

					<description><![CDATA[<p>Rekrutacja online. Architektura Customer Experience (CX) w procesie rekrutacji online na studia. Analiza porównawcza wybranych uczelni wyższych (UW, SGH, Akademia Leona Koźmińskiego, KUL, WSPA, Politechnika Lubelska). Dzisiejsza uczelnia nie jest już tylko instytucją akademicką. Z perspektywy operacyjnej, proces rekrutacji studenta to nic innego jak klasyczny lejek sprzedażowy w e-commerce. Mamy tu kampanie leadowe, optymalizację współczynnika...</p>
<p>The post <a rel="nofollow" href="https://mietwood.com/customer-experience-studia-rekrutacja-online">Customer Experience w procesie rekrutacji na studia</a> appeared first on <a rel="nofollow" href="https://mietwood.com">Customer Experience Management</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Rekrutacja online. Architektura Customer Experience (CX) w procesie rekrutacji online na studia. Analiza porównawcza wybranych uczelni wyższych (UW, SGH, Akademia Leona Koźmińskiego, KUL, WSPA, Politechnika Lubelska). Dzisiejsza uczelnia nie jest już tylko instytucją akademicką. Z perspektywy operacyjnej, proces rekrutacji studenta to nic innego jak klasyczny <strong>lejek sprzedażowy w e-commerce</strong>. Mamy tu kampanie leadowe, optymalizację współczynnika konwersji (CR), a następnie walkę o uwagę i minimalizację odejść (churn rate).</p>



<h1 class="wp-block-heading">Edukacja to też E-commerce: 3 tematy na licencjat z marketingu uczelni wyższych (CX, Analityka i Strategia)</h1>



<p class="wp-block-paragraph"><strong>Zastanawiasz się nad tematem pracy licencjackiej? Szukasz zagadnienia, które połączy twardą analitykę biznesową, zarządzanie doświadczeniami klienta (CX) i realia rynkowe? Jako wykładowca akademicki i praktyk biznesu, często widzę, jak studenci uciekają w stronę ogólnikowych i wtórnych tematów. Tymczasem tuż pod Waszymi nosami rozgrywa się fascynująca, oparta na danych walka o klienta. Mowa o rynku szkolnictwa wyższego.</strong></p>



<p class="wp-block-paragraph">Zarządzanie doświadczeniem kandydata, a później studenta, wymaga dogłębnego zrozumienia Customer Experience Management (CXM). Jak pisałem w mojej publikacji <em>&#8220;Customer Experience Management in Era of AI&#8221;</em>, wygrywają te organizacje, które potrafią personalizować komunikację w czasie rzeczywistym w oparciu o dane. Dotyczy to w równym stopniu sklepów internetowych, jak i uniwersytetów.</p>



<p class="wp-block-paragraph">Poniżej przygotowałem dla Was <strong>3 propozycje tematów prac licencjackich</strong> z digital marketingu. Najlepsze z tych prac chętnie opublikuję tutaj, na łamach <a href="https://mietwood.com/" target="_blank" rel="noreferrer noopener">mietwood.com</a>.</p>



<h2 class="wp-block-heading">Dlaczego warto badać marketing instytucji edukacyjnych?</h2>



<p class="wp-block-paragraph">Zanim przejdziemy do konkretów, musimy spojrzeć na uczelnię przez pryzmat wskaźników biznesowych. Wdrożenie takiego myślenia do pracy dyplomowej to gwarancja najwyższej oceny.</p>



<ul class="wp-block-list">
<li><strong>Student to Klient (o wysokim LTV):</strong> Wskaźnik Customer Lifetime Value (LTV) w edukacji jest ogromny. Obejmuje nie tylko czesne za studia I i II stopnia, ale także studia podyplomowe i MBA.</li>



<li><strong>Decyzja zakupowa jest złożona:</strong> Cykl decyzyjny (Customer Journey) trwa miesiącami, angażuje emocje, logikę i często osoby trzecie (rodziców). To idealne środowisko do badania wielokanałowych punktów styku (omnichannel touchpoints).</li>



<li><strong>Łatwy dostęp do danych:</strong> Strony uczelni są ogólnodostępne, a narzędzia takie jak SimilarWeb czy Senuto pozwalają na głęboki audyt ich działań digitalowych bez posiadania wewnętrznych dostępów.</li>
</ul>



<h2 class="wp-block-heading">Architektura Customer Experience (CX) w procesie rekrutacji online. Analiza porównawcza wybranych warszawskich uczelni wyższych (UW, SGH, Akademia Leona Koźmińskiego)</h2>



<h3 class="wp-block-heading">Opis problemu badawczego</h3>



<p class="wp-block-paragraph">W dobie cyfryzacji, system rekrutacyjny (IRK/ISR) to najważniejszy punkt styku (touchpoint) na ścieżce kandydata. To wirtualny &#8220;koszyk zakupowy&#8221;. Z perspektywy <a target="_blank" rel="noreferrer noopener" href="https://www.google.com/search?q=https://mietwood.com/zarzadzanie-operacyjne-w-e-commerce-najlepsze-praktyki/">zarządzania operacyjnego w e-commerce</a>, proces ten powinien być maksymalnie bezbłędny, intuicyjny i wspierający. Praca ta skupia się na audycie użyteczności (UX) oraz całkowitym doświadczeniu kandydata (CX) podczas aplikacji na studia w Warszawie, porównując uczelnię publiczną (Uniwersytet Warszawski), uczelnię publiczną o profilu biznesowym (SGH) oraz lidera prywatnej edukacji biznesowej (<a target="_blank" rel="noreferrer noopener" href="https://kozminski.edu.pl/">Akademia Leona Koźmińskiego</a>).</p>



<h3 class="wp-block-heading">Jak przeprowadzić analizę (Data-driven approach)?</h3>



<p class="wp-block-paragraph">Nie opieraj się na subiektywnych odczuciach. Zbuduj matrycę punktów styku.</p>



<ol start="1" class="wp-block-list">
<li><strong>Mapowanie Customer Journey:</strong> Stwórz szczegółową mapę podróży kandydata od momentu wpisania w Google frazy &#8220;studia zarządzanie Warszawa&#8221;, aż po kliknięcie &#8220;Złóż aplikację&#8221;.</li>



<li><strong>Ocena lejków konwersji:</strong> Policz, ile kroków (kliknięć) dzieli kandydata od znalezienia programu studiów do założenia konta rekrutacyjnego. Gdzie występuje największe ryzyko porzucenia procesu (tzw. drop-off rate)?</li>



<li><strong>Audyt użyteczności (Heurystyki Nielsena):</strong> Przeanalizuj interfejsy systemów rekrutacyjnych pod kątem responsywności mobilnej, jasności komunikatów i łatwości nawigacji.</li>



<li><strong>Badania symulacyjne (NPS / CSAT):</strong> Przeprowadź badanie symulacyjne wskaźnika Customer Effort Score (CES) – jak wiele wysiłku kosztowało by kandydatów przejście przez proces na tych uczelniach?</li>
</ol>



<h3 class="wp-block-heading">Przykład analityczny do pracy</h3>



<p class="wp-block-paragraph"><em>Hipoteza:</em> Uczelnie niepubliczne (ALK) posiadają krótszy, bardziej zoptymalizowany pod kątem mobile lejek konwersji (M-commerce approach) w porównaniu do rozbudowanych systemów uczelni publicznych (UW), co przekłada się na wyższy wskaźnik satysfakcji z procesu rekrutacji (CSAT) i niższy współczynnik odrzuceń na stronie lądowania.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="439" src="https://mietwood.com/wp-content/uploads/2026/06/image-6-1024x439.png" alt="rekrutacja na studia" class="wp-image-3657" srcset="https://mietwood.com/wp-content/uploads/2026/06/image-6-1024x439.png 1024w, https://mietwood.com/wp-content/uploads/2026/06/image-6-300x129.png 300w, https://mietwood.com/wp-content/uploads/2026/06/image-6-768x330.png 768w, https://mietwood.com/wp-content/uploads/2026/06/image-6.png 1473w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">rekrutacja na studia, źródło: Canva</figcaption></figure>



<h2 class="wp-block-heading">Strategia Digital Marketing Mix jako narzędzie budowania przewagi konkurencyjnej na regionalnym rynku edukacyjnym. Studium przypadków uczelni lubelskich (KUL, PL, WSPA)</h2>



<h3 class="wp-block-heading">Opis problemu badawczego</h3>



<p class="wp-block-paragraph">Marketing Mix (tradycyjne 4P, czy zmodernizowane 7P) ewoluował. Dziś mówimy o cyfrowym miksie marketingowym, w którym kluczową rolę odgrywa content marketing, SEO oraz social media. Temat ten pozwala na zbadanie, jak uczelnie o różnym profilu pozycjonują się na hermetycznym, lokalnym rynku. Jak <a target="_blank" rel="noreferrer noopener" href="https://www.kul.pl/">Katolicki Uniwersytet Lubelski (KUL)</a> walczy o uwagę z uczelnią techniczną (Politechnika Lubelska) oraz nowoczesną szkołą niepubliczną (WSPA)?</p>



<h3 class="wp-block-heading">Jak przeprowadzić analizę (Business Analytics)?</h3>



<p class="wp-block-paragraph">W tej pracy powinieneś wykorzystać ogólnodostępne narzędzia analityczne, by zamienić &#8220;miękki&#8221; marketing w twarde dane.</p>



<ol start="1" class="wp-block-list">
<li><strong>Analiza widoczności (SEO):</strong> Wykorzystaj narzędzia takie jak Senuto lub Ahrefs. Sprawdź, na ile słów kluczowych widoczne są w TOP10 poszczególne uczelnie. Jaki generują szacunkowy ruch organiczny (Organic Traffic)? To wskaźnik ich pasywnej siły pozyskiwania leadów.</li>



<li><strong>Audyt Content Marketingu:</strong> Jak uczelnie prowadzą sekcje blogowe i informacyjne? Czy stosują strategię Inbound Marketingu (np. artykuły typu &#8220;Jakie studia po profilu mat-fiz?&#8221;), aby przechwytywać użytkowników na wczesnym etapie świadomości (Top of the Funnel &#8211; ToFu)?</li>



<li><strong>Social Media Engagement Rate:</strong> Zamiast liczyć &#8220;lajki&#8221;, oblicz wskaźnik zaangażowania (ER &#8211; Engagement Rate). Kto tworzy lepszą społeczność? Czy WSPA zyskuje przewagę na TikToku pokazując kulisy życia studenckiego, podczas gdy KUL dominuje w formalnej komunikacji na Facebooku?</li>
</ol>



<h3 class="wp-block-heading">Przykład analityczny do pracy</h3>



<p class="wp-block-paragraph">Możesz przeprowadzić badanie sentymentu (Sentiment Analysis) komentarzy pod postami rekrutacyjnymi wybranych uczelni. Na tej podstawie udowodnisz, jak konkretny styl komunikacji wizualnej i tekstowej (Tone of Voice) wpływa na percepcję marki. Zwróć uwagę na spójność wielokanałową (Omnichannel) – czy doświadczenie kandydata przeglądającego profil Politechniki Lubelskiej na Instagramie jest spójne z tym, co widzi na oficjalnej stronie www? Wniosek może stanowić rekomendację optymalizacyjną dla działu promocji.</p>



<h2 class="wp-block-heading">Podsumowanie</h2>



<p class="wp-block-paragraph">Pisanie pracy licencjackiej z marketingu nie musi sprowadzać się do nudnego przypisywania definicji Kotlera. Przemysł edukacyjny w Polsce przechodzi obecnie potężną transformację cyfrową. Instytucje te stały się platformami usługowymi, które muszą zarządzać potężnymi zasobami danych, optymalizować swoje lejki sprzedażowe i nieustannie poprawiać Customer Experience.</p>



<p class="wp-block-paragraph">Jeśli zdecydujecie się na jeden z powyższych tematów, obiecuję Wam, że proces badawczy będzie nie tylko fascynujący, ale przede wszystkim dostarczy Wam &#8220;twardych&#8221; umiejętności pożądanych na współczesnym rynku pracy. Analityk, który potrafi przełożyć ruch na stronie www, wskaźniki użyteczności oraz dane z social mediów na realne rekomendacje biznesowe optymalizujące proces konwersji, nigdy nie będzie musiał martwić się o zatrudnienie.</p>



<p class="wp-block-paragraph">Masz już pomysł na badanie? Zbierasz dane, ale utknąłeś przy ich interpretacji? Zapraszam do zgłębiania artykułów w sekcji <a target="_blank" rel="noreferrer noopener" href="https://mietwood.com/">Analityka Biznesowa na mietwood.com</a> oraz do przesyłania draftów swoich najlepszych tekstów naukowych – najciekawsze analizy chętnie udostępnię w ramach gościnnych wpisów na blogu.</p>



<p class="wp-block-paragraph">Powodzenia w badaniach!</p>



<p class="wp-block-paragraph"><strong>Słowa kluczowe (Keywords):</strong> marketing edukacyjny, customer experience management (CXM), analityka biznesowa w edukacji, e-commerce, uczelnie wyższe, praca licencjacka marketing, user journey, marketing mix, konwersja (CR), optymalizacja lejka, LTV, churn rate, SGH, UW, KUL, Akademia Leona Koźmińskiego.</p>
<p>The post <a rel="nofollow" href="https://mietwood.com/customer-experience-studia-rekrutacja-online">Customer Experience w procesie rekrutacji na studia</a> appeared first on <a rel="nofollow" href="https://mietwood.com">Customer Experience Management</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>TIKTOK SHOP: REVOLUTIONIZING CUSTOMER EXPERIENCE MANAGEMENT IN MODERN E-COMMERCE</title>
		<link>https://mietwood.com/tiktok-shop</link>
		
		<dc:creator><![CDATA[Maki Pa]]></dc:creator>
		<pubDate>Thu, 11 Jun 2026 11:15:01 +0000</pubDate>
				<category><![CDATA[Customer Experience Management]]></category>
		<guid isPermaLink="false">https://mietwood.com/?p=3647</guid>

					<description><![CDATA[<p>TIKTOK SHOP: REVOLUTIONIZING CUSTOMER EXPERIENCE MANAGEMENT IN MODERN E-COMMERCE By: Dominika Zdun, Gabriela Zimak, Magdalena Gałek 1. Introduction: The Evolution of Customer Experience The digital marketplace is currently undergoing a profound transformation. For years, the gold standard of online retail was defined by search-driven platforms. A customer recognized a need, navigated to a classic e-commerce...</p>
<p>The post <a rel="nofollow" href="https://mietwood.com/tiktok-shop">TIKTOK SHOP: REVOLUTIONIZING CUSTOMER EXPERIENCE MANAGEMENT IN MODERN E-COMMERCE</a> appeared first on <a rel="nofollow" href="https://mietwood.com">Customer Experience Management</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading"><strong>TIKTOK SHOP: REVOLUTIONIZING CUSTOMER EXPERIENCE MANAGEMENT IN MODERN E-COMMERCE</strong></h2>



<p class="wp-block-paragraph"><strong>By: Dominika Zdun, Gabriela Zimak, Magdalena Gałek</strong></p>



<h2 class="wp-block-heading"><strong>1. Introduction: The Evolution of Customer Experience</strong></h2>



<p class="wp-block-paragraph">The digital marketplace is currently undergoing a profound transformation. For years, the gold standard of online retail was defined by search-driven platforms. A customer recognized a need, navigated to a classic e-commerce platform, searched for a product, and made a purchase. The focus of businesses during this era was primarily on Service Quality—ensuring the website was fast, the search algorithm was accurate, and the checkout process was secure. However, as the digital landscape has evolved, so have consumer expectations. Modern shoppers no longer seek just a transaction; they demand an engaging, seamless, and entertaining journey. This shift marks the transition from basic Service Quality to holistic Customer Experience (CX) Management.</p>



<p class="wp-block-paragraph">Within this new paradigm, &#8216;Shoppertainment&#8217;—the intersection of entertainment and commerce—has emerged as the dominant strategy for modern, fast-growing retail organizations. At the absolute forefront of this revolution is TikTok, a platform that has transformed from a simple short-form video sharing app into a global commercial powerhouse. The introduction of TikTok Shop, particularly its rollout in markets like Poland, represents a critical case study in modern Customer Experience Management. It fundamentally rewrites the rules of how brands interact with consumers, how trust is established, and how the traditional sales funnel is compressed into a matter of seconds.</p>



<p class="wp-block-paragraph">This comprehensive report explores the phenomenon of TikTok Shop in the context of Customer Experience Management. It analyzes how the platform&#8217;s native integration, reliance on influencer marketing, and live commerce capabilities create a uniquely frictionless environment that stands in stark contrast to classical e-commerce platforms like Amazon or Allegro. By examining the operational and psychological mechanics of TikTok Shop, we can extract vital lessons for future CX managers aiming to build customer satisfaction in a highly competitive, omnichannel world.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="953" height="520" src="https://mietwood.com/wp-content/uploads/2026/06/image.png" alt="TIKTOK SHOP" class="wp-image-3648" srcset="https://mietwood.com/wp-content/uploads/2026/06/image.png 953w, https://mietwood.com/wp-content/uploads/2026/06/image-300x164.png 300w, https://mietwood.com/wp-content/uploads/2026/06/image-768x419.png 768w" sizes="auto, (max-width: 953px) 100vw, 953px" /><figcaption class="wp-element-caption">TIKTOK SHOP</figcaption></figure>



<h2 class="wp-block-heading"><strong>2. Understanding TikTok Shop: A Native E-Commerce Ecosystem</strong><strong></strong></h2>



<p class="wp-block-paragraph">To evaluate the impact of TikTok Shop on Customer Experience, one must first understand its structural architecture. As noted by industry experts and prominent CX blogs, TikTok Shop in Poland is not merely an external link embedded in a video profile. It is a fully native feature built directly into the TikTok application. It enables creators and brands to sell products without ever forcing the user to leave the platform. This single architectural decision is perhaps the most significant CX innovation in recent digital retail history.</p>



<p class="wp-block-paragraph">TikTok Shop essentially amalgamates several distinct commercial features into one cohesive ecosystem. It combines the vast product variety of a traditional marketplace, the immediacy of direct purchasing systems (thanks to integrated internal payment gateways), the interactive nature of live-stream commerce, and the persuasive power of influencer marketing. When a user watches a video reviewing a cosmetic product, a small, unobtrusive shopping bag icon appears on the screen. Tapping this icon does not open a new browser window—it opens a native product page directly over the video, allowing the user to select variants, apply coupons, and authorize payment (e.g., via Apple Pay, Google Pay, or localized methods like BLIK) in seconds.</p>



<p class="wp-block-paragraph">This contrasts sharply with the classic e-commerce experience provided by giants like Allegro or Amazon. On those platforms, the customer journey is highly intentional but often lacks emotional engagement. The user is presented with a sterile grid of products, standardized white backgrounds, and text-heavy descriptions. The cognitive load required to read reviews, compare prices, and finalize the checkout is relatively high. TikTok Shop flips this model. The product discovery is passive and driven by a highly personalized algorithm. The content is emotionally engaging and visually stimulating. By the time the user makes a purchasing decision, the emotional connection has already been established, and the operational friction of buying is practically zero.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="953" height="636" src="https://mietwood.com/wp-content/uploads/2026/06/image-1.png" alt="Understanding TikTok Shop: A Native E-Commerce Ecosystem" class="wp-image-3649" srcset="https://mietwood.com/wp-content/uploads/2026/06/image-1.png 953w, https://mietwood.com/wp-content/uploads/2026/06/image-1-300x200.png 300w, https://mietwood.com/wp-content/uploads/2026/06/image-1-768x513.png 768w" sizes="auto, (max-width: 953px) 100vw, 953px" /><figcaption class="wp-element-caption"><strong>Understanding TikTok Shop: A Native E-Commerce Ecosystem</strong></figcaption></figure>



<h2 class="wp-block-heading"><strong>3. The Power of Frictionless Customer Experience</strong><strong></strong></h2>



<p class="wp-block-paragraph">In Customer Experience Management, &#8216;friction&#8217; refers to any obstacle, delay, or cognitive burden a customer faces during their journey. Friction is the enemy of conversion. Traditional digital marketing often involves a multi-step funnel: a user sees an ad on social media, clicks a link, waits for a website to load, navigates a mobile site, adds an item to a cart, creates an account, inputs shipping details, and finally pays. At every single step of this process, there is a statistically significant drop-off rate as users lose interest, get distracted, or become frustrated by poor User Interface (UI) design.</p>



<p class="wp-block-paragraph">TikTok Shop achieves what CX managers call a &#8216;Frictionless Experience&#8217;. Because the payment and shipping details are often pre-saved within the user&#8217;s TikTok profile, the journey from product discovery to transaction completion can literally take three taps. This seamlessness is not just a technological convenience; it fundamentally alters consumer psychology. It transforms buying from a planned, logical task into a spontaneous, emotionally driven action.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="953" height="520" src="https://mietwood.com/wp-content/uploads/2026/06/image-2.png" alt="" class="wp-image-3650" srcset="https://mietwood.com/wp-content/uploads/2026/06/image-2.png 953w, https://mietwood.com/wp-content/uploads/2026/06/image-2-300x164.png 300w, https://mietwood.com/wp-content/uploads/2026/06/image-2-768x419.png 768w" sizes="auto, (max-width: 953px) 100vw, 953px" /></figure>



<p class="wp-block-paragraph">Furthermore, this frictionless environment extends to the post-purchase phase. Customer Experience does not end when the payment is processed. Modern retail organizations must manage order tracking, customer support, and returns. TikTok Shop integrates order management directly into the user&#8217;s social inbox. Notifications about shipping updates appear right next to messages from friends and alerts about new video likes. This normalizes the commercial aspect of the app, blending it perfectly with the user&#8217;s daily social interactions and maintaining high customer satisfaction.</p>



<h2 class="wp-block-heading"><strong>4. Influencer Marketing: Building Trust and Authenticity</strong><strong></strong></h2>



<p class="wp-block-paragraph">A cornerstone of TikTok Shop&#8217;s success—and a critical element of modern CX strategy—is its deep integration with influencer marketing. In traditional commerce, trust is built through brand reputation, professional photography, and cumulative star ratings. In the social commerce era, trust is built through parasocial relationships between consumers and content creators.</p>



<p class="wp-block-paragraph">TikTok&#8217;s affiliate system allows everyday creators to attach product links directly to their videos. Unlike highly polished, high-budget TV commercials, TikTok content thrives on authenticity and raw aesthetic. A creator filming a review in their bedroom, showing the actual texture of a skincare product or the fit of a piece of clothing, provides a level of tangible assurance that a studio photograph simply cannot match. This authenticity drastically improves the Customer Experience because the buyer feels they are receiving a genuine recommendation from a peer rather than a corporate sales pitch.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="953" height="636" src="https://mietwood.com/wp-content/uploads/2026/06/image-3.png" alt="" class="wp-image-3651" srcset="https://mietwood.com/wp-content/uploads/2026/06/image-3.png 953w, https://mietwood.com/wp-content/uploads/2026/06/image-3-300x200.png 300w, https://mietwood.com/wp-content/uploads/2026/06/image-3-768x513.png 768w" sizes="auto, (max-width: 953px) 100vw, 953px" /></figure>



<p class="wp-block-paragraph">For a Customer Experience Manager, leveraging this ecosystem means relinquishing some degree of strict corporate control over brand messaging. Instead of dictating exactly how a product should be presented, brands must empower creators to interpret the product in a way that resonates with their specific niche audience. This requires a paradigm shift: the creator is not just an advertiser; they are an extension of the brand&#8217;s customer service and CX team. When a creator actively responds to comments on their video, answering specific questions about the product&#8217;s sizing or material, they are performing real-time, highly personalized customer service.</p>



<h2 class="wp-block-heading"><strong>5. Live Commerce: Real-Time Customer Engagement</strong><strong></strong></h2>



<p class="wp-block-paragraph">One of the most dynamic features of TikTok Shop, and a major focal point for CX professionals, is Live Commerce (Live Shopping). While live shopping has roots in traditional television networks like QVC or Telezakupy Mango, TikTok has reinvented it for the mobile-first generation. Live commerce merges real-time entertainment with instant purchasing capabilities.</p>



<p class="wp-block-paragraph">During a TikTok Live session, a host (often an influencer or a brand representative) showcases products in real-time. Viewers can interact through a live chat window, asking the host to demonstrate specific features—for example, asking them to swatch a different shade of lipstick or to show the inside pockets of a backpack. The host can respond to these requests instantly. This creates a highly interactive, personalized, and engaging Customer Experience that mimics the benefits of in-store physical shopping, but on a massive, digital scale.</p>



<p class="wp-block-paragraph">From a psychological perspective, Live Commerce introduces the element of FOMO (Fear Of Missing Out), which drives conversion. Live streams often feature limited-time discounts or exclusive product drops that are only available while the broadcast is active. This creates a sense of urgency. While this urgency is excellent for driving sales, CX managers must handle it carefully. If the customer feels overly pressured, or if the product quality does not match the hype generated during the live stream, it can lead to buyer&#8217;s remorse, high return rates, and a damaged brand reputation. Therefore, maintaining transparency and delivering genuine value during live events is crucial for long-term customer satisfaction.</p>



<p class="wp-block-paragraph"><strong>6.&nbsp; Strategic Implications for the Polish Market</strong><strong></strong></p>



<p class="wp-block-paragraph">The introduction of TikTok Shop in Poland presents unique opportunities and challenges for local e-commerce management. Polish consumers are highly digitally literate and have strong expectations regarding e-commerce standards, largely shaped by the dominance of platforms like Allegro and the efficiency of logistical networks like InPost Paczkomaty. To succeed in this market, brands utilizing TikTok Shop must ensure that their back-end operational management matches their front-end marketing appeal.</p>



<p class="wp-block-paragraph">A great viral video and a seamless checkout process will mean nothing if the delivery takes two weeks or if the return process is complicated. Customer Experience is an end-to-end journey. Brands must integrate their TikTok Shop dashboards with robust inventory management and local fulfillment centers. Furthermore, customer support must be adapted to the platform. If a customer buys a product on TikTok, they will likely seek support on TikTok—via direct messages or video comments. Modern organizations must employ social media community managers who are trained not just in marketing, but in resolving complex customer service issues quickly and empathetically.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="975" height="650" src="https://mietwood.com/wp-content/uploads/2026/06/image-5.png" alt="" class="wp-image-3653" srcset="https://mietwood.com/wp-content/uploads/2026/06/image-5.png 975w, https://mietwood.com/wp-content/uploads/2026/06/image-5-300x200.png 300w, https://mietwood.com/wp-content/uploads/2026/06/image-5-768x512.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></figure>



<p class="wp-block-paragraph">Additionally, brands must be highly aware of cultural nuances. The content that works for TikTok Shop in Asia or the US may not resonate with the Polish audience. Localization is key. Collaborating with local Polish creators, participating in local internet trends, and understanding the specific purchasing behaviors of the Polish Gen Z and Millennial demographics are essential strategies for building a sustainable and profitable presence on the platform.</p>



<h2 class="wp-block-heading"><strong>7. Conclusion: The Future of Customer Experience Management</strong><strong></strong></h2>



<p class="wp-block-paragraph">In conclusion, TikTok Shop is not merely a new sales channel; it is a fundamental disruption to the established norms of Customer Experience Management. By collapsing the sales funnel into a single, native application, it removes friction and capitalizes on the emotional power of entertainment and community. It proves that the future of modern retail lies in omnichannel strategies, where content and commerce are indistinguishable from one another.</p>



<p class="wp-block-paragraph">For students and future executives studying Customer Experience Management, the rise of TikTok Shop serves as a vital lesson. It demonstrates that customer satisfaction in the modern era requires agility, a deep understanding of digital culture, and a willingness to embrace creator-led ecosystems. The traditional, static e-commerce catalog is being replaced by the dynamic, infinite scroll. Brands that adapt to this environment, focusing on authentic engagement, seamless operations, and interactive live commerce, will thrive in the next generation of retail.</p>



<p class="wp-block-paragraph">Ultimately, whether an organization is selling on a classic platform like Amazon or a cutting-edge social ecosystem like TikTok, the core principle of CX remains the same: put the customer at the center of the strategy. Understand their needs, respect their time by removing friction, and provide an experience that is not only functional, but genuinely delightful.</p>



<p class="wp-block-paragraph"><strong>References / Bibliography</strong></p>



<ul class="wp-block-list">
<li><strong>Parasuraman, A., Zeithaml, V. A., &amp; Berry, L. L. (1988).</strong> <em>SERVQUAL: A Multiple-Item Scale for Measuring Consumer Perceptions of Service Quality.</em> Journal of Retailing, 64(1), 12-40</li>



<li><strong>Lemon, K. N., &amp; Verhoef, P. C. (2016).</strong> <em>Understanding Customer Experience Throughout the Customer Journey.</em> Journal of Marketing, 80(6), 69-96.</li>



<li><strong>Boston Consulting Group (BCG) &amp; TikTok. (2022/2024).</strong> <em>Shoppertainment: APAC&#8217;s Trillion-Dollar Opportunity</em>. <a href="https://lupomarketing.com/wp-content/uploads/2022/08/shoppertainment-apacs-trillion-dollar-opportunity.pdf" target="_blank" rel="noopener"><strong>Shoppertainment</strong>: <strong>APAC&#8217;s Trillion</strong>&#8211;<strong>Dollar Opportunity</strong></a></li>



<li><strong>Hodkinson, C. (2019).</strong> <em>‘Fear of Missing Out’ (FOMO) marketing appeals: A conceptual model.</em> Journal of Marketing Communications, 25(1), 65-88. <a href="https://www.tandfonline.com/doi/abs/10.1080/13527266.2016.1234504?casa_token=p2ifiBDNyBMAAAAA:n8e_dx9Cr7WmnWXDc9qFuNQUrPycUNoxYiBzNW0J-pFFYHm2j2szelhEZSJw2jzCe4fquAS2vFYq8Q" target="_blank" rel="noopener">Fear of Missing Out'(FOMO) marketing appeals: A conceptual model</a></li>
</ul>



<p class="wp-block-paragraph"></p>
<p>The post <a rel="nofollow" href="https://mietwood.com/tiktok-shop">TIKTOK SHOP: REVOLUTIONIZING CUSTOMER EXPERIENCE MANAGEMENT IN MODERN E-COMMERCE</a> appeared first on <a rel="nofollow" href="https://mietwood.com">Customer Experience Management</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>AI influencers</title>
		<link>https://mietwood.com/ai-influencers</link>
		
		<dc:creator><![CDATA[Maki Pa]]></dc:creator>
		<pubDate>Fri, 29 May 2026 09:42:49 +0000</pubDate>
				<category><![CDATA[Customer Experience Management]]></category>
		<guid isPermaLink="false">https://mietwood.com/?p=3630</guid>

					<description><![CDATA[<p>AI influencers are computer-generated virtual personas powered by artificial intelligence. They have emerged as one of the most disruptive forces in digital marketing. They now command millions of followers, secure six-figure brand contracts, and underpin a global market expected to grow from USD 6.1 billion in 2024 to USD 170.2 billion by 2034 (CAGR ≈...</p>
<p>The post <a rel="nofollow" href="https://mietwood.com/ai-influencers">AI influencers</a> appeared first on <a rel="nofollow" href="https://mietwood.com">Customer Experience Management</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">AI influencers are computer-generated virtual personas powered by artificial intelligence. They have emerged as one of the most disruptive forces in digital marketing. They now command millions of followers, secure six-figure brand contracts, and underpin a global market expected to grow from USD 6.1 billion in 2024 to USD 170.2 billion by 2034 (CAGR ≈ 39.5%). This report investigates their conceptual foundations, technical construction, business model logic, key players, marketing impact, regulatory challenges, and academic underpinnings, offering a comprehensive framework for managers, marketers, and platform strategists.</p>



<div class="wp-block-file aligncenter"><a id="wp-block-file--media-1fcf0f46-b4c2-4396-86e8-8aee31dd360e" href="https://mietwood.com/wp-content/uploads/2026/05/AI_Influencers_Academic_Report.pdf" target="_blank" rel="noreferrer noopener">AI_Influencers_Academic_Report</a><a href="https://mietwood.com/wp-content/uploads/2026/05/AI_Influencers_Academic_Report.pdf" class="wp-block-file__button wp-element-button" aria-describedby="wp-block-file--media-1fcf0f46-b4c2-4396-86e8-8aee31dd360e" download>Download</a></div>



<div class="wp-block-kadence-spacer aligncenter kt-block-spacer-3630_b52861-b9"><div class="kt-block-spacer kt-block-spacer-halign-center"><hr class="kt-divider"/></div></div>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="922" height="597" src="https://mietwood.com/wp-content/uploads/2026/05/image-1.png" alt="Strategic Advantages of AI Influencers over Human Talent" class="wp-image-3631" srcset="https://mietwood.com/wp-content/uploads/2026/05/image-1.png 922w, https://mietwood.com/wp-content/uploads/2026/05/image-1-300x194.png 300w, https://mietwood.com/wp-content/uploads/2026/05/image-1-768x497.png 768w" sizes="auto, (max-width: 922px) 100vw, 922px" /><figcaption class="wp-element-caption">Strategic Advantages of AI Influencers over Human Talent</figcaption></figure>



<h2 class="wp-block-heading">AI Influencers Case Studies</h2>



<p class="wp-block-paragraph"><strong>Lil Miquela — The Pioneer</strong><br>Created by Los Angeles startup Brud in 2016, Lil Miquela (Miquela Sousa) is widely credited with proving that virtual influencers could achieve mainstream commercial success. Before releasing a single sponsored post, Brud invested over a year building her persona — a 19-year-old Brazilian-American musician with strong views on social justice, digital identity and pop culture. This character depth proved critical: by the time brands  approached Brud, Miquela had an audience that genuinely cared about her narrative. Her 2019 Calvin Klein campaign — shot alongside Bella Hadid — marked the inflection point for the entire industry, demonstrating that consumers would engage with a virtual personality in a luxury fashion context at the level of an A-list celebrity.</p>



<p class="wp-block-paragraph"><strong>Aitana López — The Agency Model</strong><br>Aitana López (<a href="https://www.youtube.com/results?search_query=aitana+l%C3%B3pez+influencer" target="_blank" rel="noopener">link</a>) represents the next evolutionary stage: a commercially motivated, generative-AI-built persona created explicitly to solve a business problem. The Clueless agency (Barcelona) built her in late 2023 after client campaigns were disrupted by unreliable human models. She was engineered from the outset with commercial viability in mind — pink hair, tattoos, fitness and gaming niche, Spanish-speaking audience, and a Fanvue subscription tier at €15 per month. Her success led The Clueless to pivot its core offering to an AI influencer-as-a-service model, building bespoke virtual personas for other brands — demonstrating the B2B extension of the concept. AI influencers.</p>



<p class="wp-block-paragraph"><a href="https://www.youtube.com/shorts/dMOGpQYWH4g" target="_blank" rel="noopener">Lu do Magalu</a> — The Corporate Model<br>Brazilian retail giant Magazine Luiza launched Lu in 2009 as a virtual assistant. Over 15 years she evolved<br>into the world&#8217;s most-followed brand character, amassing over 30 million followers across platforms. Lu<br>simultaneously handles product reviews and customer service, demonstrating that AI influencers can function<br>as integrated marketing-plus-operations assets. Her ROI extends beyond marketing KPIs to include<br>measurable reductions in customer service load — a dual-function model increasingly adopted by retailers<br>globally.</p>



<p class="wp-block-paragraph"><a href="https://mietwood.com/influencer-marketing" target="_blank">Authenticity in Influencer Marketing: Why It Matters and How to Achieve It</a></p>



<p class="wp-block-paragraph">Influencer marketing has become one of the most powerful tools in digital advertising, driving billions in brand collaborations worldwide. Yet, as the industry matures, a critical challenge has emerged:&nbsp;<strong>authenticity</strong>. Consumers increasingly demand genuine connections, while brands often prioritize reach and engagement metrics. This tension creates a paradox—how can influencers remain authentic while monetizing their content?</p>



<p class="wp-block-paragraph">Recent research published in the <em>Journal of Marketing</em> (<a href="https://journals.sagepub.com/doi/full/10.1177/00222429251319786" target="_blank" rel="noreferrer noopener">Duffek et al., 2025</a>) explores this issue in depth, offering actionable insights for influencers, brands, and agencies. This blog post breaks down the <strong>theoretical foundations</strong>, <strong>key findings</strong>, and <strong>practical strategies</strong> from the study, helping you understand why authenticity is central to influencer marketing success. AI influencers.</p>



<p class="wp-block-paragraph"></p>
<p>The post <a rel="nofollow" href="https://mietwood.com/ai-influencers">AI influencers</a> appeared first on <a rel="nofollow" href="https://mietwood.com">Customer Experience Management</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Blockchain technology 2026</title>
		<link>https://mietwood.com/blockchain-technology-2026</link>
		
		<dc:creator><![CDATA[Maki Pa]]></dc:creator>
		<pubDate>Thu, 28 May 2026 10:43:46 +0000</pubDate>
				<category><![CDATA[Blockchain in business]]></category>
		<category><![CDATA[blockchain]]></category>
		<guid isPermaLink="false">https://mietwood.com/?p=3626</guid>

					<description><![CDATA[<p>Znaczenie blockchain technology oraz kryptowalut wykracza poza sam aspekt finansowy. Technologia blockchain, będąca ich fundamentem, znajduje zastosowanie w wielu sektorach gospodarki, od logistyki po administrację publiczną. Celem niniejszej pracy jest analiza mechanizmów działania rynku kryptowalut, ocena znaczenia technologii blockchain oraz identyfikacja głównych kierunków ich rozwoju w kontekście współczesnej gospodarki cyfrowej. Kryptowaluty można definiować jako zdecentralizowane...</p>
<p>The post <a rel="nofollow" href="https://mietwood.com/blockchain-technology-2026">Blockchain technology 2026</a> appeared first on <a rel="nofollow" href="https://mietwood.com">Customer Experience Management</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Znaczenie blockchain technology oraz kryptowalut wykracza poza sam aspekt finansowy. Technologia blockchain, będąca ich fundamentem, znajduje zastosowanie w wielu sektorach gospodarki, od logistyki po administrację publiczną. Celem niniejszej pracy jest analiza mechanizmów działania rynku kryptowalut, ocena znaczenia technologii blockchain oraz identyfikacja głównych kierunków ich rozwoju w kontekście współczesnej gospodarki cyfrowej.</p>



<p class="wp-block-paragraph">Kryptowaluty można definiować jako zdecentralizowane systemy pieniężne wykorzystujące kryptografię do zabezpieczania transakcji oraz kontroli emisji nowych jednostek. Ich powstanie stanowi odpowiedź na ograniczenia tradycyjnego systemu finansowego, w szczególności na potrzebę zwiększenia przejrzystości, obniżenia kosztów transakcyjnych oraz uniezależnienia się od instytucji centralnych.</p>



<p class="wp-block-paragraph">Postępująca cyfryzacja gospodarki światowej prowadzi do dynamicznych zmian w sposobach tworzenia, przechowywania oraz transferu wartości. Jednym z najbardziej przełomowych zjawisk ostatnich lat jest rozwój kryptowalut oraz technologii blockchain, które w istotny sposób redefiniują tradycyjne pojęcia pieniądza, zaufania oraz roli instytucji finansowych. Kryptowaluty, takie jak Bitcoin czy Ethereum, stanowią alternatywę dla systemów opartych na instytucjach centralnych. Ich funkcjonowanie opiera się na zdecentralizowanych sieciach<br>komputerowych, które eliminują konieczność pośrednictwa banków i innych podmiotów finansowych.</p>



<p class="wp-block-paragraph">W literaturze ekonomicznej podkreśla się jednak, że kryptowaluty nie zawsze w pełni realizują klasyczne funkcje pieniądza. Szczególnie problematyczna pozostaje funkcja środka przechowywania wartości, ze względu na wysoką zmienność cen oraz podatność na spekulacje rynkowe. Warto podkreślić, że mimo wysokiego poziomu bezpieczeństwa technologii blockchain, użytkownicy pozostają podatni na ataki socjotechniczne oraz błędy<br>operacyjne.</p>



<p class="wp-block-paragraph">Całe opracowanie do pobrania poniżej &#8211; blockchain technology</p>



<h2 class="wp-block-heading">Rynek kryptowalut i technologia blockchain (blockchain technology) – analiza funkcjonowania, znaczenia i kierunków rozwoju</h2>



<p class="wp-block-paragraph">Autor: Olga Trzeciak</p>



<div class="wp-block-file"><a id="wp-block-file--media-952c8381-790c-4a02-b1d9-2dc2498eb995" href="https://mietwood.com/wp-content/uploads/2026/05/Blockchain-Trzeciak-Olga-Rynek-kryptowalut-i-technologia.pdf">Blockchain &#8211; Trzeciak Olga &#8211; Rynek kryptowalut i technologia</a><a href="https://mietwood.com/wp-content/uploads/2026/05/Blockchain-Trzeciak-Olga-Rynek-kryptowalut-i-technologia.pdf" class="wp-block-file__button wp-element-button" aria-describedby="wp-block-file--media-952c8381-790c-4a02-b1d9-2dc2498eb995" download>Download</a></div>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading"><strong>Analiza techniczna Białej Księgi Bitcoina: System elektronicznej gotówki P2P</strong></h2>



<p class="wp-block-paragraph">Autorzy opracowania: Joanna Świrgoń, Mateusz Łuczyński</p>



<p class="wp-block-paragraph">Biała księga Bitcoina (ang. <em>Bitcoin Whitepaper</em>) to dokument techniczny opublikowany w 2008 roku przez osobę lub grupę osób pod pseudonimem Satoshi Nakamoto. Definiuje on protokół działania zdecentralizowanej sieci płatniczej, która funkcjonuje bez udziału centralnego emitenta. Zgodnie z definicją przyjętą w branży technologicznej, „white paper” projektu kryptowalutowego pełni funkcję instrukcji operacyjnej. Zawiera on opis problemu, proponowany sposób jego rozwiązania oraz specyfikację techniczną zastosowanych algorytmów.</p>



<p class="wp-block-paragraph"><strong>Cel powstania dokumentu i identyfikacja problemu</strong></p>



<p class="wp-block-paragraph">Głównym założeniem autorów było stworzenie systemu, który eliminuje konieczność udziału instytucji finansowych (między innymi banków) w procesie przesyłania kapitału. Tradycyjny model bankowy opiera się na zaufaniu do strony trzeciej, co generuje koszty transakcyjne i ryzyko ewentualnych blokowań operacji.</p>



<p class="wp-block-paragraph">Bitcoin wprowadza model peer-to-peer (P2P), w którym transakcje są przesyłane bezpośrednio między użytkownikami a zaufanie do instytucji zostaje zastąpione weryfikacją technologiczną i kryptograficzną.</p>



<p class="wp-block-paragraph">Całość opracowania do pobrania poniżej.</p>



<div class="wp-block-file"><a id="wp-block-file--media-502ea99d-0eaa-41e0-ab85-41005986e779" href="https://mietwood.com/wp-content/uploads/2026/05/Biala-ksiega-Bitcoina.pdf">Biała księga Bitcoina</a><a href="https://mietwood.com/wp-content/uploads/2026/05/Biala-ksiega-Bitcoina.pdf" class="wp-block-file__button wp-element-button" aria-describedby="wp-block-file--media-502ea99d-0eaa-41e0-ab85-41005986e779" download>Download</a></div>



<p class="wp-block-paragraph"></p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="945" height="511" src="https://mietwood.com/wp-content/uploads/2026/05/image-2.png" alt="Mechanizm Proof of Work w Blockchain" class="wp-image-3638" srcset="https://mietwood.com/wp-content/uploads/2026/05/image-2.png 945w, https://mietwood.com/wp-content/uploads/2026/05/image-2-300x162.png 300w, https://mietwood.com/wp-content/uploads/2026/05/image-2-768x415.png 768w" sizes="auto, (max-width: 945px) 100vw, 945px" /><figcaption class="wp-element-caption"><strong>Mechanizm Proof of Work</strong> w Blockchain</figcaption></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">Czytaj więcej: <a href="https://mietwood.com/blockchain-w-biznesie">Blockchain w biznesie</a></p>



<p class="wp-block-paragraph">Blockchain technology and news: <a href="https://www.blockchain.com/explorer/news " target="_blank" rel="noopener">https://www.blockchain.com/explorer/news </a></p>



<p class="wp-block-paragraph"></p>
<p>The post <a rel="nofollow" href="https://mietwood.com/blockchain-technology-2026">Blockchain technology 2026</a> appeared first on <a rel="nofollow" href="https://mietwood.com">Customer Experience Management</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>FOMO czyli lęk przed utratą okazji, doświadczenia lub korzyści dostępnej innym</title>
		<link>https://mietwood.com/fomo-czyli-lek-przed-utrata-okazji</link>
		
		<dc:creator><![CDATA[Maki Pa]]></dc:creator>
		<pubDate>Thu, 28 May 2026 07:35:30 +0000</pubDate>
				<category><![CDATA[Customer Experience Management]]></category>
		<guid isPermaLink="false">https://mietwood.com/?p=3619</guid>

					<description><![CDATA[<p>FOMO czyli lęk przed utratą okazji. Klasyczne definicje opisują FOMO jako obawę, że inni mogą uczestniczyć w satysfakcjonujących wydarzeniach, podczas gdy dana osoba jest z nich wyłączona [20]. W e-commerce pojęcie to przyjmuje bardziej transakcyjny charakter: klient obawia się, że jeśli nie zareaguje natychmiast, straci rabat, limitowany produkt, modny trend albo pozycję społeczną wynikającą z...</p>
<p>The post <a rel="nofollow" href="https://mietwood.com/fomo-czyli-lek-przed-utrata-okazji">FOMO czyli lęk przed utratą okazji, doświadczenia lub korzyści dostępnej innym</a> appeared first on <a rel="nofollow" href="https://mietwood.com">Customer Experience Management</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">FOMO czyli lęk przed utratą okazji. Klasyczne definicje opisują FOMO jako obawę, że inni mogą uczestniczyć w satysfakcjonujących wydarzeniach, podczas gdy dana osoba jest z nich wyłączona [20]. </p>



<p class="wp-block-paragraph">W e-commerce pojęcie to przyjmuje bardziej transakcyjny charakter: klient obawia się, że jeśli nie zareaguje natychmiast, straci rabat, limitowany produkt, modny trend albo pozycję społeczną wynikającą z posiadania dobra.</p>



<p class="wp-block-paragraph">Dla menedżera sklepu internetowego FOMO jest narzędziem architektury wyboru. Dla analityka<br>biznesowego jest zmienną, której efekty należy mierzyć nie tylko przez wzrost współczynnika konwersji, lecz także przez marżę, zwroty, reklamacje, długookresową wartość klienta i reputację marki. </p>



<p class="wp-block-paragraph">Dla konsumenta jest natomiast doświadczeniem ambiwalentnym: może ułatwiać szybkie odkrywanie atrakcyjnych ofert, ale może też prowadzić do impulsywnych lub kompulsywnych zakupów.</p>



<h2 class="wp-block-heading">FOMO w ujęciu marketingowym</h2>



<h3 class="wp-block-heading">Od psychologii społecznej do ekonomii behawioralnej</h3>



<p class="wp-block-paragraph">Podstawą FOMO są trzy mechanizmy. Pierwszym jest potrzeba przynależności: ludzie chcą być częścią grupy, znać aktualne trendy i nie pozostawać poza obiegiem informacji. </p>



<p class="wp-block-paragraph">Drugim są porównania społeczne: widząc wybory innych użytkowników, konsument interpretuje je jako sygnał jakości lub popularności. </p>



<p class="wp-block-paragraph">Trzecim jest awersja do straty: utrata okazji bywa odczuwana silniej niż neutralna rezygnacja z zakupu.</p>



<p class="wp-block-paragraph">Ekonomia behawioralna pokazuje, że konsumenci nie maksymalizują użyteczności w sposób czysto kalkulacyjny. Decyzje podejmowane są pod wpływem uproszczeń poznawczych, emocji i kontekstu prezentacji oferty. Monografie Kahnemana, Ariely’ego oraz Cialdiniego dostarczają użytecznego języka do interpretacji tych zachowań: szybkie przetwarzanie informacji, przewidywalna irracjonalność, reguła niedoboru i społeczny dowód słuszności pomagają wyjaśnić, dlaczego komunikat<br>„zostały 2 sztuki” może działać silniej niż techniczny opis produktu [15, 3, 4].</p>



<h2 class="wp-block-heading">2.2 FOMO jako apel marketingowy</h2>



<p class="wp-block-paragraph">W literaturze marketingowej FOMO traktowane jest jako typ apelu perswazyjnego, który sugeruje konsumentowi, że brak natychmiastowego działania wiąże się z kosztem alternatywnym. Hodkinson proponuje model konceptualny takich apeli, w którym presja wynika z ograniczenia czasu, dostępności, statusu lub uczestnictwa w doświadczeniu [13]. Good i Hyman wskazują, że komunikaty oparte na<br>FOMO mogą zwiększać prawdopodobieństwo zakupu, zwłaszcza gdy wzmacniają przewidywaną radość i poczucie samowzmocnienia [10, 11].</p>



<p class="wp-block-paragraph">W praktyce e-commerce FOMO rzadko występuje jako pojedynczy komunikat. Najczęściej jest częścią pakietu bodźców: rabatu, licznika czasu, informacji o liczbie oglądających produkt, rekomendacji influencerów, (<a href="https://mietwood.com/czy-to-ja-jestem-dramatem">Czy to ja jestem dramatem?</a>) dynamicznych powiadomień oraz personalizowanych sugestii algorytmicznych. Siła oddziaływania wynika z kumulacji: klient nie tylko widzi promocję, ale także dostaje sygnał, że promocja zaraz zniknie, inni już kupują, a produkt pasuje do jego profilu.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="550" src="https://mietwood.com/wp-content/uploads/2026/05/image-3-1024x550.png" alt="Reklama z efektem FOMO" class="wp-image-3640" srcset="https://mietwood.com/wp-content/uploads/2026/05/image-3-1024x550.png 1024w, https://mietwood.com/wp-content/uploads/2026/05/image-3-300x161.png 300w, https://mietwood.com/wp-content/uploads/2026/05/image-3-768x413.png 768w, https://mietwood.com/wp-content/uploads/2026/05/image-3.png 1253w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Reklama z efektem FOMO</figcaption></figure>



<p class="wp-block-paragraph">FOMO jest skutecznym narzędziem marketingowym w e-commerce, ale nie jest narzędziem neutralnym. Jego siła wynika z połączenia psychologicznych potrzeb przynależności, porównań społecznych, awersji do straty i presji czasu. W krótkim okresie może zwiększać uwagę, intencje zakupu, zakupy impulsywne i współczynnik konwersji. W dłuższym okresie może jednak podważać lojalność, zwiększać liczbę zwrotów i budować wizerunek marki manipulacyjnej.</p>



<p class="wp-block-paragraph">Najlepsza praktyka polega więc nie na maksymalizacji presji, lecz na odpowiedzialnym projektowaniu bodźców. E-commerce potrzebuje FOMO informacyjnego, które pomaga klientowi zrozumieć realne ograniczenia oferty, a nie FOMO manipulacyjnego, które eksploatuje lęk. Z perspektywy analityki biznesowej kluczowa jest odpowiedź nie tylko na pytanie „czy kampania sprzedała więcej?”, ale<br>także „czy kampania zbudowała klienta, który wróci?”.</p>



<h2 class="wp-block-heading">Literatura</h2>



<p class="wp-block-paragraph">[1] Abel, J., Buff, C., &amp; Burr, S. (2016). Social Media and the Fear of Missing Out: Scale Development and Assessment. Journal of Business &amp; Economics Research, 14, 33–44.<br>[2] Ajzen, I. (1991). The theory of planned behavior. Organizational Behavior and Human Decision Processes, 50(2), 179–211.<br>[3] Ariely, D. (2008). Predictably Irrational: The Hidden Forces That Shape Our Decisions. HarperCollins.<br>[4] Cialdini, R. B. (2009). Influence: Science and Practice (5th ed.). Pearson Education.<br>[5] Davis, F. D. (1989). Perceived usefulness, perceived ease of use, and user acceptance of information technology. MIS Quarterly, 13(3), 319–340.</p>



<p class="wp-block-paragraph">Hodkinson, C. (2019). ‘Fear of Missing Out’(FOMO) marketing appeals: A conceptual model.&nbsp;<em>Journal of Marketing Communications</em>,&nbsp;<em>25</em>(1), 65-88. <a href="https://www.tandfonline.com/doi/pdf/10.1080/13527266.2016.1234504" target="_blank" rel="noopener">https://www.tandfonline.com/doi/pdf/10.1080/13527266.2016.1234504</a></p>



<p class="wp-block-paragraph"></p>
<p>The post <a rel="nofollow" href="https://mietwood.com/fomo-czyli-lek-przed-utrata-okazji">FOMO czyli lęk przed utratą okazji, doświadczenia lub korzyści dostępnej innym</a> appeared first on <a rel="nofollow" href="https://mietwood.com">Customer Experience Management</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Czy to ja jestem dramatem?</title>
		<link>https://mietwood.com/czy-to-ja-jestem-dramatem</link>
		
		<dc:creator><![CDATA[Maki Pa]]></dc:creator>
		<pubDate>Tue, 12 May 2026 14:10:07 +0000</pubDate>
				<category><![CDATA[Customer Experience Management]]></category>
		<guid isPermaLink="false">https://mietwood.com/?p=3603</guid>

					<description><![CDATA[<p>Czy to ja, czy to ja jestem dramatem? &#8211; Twórcy Tik-Toka często wykorzystują konkretne powiedzonka, memy lub cytaty, aby podbić oglądalność i nawiązać kontakt z widownią. Tańcz, jakby nikt nie patrzył – częsty motyw w filmach tanecznych lub lifestylowych. Czasami jest w porządku, żeby nie być w porządku – cytat często wykorzystywany przez twórców poruszających...</p>
<p>The post <a rel="nofollow" href="https://mietwood.com/czy-to-ja-jestem-dramatem">Czy to ja jestem dramatem?</a> appeared first on <a rel="nofollow" href="https://mietwood.com">Customer Experience Management</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Czy to ja, czy to ja jestem dramatem? &#8211; Twórcy Tik-Toka często wykorzystują konkretne powiedzonka, memy lub cytaty, aby podbić oglądalność i nawiązać kontakt z widownią. Tańcz, jakby nikt nie patrzył – częsty motyw w filmach tanecznych lub lifestylowych. Czasami jest w porządku, żeby nie być w porządku – cytat często wykorzystywany przez twórców poruszających tematy zdrowia psychicznego i refleksji.</p>



<p class="wp-block-paragraph">Read more about personal branding in <a href="https://mietwood.com/wp-content/uploads/2026/05/Personal-branding-na-TikToku-cechy-mlodych-tworcow.pdf">e-book-pl</a> in Polish or in this <a href="https://mietwood.com/wp-content/uploads/2026/05/Creative-beyond-TikToks-Personal-branding-and-theories-behind.pdf">e-bool-en</a> in English</p>



<h2 class="wp-block-heading">Czym jest personal branding</h2>



<p class="wp-block-paragraph">Personal branding można zdefiniować jako proces świadomego budowania i komunikowania własnej rozpoznawalnej tożsamości w taki sposób, aby była ona czytelna dla odbiorców, wiarygodna i użyteczna w określonym kontekście społecznym lub rynkowym. </p>



<p class="wp-block-paragraph">W klasycznym ujęciu marka była związana przede wszystkim z produktem, usługą lub organizacją. W warunkach mediów społecznościowych marką staje się jednak także osoba, a dokładniej: zestaw znaczeń kojarzonych z jej obecnością publiczną.</p>



<p class="wp-block-paragraph">W literaturze podkreśla się, że <strong>personal branding łączy elementy autoprezentacji, promocji, reputacji i przedsiębiorczości</strong>. Khamis, Ang i Welling pokazują, że zjawisko self-brandingu splata się z kulturą mikrocelebryckości, w której zwykli użytkownicy przejmują techniki wcześniej charakterystyczne dla celebrytów i profesjonalnych instytucji medialnych [18]. Oznacza to, że marka osobista nie jest już domeną polityków, ekspertów telewizyjnych czy menedżerów wysokiego szczebla. Dziś może ją budować również licealistka prowadząca konto beauty, student komentujący popkulturę albo młody twórca publikujący krótkie materiały edukacyjne.</p>



<p class="wp-block-paragraph">W sensie praktycznym personal branding nie polega wyłącznie na tym, by „być widocznym”. Sama widzialność nie wystarcza. Potrzebna jest jeszcze spójność znaczeń. Odbiorca powinien umieć rozpoznać, z kim ma do czynienia, czego może oczekiwać po danym twórcy, jakiego typu treści ten twórca publikuje i dlaczego warto wrócić do jego kolejnych materiałów. Marka osobista jest więc obietnicą pewnej ciągłości.</p>



<h2 class="wp-block-heading">Marka osobista a tożsamość, reputacja i wizerunek</h2>



<p class="wp-block-paragraph">W dyskusji akademickiej warto odróżnić kilka pojęć, które w języku potocznym bywają używane zamiennie. <strong><em>Tożsamość </em>odnosi się do tego, jak jednostka rozumie samą siebie. <em>Wizerunek </em>dotyczy tego, jak jest przedstawiana i odczytywana publicznie. <em>Reputacja </em>wiąże się z bardziej długofalową oceną wiarygodności, jakości lub rzetelności. <em>Marka osobista </em>natomiast łączy te elementy, ale dodatkowo zawiera wymiar strategiczny: chodzi o takie zarządzanie widzialnością, aby określony obraz siebie mógł stać się rozpoznawalny i wartościowy.</strong></p>



<div data-wp-interactive="core/file" class="wp-block-file"><object data-wp-bind--hidden="!state.hasPdfPreview" hidden class="wp-block-file__embed" data="https://mietwood.com/wp-content/uploads/2026/05/Personal-branding-na-TikToku-cechy-mlodych-tworcow.pdf" type="application/pdf" style="width:100%;height:600px" aria-label="Embed of Personal branding na TikToku - cechy młodych twórców."></object><a id="wp-block-file--media-8c027076-fa03-41fe-be3e-774aea146bf9" href="https://mietwood.com/wp-content/uploads/2026/05/Personal-branding-na-TikToku-cechy-mlodych-tworcow.pdf">Personal branding na TikToku &#8211; cechy młodych twórców</a><a href="https://mietwood.com/wp-content/uploads/2026/05/Personal-branding-na-TikToku-cechy-mlodych-tworcow.pdf" class="wp-block-file__button wp-element-button" aria-describedby="wp-block-file--media-8c027076-fa03-41fe-be3e-774aea146bf9" download>Download</a></div>



<p class="wp-block-paragraph">W mediach społecznościowych granice między tymi poziomami są płynne. Tożsamość prywatna przenika do przekazu publicznego, a przekaz publiczny zaczyna z kolei wpływać na to, jak jednostka rozumie samą siebie. Badania nad samo-prezentacją nastolatków i młodych dorosłych na Instagramie i TikToku pokazują, że platformy nie są jedynie kanałami ekspresji, lecz środowiskami, które modelują sposoby pokazywania siebie [15, 32]. Tym samym personal branding nie jest dodatkiem do tożsamości, ale staje się jednym z mechanizmów jej społecznego organizowania.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="850" src="https://mietwood.com/wp-content/uploads/2026/05/asian-woman-adjusts-hair-and-makeup-in-front-of-smartphone-for-live-online-content-creation.-6964947-scaled-e1778594304883-1024x850.jpg" alt="Czy to ja jestem dramatem TikTok." class="wp-image-3605" srcset="https://mietwood.com/wp-content/uploads/2026/05/asian-woman-adjusts-hair-and-makeup-in-front-of-smartphone-for-live-online-content-creation.-6964947-scaled-e1778594304883-1024x850.jpg 1024w, https://mietwood.com/wp-content/uploads/2026/05/asian-woman-adjusts-hair-and-makeup-in-front-of-smartphone-for-live-online-content-creation.-6964947-scaled-e1778594304883-300x249.jpg 300w, https://mietwood.com/wp-content/uploads/2026/05/asian-woman-adjusts-hair-and-makeup-in-front-of-smartphone-for-live-online-content-creation.-6964947-scaled-e1778594304883-768x638.jpg 768w, https://mietwood.com/wp-content/uploads/2026/05/asian-woman-adjusts-hair-and-makeup-in-front-of-smartphone-for-live-online-content-creation.-6964947-scaled-e1778594304883-1536x1275.jpg 1536w, https://mietwood.com/wp-content/uploads/2026/05/asian-woman-adjusts-hair-and-makeup-in-front-of-smartphone-for-live-online-content-creation.-6964947-scaled-e1778594304883.jpg 1707w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Asian woman adjusts hair and makeup in front of smartphone for live online content creation TikTok.</figcaption></figure>



<h1 class="wp-block-heading">Style prezentacji młodych twórców na TikToku</h1>



<h2 class="wp-block-heading">Autoprezentacja jako praktyka codzienna</h2>



<p class="wp-block-paragraph">Badania Goffmanowskie nad prezentacją siebie w życiu codziennym pozostają bardzo przydatne także w analizie platform cyfrowych. Na TikToku młodzi twórcy stale zarządzają wrażeniem: wybierają tło, ton wypowiedzi, emocjonalną temperaturę przekazu, stopień spontaniczności i zakres ujawnienia życia prywatnego. Nie jest to działanie wyjątkowe, lecz codzienna praktyka związana z publikacją kolejnych materiałów [12, 19].</p>



<p class="wp-block-paragraph">Młodzi twórcy nie przedstawiają siebie wyłącznie jako „osoby prywatnej”. Pokazują siebie w formie roli: ekspertki od pielęgnacji, zabawnego komentatora, ambitnej studentki, wrażliwego vlogera, początkującej przedsiębiorczyni, gamerki czy aktywistki. Każda z tych ról ma swój repertuar znaków: sposób kadrowania, słownictwo, tempo mówienia, rodzaj humoru, dobór muzyki i poziom bezpośredniości. Czy to ja jestem dramatem?</p>



<h2 class="wp-block-heading">Najczęstsze style obecności</h2>



<p class="wp-block-paragraph">W praktyce TikToka można wskazać kilka powracających stylów autoprezentacji. Pierwszy to <strong>styl <em>ekspercki</em></strong>, charakterystyczny dla twórców edukacyjnych, popularnonaukowych, językowych czy poradnikowych. Ich marka osobista budowana jest na kompetencji, ale kompetencja musi być komunikowana w sposób przystępny. Dlatego autorytet łączy się tu z bezpośredniością [31, 23].</p>



<p class="wp-block-paragraph">Drugi <strong>styl to <em>codziennościowy</em></strong>. Twórca pokazuje zwykłe aktywności — naukę, przygotowania do wyjścia, zakupy, porządkowanie pokoju, rytuały pielęgnacyjne — i przekształca je w serializowaną narrację. Taki styl nie opiera się na szczególnej wiedzy specjalistycznej, lecz na pozornej bliskości i rozpoznawalności doświadczenia.</p>



<p class="wp-block-paragraph">Trzeci <strong>styl można nazwać <em>aspiracyjnym</em></strong>. Młody twórca pokazuje pewną wersję życia, do której odbiorca ma chcieć się zbliżyć: zdyscyplinowaną, estetycznie uporządkowaną, produktywną, modną lub towarzysko atrakcyjną. Styl ten często łączy elementy lifestyle’u z miękkim marketingiem produktów. Jego skuteczność polega na tym, że odbiorca nie ma poczucia obcowania z tradycyjną reklamą, lecz z obserwacją czyjegoś stylu życia.</p>



<p class="wp-block-paragraph">Czwarty <strong>styl to <em>relacyjno-humorystyczny</em></strong>. Twórca buduje markę poprzez dystans, ironię, autokomentarz albo komentowanie zdarzeń z codzienności czy popkultury. W tym przypadku najważniejszym zasobem marki osobistej jest nie temat, lecz sposób interpretacji.</p>



<h2 class="wp-block-heading">Autentyczność jako styl, nie brak stylu</h2>



<p class="wp-block-paragraph">Jednym z najczęściej powracających terminów w analizie TikToka jest autentyczność. W potocznym rozumieniu autentyczny twórca to taki, który jest „sobą”. Z perspektywy naukowej sprawa jest bardziej złożona. Abidin pokazuje, że autentyczność w kulturach influencerskich nie jest prostym przeciwieństwem kreacji, ale raczej efektem odpowiednio zorganizowanej inscenizacji zwyczajności, dostępności i emocjonalnej szczerości [2].</p>



<p class="wp-block-paragraph">Na TikToku autentyczność przejawia się często w materiałach pozornie niedoskonałych: z szybkimi cięciami, mową potoczną, lekkim chaosem domowego otoczenia albo reakcją na komentarz nagraną „na szybko”. Jednak właśnie ten pozór bezpośredniości staje się częścią stylu. Nie chodzi więc o brak formy, lecz o formę, która ma być rozpoznana jako naturalna. Czy to ja jestem dramatem?</p>



<p class="wp-block-paragraph">W kontekście młodych twórców autentyczność pełni podwójną funkcję. Z jednej strony wzmacnia zaufanie odbiorców. Z drugiej strony umożliwia odróżnienie się od bardziej sformalizowanych i korporacyjnych form komunikacji. Badania nad para-społeczną perswazją pokazują, że samoujawnienie może wzmacniać postrzeganą autentyczność i sympatię, a tym samym zwiększać skuteczność przekazu [22].</p>



<h2 class="wp-block-heading">Mikrocelebryckość i praca nad widzialnością</h2>



<p class="wp-block-paragraph">TikTok nie tworzy jedynie influencerów. Tworzy także nowe formy mikrocelebryckości. Abidin opisuje tę sytuację jako pracę na rzecz widzialności, która obejmuje nie tylko publikowanie, ale też reagowanie na trendy, utrzymywanie obecności, zarządzanie komentarzami i wpisywanie się w gospodarkę uwagi [1]. Młody twórca funkcjonuje więc jednocześnie jako autor treści i menedżer własnej rozpoznawalności. Czy to ja jestem dramatem?</p>



<p class="wp-block-paragraph">Z tego powodu styl prezentacji na TikToku należy rozumieć jako element nowego marketingu. Nie chodzi o marketing w sensie tradycyjnej reklamy, lecz o marketing uwewnętrzniony, wpisany w samą formę obecności. Twórca promuje nie tylko produkt, ale także własną osobę, własny sposób bycia i własne przyszłe publikacje.</p>



<h1 class="wp-block-heading">Cechy twórców budujących markę osobistą na TikToku</h1>



<h2 class="wp-block-heading">Spójność przy zachowaniu pozoru spontaniczności</h2>



<p class="wp-block-paragraph">Jedną z najbardziej charakterystycznych cech młodych twórców jest <strong>umiejętność łączenia spójności z pozorem swobody. </strong>Dobre konto na TikToku nie musi wyglądać jak perfekcyjnie zaprojektowana witryna. Powinno jednak dawać odbiorcy poczucie rozpoznawalności. Twórca może publikować materiały z różnych obszarów, ale jeśli zachowuje podobny ton, podobną estetykę i podobny sposób prowadzenia narracji, odbiorcy odczytują konto jako spójne.</p>



<p class="wp-block-paragraph"><strong>Ta spójność ma charakter rytmiczny, a nie tylko wizualny. Polega na powracających formatach, powiedzeniach, typie żartu albo sposobie rozpoczynania materiału.</strong> </p>



<p class="wp-block-paragraph">W świecie krótkiego wideo właśnie te elementy przejmują część funkcji, którą w innych mediach pełniły długie opisy profilu czy bardziej rozbudowane deklaracje tożsamości. Czy to ja jestem dramatem?</p>



<h2 class="wp-block-heading">Kompetencja komunikacyjna zamiast wyłącznie kompetencji merytorycznej</h2>



<p class="wp-block-paragraph">W przypadku młodych twórców sukces nie wynika wyłącznie z wiedzy. <strong>Bardzo często ważniejsza okazuje się umiejętność takiego podania treści, by była atrakcyjna, skrótowa i natychmiast zrozumiała.</strong> Dotyczy to zwłaszcza twórców edukacyjnych. Ich przewaga nie polega wyłącznie na tym, że „wiedzą więcej”, lecz na tym, że potrafią przełożyć wiedzę na format zgodny z logiką TikToka.</p>



<p class="wp-block-paragraph">Dlatego współcześnie <strong>marka osobista eksperta jest zarazem marką komunikatora.</strong> Zjawisko to dobrze widać w obszarach nauki, zdrowia i edukacji, gdzie twórcy konkurują nie tylko rzetelnością, ale także zdolnością do przyciągania uwagi w pierwszych sekundach materiału [31, 30, 23].</p>



<h2 class="wp-block-heading">Zdolność do budowania relacji para-społecznej</h2>



<p class="wp-block-paragraph">Kolejną cechą jest <strong>tworzenie poczucia bliskości.</strong> TikTok sprzyja relacjom para-społecznym, ponieważ twórcy często mówią wprost do kamery, odpowiadają na komentarze i regularnie wracają z nowymi odcinkami swojej narracji. Widz może mieć wrażenie, że „zna” twórcę, choć relacja jest jednostronna[16].</p>



<p class="wp-block-paragraph">To poczucie bliskości ma konkretne konsekwencje. Zwiększa lojalność, wzmacnia komentarze, podnosi znaczenie rekomendacji i ułatwia włączanie treści sponsorowanych do codziennej narracji. Dla młodych twórców stanowi zatem ważny kapitał komunikacyjny. Czy to ja jestem dramatem?</p>



<h2 class="wp-block-heading">Elastyczność wobec algorytmu. Czy to ja jestem dramatem?</h2>



<p class="wp-block-paragraph">Skuteczni twórcy uczą się obserwować reakcje odbiorców i domyślać logiki algorytmicznej. Nie oznacza to pełnej wiedzy o działaniu systemu, lecz praktyczną umiejętność dostosowywania długości materiałów, sposobu montażu, tempa wejścia w temat czy strategii publikacji. Klug pokazał, że użytkownicy TikToka podejmują decyzje o usuwaniu i ukrywaniu filmów także w odpowiedzi na swoje wyobrażenia o tym, jak platforma ocenia treści [19]. Personal branding na TikToku obejmuje więc również kompetencję algorytmiczną. Czy to ja jestem dramatem?</p>



<h2 class="wp-block-heading">Umiejętność komercjalizacji bez gwałtownej utraty wiarygodności</h2>



<p class="wp-block-paragraph">W miarę rozwoju konta młody twórca staje przed pytaniem o zarabianie. Problem polega na tym, że każda próba monetyzacji może zaburzyć dotychczasową relację z odbiorcą. Dlatego jedną z najważniejszych cech dojrzałej marki osobistej jest umiejętność takiego włączania elementów komercyjnych, aby nie zniszczyć wcześniej wypracowanego zaufania. Najskuteczniejsze są zwykle te działania, które wynikają organicznie z profilu twórcy i są przez odbiorców odczytywane jako logiczne [13, 3]. Czy to ja jestem dramatem?</p>



<p class="wp-block-paragraph"><a href="https://mietwood.com/tiktok-shop-w-polsce">TikTok Shop w Polsce</a></p>



<p class="wp-block-paragraph"><a href="https://filmora.wondershare.com/pl/tiktok/tiktok-quotes.html" target="_blank" rel="noopener">https://filmora.wondershare.com/pl/tiktok/tiktok-quotes.html</a></p>



<h1 class="wp-block-heading">Nowy język twórczości, współpracy i widzialności</h1>



<h2 class="wp-block-heading">Od „użytkownika” do „twórcy”</h2>



<p class="wp-block-paragraph">Jednym z najbardziej interesujących zjawisk wokół TikToka jest przekształcenie słownictwa opisującego aktywność medialną. Dawniej mówiono częściej o użytkownikach, internautach albo osobach publikujących. Dziś dominuje słowo <strong><em>twórca</em>.</strong> Zmiana ta nie jest przypadkowa. Termin „twórca” sugeruje większą sprawczość, profesjonalizację i wyjątkowość niż neutralne „użytkownik”.</p>



<p class="wp-block-paragraph">W podobny sposób zmienia się język relacji z rynkiem. Zamiast mówić wyłącznie o reklamie, coraz częściej używa się sformułowań takich jak <strong><em>współpraca</em>, <em>partnerstwo</em>, <em>kampania creatorska</em>, <em>lokowanie w formacie lifestyle’owym</em>, <em>kod twórcy</em>, <em>link afiliacyjny</em>, <em>content sponsorowany</em>, <em>brief</em>, <em>live selling</em>, <em>UGC </em>czy <em>community</em>.</strong> Ten język łagodzi klasyczną ostrość terminów reklamowych i wpisuje komercję w rejestr codziennej kreatywności.</p>



<h2 class="wp-block-heading">Znaczenie nowych terminów</h2>



<p class="wp-block-paragraph">Zmiana słownictwa pełni kilka funkcji. Po pierwsze, nadaje pracy twórców większy prestiż symboliczny. Po drugie, przesuwa akcent z twardej sprzedaży na relacje i współtworzenie. Po trzecie, zaciera granicę między ekspresją a komercją. Jeżeli zamiast <strong>„kontraktu reklamowego” mówi się o „współpracy”,</strong> odbiorcy łatwiej przyjąć, że marka staje się naturalnym elementem codzienności twórcy.</p>



<p class="wp-block-paragraph">Dla studentów istotne jest, by dostrzec, że język ten nie jest neutralny. Tworzy on określone ramy interpretacyjne. Mówiąc o <strong>„community”, sugerujemy bliskość i uczestnictwo</strong>. Mówiąc o „briefie creatorskim”, wpisujemy twórcę w profesjonalny obieg produkcji treści. Mówiąc o „content creatorze”, odchodzimy od figury amatora na rzecz figury podmiotu kreatywno-biznesowego.</p>
<p>The post <a rel="nofollow" href="https://mietwood.com/czy-to-ja-jestem-dramatem">Czy to ja jestem dramatem?</a> appeared first on <a rel="nofollow" href="https://mietwood.com">Customer Experience Management</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
