Spaces:
Build error
Build error
File size: 1,827 Bytes
c40c447 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
"""
Mapper para casos de uso de Backtesting.
Convierte entre API schemas (Pydantic) y DTOs de aplicación.
"""
from app.schemas.requests.backtest import BacktestRequest
from app.schemas.responses.backtest import BacktestResponse, BacktestMetrics
from app.application.dtos.backtest_dtos import (
BacktestInputDTO,
BacktestOutputDTO,
BacktestMetricsDTO
)
class BacktestMapper:
"""
Mapper para convertir entre API schemas y DTOs de backtest.
"""
@staticmethod
def to_input_dto(request: BacktestRequest) -> BacktestInputDTO:
"""
Convierte API request a DTO de entrada.
Args:
request: Request de la API
Returns:
BacktestInputDTO: DTO para el caso de uso
"""
return BacktestInputDTO(
values=request.series.values,
test_size=request.test_size,
quantile_levels=request.quantile_levels,
timestamps=request.series.timestamps,
freq=request.freq
)
@staticmethod
def from_output_dto(dto: BacktestOutputDTO) -> BacktestResponse:
"""
Convierte DTO de salida a API response.
Args:
dto: DTO del caso de uso
Returns:
BacktestResponse: Response para la API
"""
# Convertir métricas
metrics = BacktestMetrics(
mae=dto.metrics.mae,
mape=dto.metrics.mape,
rmse=dto.metrics.rmse,
mse=dto.metrics.mse
)
return BacktestResponse(
forecast_values=dto.forecast_values,
actual_values=dto.actual_values,
errors=dto.errors,
metrics=metrics,
timestamps=dto.timestamps,
quantiles=dto.quantiles
)
|