Adding page subdirectory dynamically, as like buddypress does

This should do what you want:

add_action('generate_rewrite_rules', 'wpse128082_add_rewrite_rule');
function wpse128082_add_rewrite_rule($wp_rewrite) {
    $new_rules = array(
        '^charts/(.*)' => 'index.php?pagename=charts&something='.$wp_rewrite->preg_index(1),
    );
    $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}

add_filter('query_vars', 'wpse128082_add_query_var');
function wpse128082_add_query_var($query_vars) {
    $query_vars[] = 'something';
    return $query_vars;
}

On your Charts page, you can access the new query var with get_query_var('something').