"""Authored constant quantile baseline on a declared quarter-unit grid."""
from fractions import Fraction as F
import json
Y=[F(1),F(2),F(4),F(8)]
def pinball(y,p,q):
    if not 0<q<1:raise ValueError('q strictly between zero and one')
    e=y-p
    return q*e if e>=0 else (q-1)*e
def mean_loss(p,q):return sum((pinball(y,p,q) for y in Y),F(0))/len(Y)
def demo():
    grid=[F(i,4) for i in range(41)];out=[]
    for q in [F(1,2),F(4,5)]:
        losses=[mean_loss(p,q) for p in grid];best=min(losses);minima=[p for p,l in zip(grid,losses) if l==best]
        out.append({'q':str(q),'minimum_grid_mean_loss':str(best),'minimizing_grid_predictions':[str(x) for x in minima],'leftmost_grid_choice':str(minima[0])})
    assert out[0]['minimizing_grid_predictions']==[str(F(i,4)) for i in range(8,17)]
    assert out[1]['minimizing_grid_predictions']==['8']
    assert pinball(F(4),F(2),F(4,5))==F(8,5) and pinball(F(4),F(6),F(4,5))==F(2,5)
    for y in Y:
        for p in grid:assert pinball(y,p,F(1,2))==abs(y-p)/2
    return {'authored_observed_minutes':[str(y) for y in Y],'candidate_predictions':'0..10 inclusive in steps of 1/4','grid_candidates':41,'constant_baselines':out,'underestimate_y4_pred2_q08':'8/5','overestimate_y4_pred6_q08':'2/5','half_absolute_loss_checks':164,'conditional_regression_fitted':False,'coverage_guarantee':False}
if __name__=='__main__':print(json.dumps(demo(),ensure_ascii=False,indent=2))
