En primer lugar la forma de establecer el tamaño de un arreglo dinámicamente es así:
int *valor = (int*)malloc(tam * sizeof(int));
En segundo lugar: el primer for debería iterar según la cantidad de números que elegimos ingresar:
for(i=0;i<tam;i++){
En tercer lugar: el segundo for debería empezar en "tam-1", porque como el indice 0 cuenta, estaríamos sumando un valor que no utilizamos.
for(i=tam-1;i>=0;i--){
Y por ultimo la primera variable que le pasas al ultimo printf, deberia ser "i+1"
printf("Tu valor %d es:%d\n",i+1,valor[i]);
El codigo completo corregido seria así:
#include<stdio.h>
#include<stdlib.h>
int main (){
int i=0,tam=0;
printf("¿Cuantos datos ingresaras?\n");
scanf("%d",&tam);
if(tam>1){
int *valor = (int*)malloc(tam * sizeof(int));
for(i=0;i<tam;i++){
printf("ingresa el valor %d\n",i+1);
scanf("%d",&valor[i]);
system("clear");
}
for(i=tam-1;i>=0;i--){
printf("Tu valor %d es:%d\n",i+1,valor[i]);
}
}
return 0;}