A correct form of the query would be:
SELECT
t1.date,
(SELECT v1.type_id FROM tbl_values v1 where v1.type_id = 100 AND v1.date <= t1.date ORDER BY v1.date desc limit 1) as `type`,
(SELECT v1.`value` FROM tbl_values v1 where v1.type_id = 100 AND v1.date <= t1.date ORDER BY v1.date desc limit 1) as `value`
FROM tbl_calendar t1
having `type` IS NOT NULL
with result as:
2016-12-02 100 1.00
2016-12-03 100 1.00
2016-12-04 100 2.00
2016-12-05 100 2.00
2016-12-06 100 3.00
2016-12-07 100 3.00
2016-12-08 100 4.00
2016-12-09 100 4.00
2016-12-10 100 5.00
but, again look at your query and your expected result please.
What do you want to have in the result (type, date, value) with:
SELECT
c.date,
o1.value_id AS "o1.value_id",
o2.value_id AS "o2.value_id",
o1.type_id AS "o1.type_id",
o2.type_id AS "o2.type_id",
o1.date AS "o1.date",
o2.date AS "o2.date"