You can define a binding variable, and your code defines it correctly. But you do not have to register a binding variable. You can use $sys.variables.variablename directly in your Template source code.
I have tried it in our environment. It doesn’t work for a variable defined for the preview site of preview context. I have attached a screen shot of the variable definition. On the template, I use $sys.variables.var_test (var_test is the variable name). When previewing it, the variable is not evaluated.
Here is the URL in preview:
I suspicious if this is caused by the preview site whose site id is equal to 0. I can not locate the site definition for it inside Rhythmyx or backend database table (RXSITES).