This is T-SQL syntax, but it should be usable, or easily modified, for Oracle.
/* SETUP */
CREATE TABLE contract ( id int, name varchar(10), start date, end date, amount decimal(10,2) );
INSERT INTO contract (id, name, start, end, amount)
VALUES
(1,'Foo','1/1/2017','2/1/2017',10000.00)
, (2,'Bar','4/1/2017','6/1/2017',20000.00)
;
CREATE TABLE contract_evaluation ( id int, contract_id int, percentage decimal(5,2), date date ) ;
INSERT INTO contract_evaluation (id, contract_id, percentage, date)
VALUES
(1,1,2.0,'1/1/2016')
, (2,2,5.0,'1/1/2017')
, (3,2,2.5,'4/2/2017')
, (4,1,3.5,'1/2/2017')
;
/* QUERY TIME */
; WITH cte_ce AS (
SELECT ce1.*
FROM (
SELECT contract_id, percentage
, ROW_NUMBER() OVER (PARTITION BY contract_id ORDER BY date DESC) AS rn
FROM contract_evaluation
) ce1
WHERE ce1.rn = 1
)
SELECT c.name, c.start, c.end, c.amount, cte_ce.percentage, ( c.amount + (c.amount*(COALESCE(cte_ce.percentage,0)/100)) ) AS newAmount
FROM contract c
LEFT OUTER JOIN cte_ce ON c.id = cte_ce.contract_id