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