diff --git a/src/PolyTrader.Core/Modularity/IPolyTraderModule.cs b/src/PolyTrader.Core/Modularity/IPolyTraderModule.cs
new file mode 100644
index 0000000..328a158
--- /dev/null
+++ b/src/PolyTrader.Core/Modularity/IPolyTraderModule.cs
@@ -0,0 +1,40 @@
+using System.Threading;
+using System.Threading.Tasks;
+using Microsoft.Extensions.Configuration;
+using Microsoft.Extensions.DependencyInjection;
+
+namespace PolyTrader.Core.Modularity
+{
+ ///
+ /// Vertrag für ein PolyTrader-Modul. Module referenzieren nur den Core, niemals
+ /// einander. Ein Modul kapselt einen eigenständigen Funktionsbereich (z.B. Copytrading)
+ /// mit eigenen Services, Jobs, DB-Objekten und – ab Phase 5 – eigenen UI-Tabs und
+ /// Settings-Sektionen.
+ ///
+ /// Hinweis: Der UI-Beitrag (RegisterUi/IModuleUiHost) wird in Phase 5 ergänzt, sobald
+ /// die konkrete UI-Integration (Tabs + Settings-Sektion) feststeht. Bis dahin deckt der
+ /// Contract Lebenszyklus und Service-Registrierung ab.
+ ///
+ public interface IPolyTraderModule
+ {
+ /// Eindeutiger Anzeigename des Moduls, z.B. "CopyTrading".
+ string Name { get; }
+
+ ///
+ /// Namespace-Präfix für die DB-Objekte des Moduls (z.B. "ct_"), damit sich Module
+ /// nicht in die Quere kommen.
+ ///
+ string DbPrefix { get; }
+
+ ///
+ /// Registriert die Services/Jobs des Moduls im DI-Container. Wird beim App-Start
+ /// aufgerufen, bevor der Host gebaut wird.
+ ///
+ void RegisterServices(IServiceCollection services, IConfiguration configuration);
+
+ /// Wird nach der Core-Hydration gestartet (kein Anlaufen gegen leeren State).
+ Task StartAsync(CancellationToken cancellationToken);
+
+ Task StopAsync(CancellationToken cancellationToken);
+ }
+}
diff --git a/src/PolyTrader.Core/PolyTrader.Core.csproj b/src/PolyTrader.Core/PolyTrader.Core.csproj
index f6f82c4..52db334 100644
--- a/src/PolyTrader.Core/PolyTrader.Core.csproj
+++ b/src/PolyTrader.Core/PolyTrader.Core.csproj
@@ -9,6 +9,7 @@
+