Faits :
A.
A.a. Le 17 février 2010, X._ SA (ci-après: la bailleresse) a convenu de céder à H.Z._ et F.Z._ (ci-après: les locataires) l'usage d'un appartement de cinq pièces au quatrième étage d'un immeuble situé dans la commune de
... (GE). Le contrat de bail a été conclu pour une durée initiale d'un an, du 1 er mars 2010 au 28 février 2011, avec clause de renouvellement tacite d'année en année.
Le loyer a été fixé à 18'894 fr. par an, soit 1'574 fr. 50 par mois, charges non comprises. Le bâtiment abritant l'appartement loué était classé jusqu'au 31 décembre 2011 dans la catégorie des habitations à loyers modérés (HLM) et soumis à la loi générale genevoise sur le logement et la protection des locataires (LGL; rs/GE I 4 05).
Ce même 17 février 2010, les parties ont signé l'avenant suivant:
"L'immeuble sort du régi[m]e HLM au 31 décembre 2011. D'entente entre les parties, il est donc précisé ce qui suit:
Dès le 1er mars 2012, le loyer passe à CHF 2'100.- + les charges, selon l'avis de majoration ci-joint. (...) "
L'avis officiel de majoration de loyer annexé à cet avenant énonce que le loyer annuel sera augmenté à 25'200 fr. dès le 1 er mars 2012. Il est motivé ainsi: "Fin du régime HLM. CO 269a, lettre a: Adaptation aux loyers usuels pratiqués dans le quartier, soit une hausse de CHF 525.50/mois".
Les locataires n'ont pas contesté cet avis dans le délai de trente jours imparti par l'<ref-law>.
A.b. Par courrier du 29 novembre 2011, les locataires ont sollicité une baisse de loyer de 474 fr. 50 par mois dès le 1 er mars 2012. Ils ont demandé qu'un calcul de rendement soit effectué.
Répondant par lettre du 6 décembre 2011, la bailleresse a refusé d'entrer en matière.
B.
B.a. Les locataires ont alors saisi l'autorité de conciliation le 23 décembre 2011, puis ont déposé une demande devant le Tribunal des baux et loyers du canton de Genève le 21 juin 2012. Ils ont conclu à ce que soit constatée la nullité de l'avis de majoration du 17 février 2010 et à ce que leur loyer soit fixé à 13'200 fr. par an dès le 1 er mars 2012.
Par ordonnance du 10 août 2012, le Tribunal a invité la bailleresse à produire les pièces nécessaires au calcul du rendement net de l'immeuble concerné; il a attiré son attention sur les conséquences d'un refus de produire ces pièces, à savoir l'indice de ce qu'elle cachait un rendement abusif.
Dans sa réponse du 28 octobre 2012, la bailleresse a conclu à l'irrecevabilité de la demande, subsidiairement à son rejet, et à ce que soit constatée l'entrée en force, au 1 er mars 2012, du loyer fixé selon l'avis de majoration du 17 février 2010.
B.b. Par jugement du 22 novembre 2013, le Tribunal des baux a constaté la nullité de l'avis de majoration. Il a fixé le loyer annuel à 16'656 fr. (charges non comprises) dès le 1 er mars 2012 et a rejeté toutes autres conclusions.
En substance, le Tribunal a jugé que la convention prévoyant une augmentation de loyer prédéterminée devait être qualifiée de bail à loyers échelonnés au sens de l'<ref-law>. La clause d'échelonnement était viciée à plus d'un titre; en particulier, le bail avait été conclu pour une durée inférieure à trois ans. L'avis de majoration du 17 février 2010 était donc nul, et les locataires en droit de solliciter une diminution de loyer dès le 1 er mars 2012. Ils pouvaient demander un calcul de rendement étant donné que l'immeuble sortait du contrôle cantonal des loyers. A l'issue de ce calcul, le loyer annuel admissible se révélait être de 16'656 fr.
B.c. La bailleresse a fait appel de cette décision. Par arrêt du 22 juin 2015, la Chambre des baux et loyers de la Cour de justice a annulé le jugement entrepris et, statuant à nouveau, a fixé le loyer annuel à 16'740 fr. dès le 1 er mars 2012, toutes autres conclusions étant rejetées. La Cour a confirmé l'analyse des premiers juges quant à la nullité de la clause d'échelonnement. Elle a en revanche admis un grief relatif aux charges d'exploitation et adapté en conséquence le calcul de rendement.
C.
La bailleresse saisit le Tribunal fédéral d'un recours en matière civile dans lequel elle requiert que l'avenant du 17 février 2010 soit déclaré valable et qu'il soit dit que le loyer annuel s'élève à 25'200 fr. dès le 1er mars 2012, respectivement que la requête en diminution de loyer soit déclarée irrecevable ou soit rejetée. Elle demande enfin que les locataires soient condamnés à lui verser "la totalité du moins-perçu de loyer (différence de loyer) " depuis le 1er mars 2012, dans un délai de trente jours dès l'entrée en force de l'arrêt rendu.
Les locataires intimés, qui procèdent sans avocat, concluent au rejet du recours. L'autorité précédente se réfère à son arrêt.

Considérant en droit :
1.
Les conditions de recevabilité du recours en matière civile sont réalisées sur le principe, en particulier celles afférentes au délai (<ref-law> en lien avec l'<ref-law>) et à l'exigence d'une valeur litigieuse minimale de 15'000 fr. (<ref-law>; cf. arrêt 4A_489/2010 du 6 janvier 2011 consid. 3).
2.
La première question à résoudre est celle de la validité de la clause contractuelle prévoyant une hausse de loyer dès le 1 er mars 2012. L'autorité précédente a répondu par la négative au motif que les parties avaient conclu un bail à loyers échelonnés ne satisfaisant pas à l'exigence légale d'une durée minimale de trois ans.
2.1.
2.1.1. Selon l'<ref-law> relatif aux "loyers échelonnés" (note marginale), les conventions prévoyant que le loyer sera majoré périodiquement d'un montant déterminé ne sont valables qu'à trois conditions: le bail doit être conclu pour une durée minimale de trois ans (let. a), le loyer ne doit pas être augmenté plus d'une fois par an (let. b) et le montant de l'augmentation doit être fixé en francs (let. c).
Les loyers échelonnés sont des loyers fixés d'avance pour toute la durée du bail, par paliers et par périodes. Ils sont intangibles, quelle que soit l'évolution des facteurs propres à justifier une augmentation ou une diminution du loyer initial (<ref-ruling> consid. 2b/aa p. 400). La clause d'échelonnement est le mode exclusif de fixation du loyer jusqu'à l'échéance du contrat. La jurisprudence réserve toutefois l'augmentation de loyer fondée sur des prestations supplémentaires du bailleur si les parties en ont convenu (<ref-ruling> consid. 3a p. 59).
La qualification de bail à loyers échelonnés s'applique déjà lorsqu'une seule majoration est prévue en cours de bail (<ref-ruling> consid. 3b p. 59; <ref-ruling> ibidem). Les parties peuvent même convenir que l'unique adaptation interviendra au moment où le bail est tacitement prolongé (arrêt 4A_689/2014 du 7 mai 2015 consid. 1.2), de telle sorte que si le bail n'est pas reconduit, le loyer n'aura jamais été augmenté.
2.1.2. En l'occurrence, les parties ont convenu à la conclusion du contrat d'une augmentation de loyer prédéterminée devant prendre effet après la fin du contrôle étatique des loyers. Il s'agit en soi d'un échelonnement du loyer. Il n'est pas nécessaire d'examiner dans quelle mesure la possibilité de modifier l'état locatif agréé et les loyers contrôlés (art. 42 LGL) pourrait faire obstacle à la qualification de loyers échelonnés, sachant que dans ce type de bail, l'échelonnement est le seul mode de fixation du loyer. Tout au plus relèvera-t-on que dans une cause soumise à une autre loi genevoise instituant un contrôle des loyers (LDTR; rs/GE L 5 20), le Tribunal fédéral a exclu d'interdire aux parties la conclusion d'un bail échelonné prévu par le droit fédéral, ou de leur imposer un contrat d'une durée limitée à celle du contrôle officiel de leur loyer (arrêt 1C_184/2013 du 8 janvier 2014 consid. 2.2). Quoi qu'il en soit, un autre motif s'oppose déjà à ce que la clause d'échelonnement déploie sa validité.
2.2.
2.2.1. La loi requiert que le bail à loyers échelonnés ait une durée minimale de trois ans (<ref-law>). Pour respecter cette exigence, il suffit que le bailleur soit lié pour trois ans au moins, le locataire pouvant se libérer avant terme (cf., par analogie, <ref-law> en lien avec l'<ref-law>; PATRICIA DIETSCHY, in Droit du bail à loyer, Bohnet/Montini éd., 2010, n° 5 ad <ref-law>; DAVID LACHAT, Le bail à loyer, 2008, p. 517 nbp 62; PETER HIGI, Zürcher Kommentar, 4e éd. 1998, n° 57 ad <ref-law>).
Selon la doctrine, le bail qui institue des loyers échelonnés sans respecter l'exigence d'une durée minimale de trois ans est en principe frappé de nullité partielle, limitée à la clause d'échelonnement (ROGER WEBER, in Basler Kommentar, 6e éd. 2015, n° 8 ad art. 269b et n° 5 ad <ref-law>; PETER HEINRICH, in Handkommentar zum Schweizer Privatrecht, 2e éd. 2012, n° 1 ad <ref-law>; DIETSCHY, op. cit., n°s 8 et 11 ad <ref-law>; HIGI, op. cit., n° 62 ad <ref-law>). Le juge peut toutefois compléter le contrat en fixant sa durée minimale à trois ans pour le bailleur si cela correspond à la volonté hypothétique des parties (SÉBASTIEN FETTER, La contestation du loyer initial, 2005, p. 23 n. 48; HIGI, op. cit., n° 91 ad <ref-law> et n° 63 ad <ref-law>). Il y a lieu de suivre cette analyse, conforme aux art. 20 et 269c CO. Le juge s'attachera donc à déterminer si l'élément important était la durée limitée du bail, ou si l'accent a été mis sur la volonté du bailleur d'adapter le loyer en cours de bail (LACHAT, op. cit., p. 517 ch. 3.2.2 et p. 509 ch. 2.2.3). Selon ROGER WEBER, lorsque la durée convenue n'est que de peu inférieure ("nur unwesentlich zu kurz") à la réglementation légale, le juge étendra cette durée à trois ans; dans les autres cas, le contrat sera maintenu sans la clause d'échelonnement (WEBER, op. cit., n° 5 ad <ref-law>; plus nuancée, DIETSCHY, op. cit., n° 11 i.f. ad <ref-law>).
2.2.2. L'arrêt attaqué retient que le contrat a été conclu pour un an, du 1er mars 2010 au 28 février 2011, avec clause de renouvellement tacite d'année en année. L'exigence légale d'une durée minimale de trois ans n'est donc pas satisfaite. La recourante plaide l'adaptation du contrat à la loi sur la base de la volonté hypothétique des parties.
La Cour de justice a exclu cette hypothèse au motif que la bailleresse elle-même, dans son mémoire d'appel, déclarait n'avoir jamais eu l'intention de conclure un bail échelonné. La bailleresse a même ajouté que "les parties n'[avaie]nt aucunement eu l'intention de s'engager pour une durée fixe de trois ans mais [avaie]nt souhaité maintenir l'opportunité légale de pouvoir se départir du contrat pour chaque échéance" (mémoire d'appel, p. 6 let. c).
Ces déclarations doivent être replacées dans leur contexte. La question de la volonté hypothétique des parties n'avait pas été évoquée par le Tribunal des baux, de sorte que la bailleresse - respectivement la régie qui la représentait - a pu ignorer la portée de sa ligne de défense, selon laquelle les parties auraient convenu d'une augmentation consensuelle de loyer et non d'un échelonnement. Il n'en demeure pas moins que ces affirmations font planer un doute quant à une volonté hypothétique de s'engager pour une plus longue durée, alors qu'on ne dispose d'aucun autre élément sur les circonstances entourant la conclusion du bail. La durée convenue (un an) était nettement inférieure aux trois ans légaux. En définitive, il n'était pas contraire au droit fédéral de considérer que la courte durée du contrat importait aussi pour la bailleresse. Faute de pouvoir adapter la durée du contrat, la clause d'échelonnement est nulle.
2.2.3. La recourante objecte encore que les locataires ne pouvaient plus à ce stade tardif remettre en cause la validité de la clause d'échelonnement.
La doctrine majoritaire est d'avis que la nullité de la clause d'échelonnement peut être constatée en tout temps, sous réserve de l'abus de droit (DIETSCHY, op. cit., n° 14 ad <ref-law>; avec des réserves temporelles, SILVIA EGGENSCHWILER SUPPAN, Folgen von ungültigen Staffel- und Indexmieten [...], in Jusletter du 5 nov. 2007 p. 3 n. 8 i.f. et 9; cf. aussi WEBER, op. cit., n° 8 ad <ref-law>; HEINRICH, op. cit., n° 1 ad <ref-law>; HIGI, op. cit., n° 92 s. ad <ref-law>).
Toutefois, une opinion dissidente citée par la recourante soutient que le locataire doit contester l'avis de hausse notifié par formule officielle si celui-ci repose sur une clause contractuelle contrevenant aux exigences légales sur la durée du contrat; à défaut, la majoration produirait ses effets nonobstant la violation du droit impératif. Deux arrêts du Tribunal fédéral sont invoqués à l'appui de cette thèse (Le droit suisse du bail à loyer, Commentaire SVIT, 2011, n° 8 s. ad <ref-law> et n° 6 ad <ref-law>).
En réalité, l'on cherche vainement dans ces arrêts la reconnaissance d'une obligation d'agir dans le délai de l'<ref-law> pour contester un bail contraire aux conditions légales de l'art. 269b ou 269c CO (arrêt 4C.72/1994 du 28 novembre 1994 consid. 2). Tout au plus faut-il concéder l'emploi d'une expression peu heureuse ("inhaltliche Nichtigkeit") à propos d'une augmentation de loyer qui excéderait par hypothèse les limites de l'art. 269a let. e CO (arrêt 4C.266/1996 du 5 mars 1997 consid. 3b i.f. et la critique de RAOUL FUTTERLIEB in MRA 1997 p. 106 i.f.-107).
En bref, il convient de se rallier au courant doctrinal majoritaire. Il n'y a pas de motif de s'écarter du principe général selon lequel la nullité peut être constatée en tout temps. L'abus de droit constitue un correctif suffisant.
Dans le cas concret, la bailleresse ne plaide pas que les locataires commettraient un abus de droit en dénonçant la nullité de la clause d'échelonnement. Cela suffit à clore toute discussion.
2.3. En définitive, les juges genevois n'ont pas enfreint le droit fédéral en considérant que la clause contractuelle d'augmentation du loyer était inapplicable. Il convient ainsi de passer à l'examen de la demande en diminution de loyer formulée par courrier du 29 novembre 2011.
3.
3.1. La bailleresse reproche aux juges genevois d'avoir violé l'<ref-law>, respectivement d'avoir versé dans l'arbitraire en admettant implicitement que la demande de baisse de loyer lui était parvenue le 30 novembre 2011, alors que les locataires n'avaient fourni ni la preuve de l'envoi de ladite demande le 29 novembre 2011, ni la preuve de sa réception le 30 novembre 2011. Or, si la demande a été reçue au-delà de cette date, la réduction requise ne saurait prendre effet le 1 er mars 2012.
3.2. Le locataire peut demander une diminution de loyer pour le prochain terme de résiliation (<ref-law>). Il doit respecter le délai de congé (<ref-ruling> consid. 4b p. 23).
D'après l'arrêt attaqué, le contrat prévoit un terme annuel de résiliation le dernier jour de février. Le délai de congé légal (trois mois) trouve application comme il n'apparaît pas que les parties ont convenu d'un délai plus long (art. 266a al. 1 et 266c CO).
Ainsi, pour pouvoir prendre effet le 1 er mars 2012, la demande de réduction devait parvenir à la bailleresse au plus tard le 30 novembre 2011. Il incombait aux locataires de rapporter la preuve de cette date de réception.
3.3. Dans leur demande du 21 juin 2012, les locataires ont allégué avoir sollicité une réduction de loyer "par courrier du 29 novembre 2011", lequel "a été adressé par téléfax ainsi que par lettre recommandée" (allégué 8); la bailleresse a répondu par lettre du 6 décembre 2011 en refusant d'y donner suite (allégué 9). A l'appui de ces allégués ont été produits les deux courriers en question.
La bailleresse s'est déterminée en ces termes sur l'allégué 8: "Pas contesté quant à l'écriture du courrier. Formellement contesté pour le surplus. La théorie de la réception s'appliquant dans ce cas de figure, les demandeurs devront produire le trace & track relatif à leur dit [sic!] courrier. (...) ". La bailleresse n'a "pas contesté" l'allégué 9.
Le Tribunal des baux s'est contenté de préciser que la clause d'échelonnement du loyer était nulle, de sorte que les locataires étaient fondés à demander une diminution de loyer pour le 1 er mars 2012.
En appel, la bailleresse a fait valoir que la demande de baisse avait été adressée "hors délai", les locataires n'ayant pas produit le document "trace & track" demandé. Les locataires ont alors fourni un "suivi des envois" émanant du site Internet de la Poste.
La Cour de justice n'a pas traité ce grief et ne s'est pas prononcée sur la recevabilité de la pièce, qui était annexée à la suite du mémoire des intimés. Dans l'état de fait, la Cour a retenu que "par courrier du 29 novembre 2011", les locataires avaient sollicité une baisse de loyer dès le 1 er mars 2012. A l'instar des premiers juges, elle a constaté la nullité de la clause d'échelonnement et a conclu que les locataires pouvaient demander une réduction de loyer pour la date précitée. La bailleresse ne dénonce aucune violation de son droit d'être entendue.
3.4. Il sied au préalable de préciser que la présente cause est un cas de protection contre les loyers abusifs au sens de l'art. 243 al. 2 let. c CPC et relève comme tel de la procédure simplifiée. En vertu de l'<ref-law>, le tribunal doit établir les faits d'office. Cette disposition institue la maxime inquisitoire sociale, qui tend à protéger la partie faible au contrat, à garantir l'égalité entre les parties au procès et à accélérer la procédure. Les parties doivent recueillir elles-mêmes les éléments du procès; il leur incombe de renseigner le juge sur les faits de la cause et lui indiquer les moyens de preuve propres à établir ceux-ci. De son côté, le juge doit les informer de leur devoir de coopérer à la constatation des faits et à l'administration des preuves; il doit les interroger pour s'assurer que leurs allégués de fait et leurs offres de preuves sont complets s'il a des motifs objectifs d'éprouver des doutes sur ce point. Lorsque les parties sont représentées par un avocat, le tribunal peut et doit faire preuve de retenue comme dans un procès soumis à la procédure ordinaire. Il n'appartient en effet pas au juge de fouiller le dossier pour tenter d'y trouver des moyens de preuve en faveur d'une partie (<ref-ruling> consid. 2.3.1 et 2.3.2).
En l'occurrence, les locataires étaient représentés par un collaborateur de l'ASLOCA titulaire du brevet d'avocat et la bailleresse par sa régie immobilière, qui dispose manifestement de bonnes connaissances juridiques.
3.5. La réception du courrier contenant la demande de réduction de loyer est en soi établie, la bailleresse en ayant expressément accusé réception dans sa lettre du 6 décembre 2011. En revanche, les locataires devaient prouver que ce courrier avait été reçu par la bailleresse le 30 novembre 2011, ou plus exactement qu'il était parvenu dans sa sphère d'influence à cette date (cf. <ref-ruling> consid. 5.1; <ref-ruling> consid. 3.1.2), puisque ce fait était contesté. La bailleresse a expressément requis la production du "suivi des envois" ("track and trace") permettant d'établir la date de réception du courrier.
En première instance, les locataires se sont contentés de produire le courrier contenant la demande de réduction, qui est daté du 29 novembre 2011 et précise qu'il sera acheminé par lettre recommandée et par télécopie. Une telle pièce n'est pas de nature à prouver que le courrier a été reçu le 30 novembre 2011. Il n'est pas établi que la date apposée sur ce courrier soit correcte, respectivement que le courrier ait été posté et télécopié à la date indiquée. La bailleresse a accusé "réception du courrier du 29 novembre 2011" par lettre datée du 6 décembre 2011, ce qui ne permet toujours pas de tirer des conclusions quant à la date de réception du pli litigieux.
Les locataires objectent que la pièce produite en appel devrait être prise en compte car la bailleresse ne s'est jamais plainte en première instance du caractère tardif de la demande en réduction de loyer.
Selon l'<ref-law>, les moyens de preuve nouveaux ne sont pris en compte que s'ils sont produits sans retard (let. a) et ne pouvaient être produits devant la première instance bien que la partie qui s'en prévaut ait fait preuve de la diligence requise (let. b). Cette règle s'applique aussi aux procédures simplifiées dans lesquelles le juge doit établir les faits d'office (<ref-ruling> consid. 2.2).
Les locataires étant assistés d'un collaborateur de l'ASLOCA titulaire du brevet d'avocat, ils étaient à même de comprendre que la bailleresse contestait la date de réception du courrier, puisqu'elle demandait expressément la production d'un accusé de réception, qui pouvait être remis jusqu'aux délibérations (cf. <ref-law>). Peu importe que la bailleresse ne se soit pas prévalue des conséquences juridiques d'une demande de diminuer le loyer ne respectant pas le délai de congé; elle a en effet clairement contesté le fait topique, et l'on pouvait attendre d'un avocat spécialisé en droit du bail qu'il lise les déterminations de la partie adverse, même dans une procédure régie par la maxime inquisitoire sociale.
Dans ces circonstances, on ne saurait considérer que les locataires ont fait preuve de la diligence requise au sens de l'<ref-law>. La pièce produite en appel est donc irrecevable.
3.6.
3.6.1. Il n'est ainsi pas prouvé que la demande en réduction de loyer ait été reçue le 30 novembre 2011. Partant, elle ne saurait prendre effet le 1er mars 2012 mais seulement, comme le soutiennent bon nombre d'auteurs, après le prochain terme pertinent, par analogie avec l'<ref-law> applicable au congé (DIETSCHY, op. cit., n° 20 ad <ref-law>; LACHAT, op. cit., p. 415; HIGI, op. cit., n° 97 ad <ref-law>; concernant une hausse de loyer, cf. <ref-ruling> consid. 3).
La recourante plaide que les effets de la demande de réduction devraient être repoussés au 1er juin 2012. Elle se fonde sur le terme légal de l'<ref-law>, alors que les parties ont convenu d'un autre terme (cf. <ref-law>), comme le rappelle la recourante elle-même en d'autres passages de son mémoire, où elle souligne que le contrat a été conclu pour un an, avec renouvellement possible d'année en année. Le prochain terme pertinent est le 28 février 2013, la baisse requise pouvant donc prendre effet dès le 1er mars 2013.
3.6.2. Un tel report peut avoir une incidence sur le calcul de rendement, qui doit être effectué en date du dernier jour où le locataire devait poster sa demande en réduction de loyer pour qu'elle parvienne encore en temps utile au bailleur (<ref-ruling> consid. 3; <ref-ruling> consid. 4b).
En l'occurrence, le calcul doit être effectué à fin novembre 2012, sans qu'il soit nécessaire de déterminer la date précise d'après la jurisprudence précitée. A cette époque, le taux hypothécaire de référence était de 2,25% et la variation de l'ISPC de 1,97% (mai 2007: 157 points; octobre 2012: 160.1; base: décembre 1982, conformément aux décisions cantonales). Il s'agit là de faits notoires.
4.
Devant la cour de céans, la bailleresse ne conteste pas le droit des locataires à se prévaloir de la méthode absolue, respectivement d'exiger le calcul du rendement net de l'appartement loué. En particulier, elle ne tire pas argument du fait que le loyer issu de ce calcul s'appliquera non pas après le premier terme de congé consécutif à la sortie du contrôle étatique des loyers (soit le 1 er mars 2012), mais après le deuxième terme seulement (1 er mars 2013; supra consid. 3.6.1). Le Tribunal fédéral n'a pas à traiter d'office une question qui ne fait l'objet d'aucun grief dûment motivé (<ref-law>; <ref-ruling> consid. 2), de sorte que le recours au calcul de rendement est acquis.
C'est le lieu de passer à l'examen des griefs relatifs à la mise en oeuvre du calcul de rendement.
5.
5.1. La bailleresse soulève trois griefs concernant la prise en compte des charges d'entretien et d'exploitation. Accessoirement, elle reproche aux juges d'appel d'avoir omis de détailler le calcul de rendement et d'avoir ainsi enfreint leur devoir de motivation.
Ce dernier moyen, qui ne dit au demeurant pas quels aspects du calcul échappe à la compréhension de la recourante, est infondé. La Cour de justice n'avait pas à justifier la totalité du calcul de rendement dès lors que l'appel portait uniquement sur certains postes relatifs aux charges; les éléments non contestés du calcul de rendement étaient suffisamment justifiés dans le jugement de première instance.
5.2. Sur le fond, la bailleresse soulève un premier moyen à l'égard du poste "Copropriété/Autres régies" figurant dans les comptes d'immeuble produits.
5.2.1. Le Tribunal des baux a refusé d'intégrer ce poste de charges dans le calcul de rendement au motif que l'on ignorait à quoi il se rapportait. La Cour de justice a précisé que ledit tribunal avait imparti un délai à la bailleresse pour qu'elle produise le détail de ce poste. L'intéressée n'avait pas fourni d'éléments permettant de comprendre à quoi correspondaient les montants figurant sous ce poste. Elle s'était bornée à contester les allégations des locataires selon lesquelles ces frais concernaient vraisemblablement d'autres parcelles dépendant de celle sur laquelle était érigé le bâtiment locatif. En appel, elle avait contredit ses allégations de première instance en expliquant qu'il s'agissait d'une participation aux charges communes concernant divers immeubles situés dans le même chemin; le poste litigieux concernait pour l'essentiel le salaire du concierge commun. La Cour de justice a jugé qu'il s'agissait de faits nouveaux irrecevables en raison de l'<ref-law>.
5.2.2. La bailleresse dénonce un établissement arbitraire des faits et une violation de l'<ref-law>. Elle affirme que le détail du poste litigieux figurait bel et bien dans une "liste des écritures" annexée aux comptes de gestion.
La consultation de cette liste révèle que le poste n° 468F "comptes autres régies" est composé de rubriques intitulées "provisions charges", comme le souligne la bailleresse elle-même. L'on ne peut en tirer aucune information particulière. Pour le surplus, la cour cantonale était fondée à retenir que la bailleresse n'avait pas justifié en temps utile le détail du poste litigieux; au demeurant, il n'a pas même été démontré qu'il concernait bel et bien le salaire d'un concierge commun.
5.3. Un deuxième grief vise des postes intitulés "Autres honoraires" et "Frais de gestion/Divers/TVA".
5.3.1. Le Tribunal des baux a écarté ces postes parce qu'ils contenaient sans distinction des frais de publicité, frais de gérance non explicités et frais de contentieux. En appel, la bailleresse a plaidé que la TVA facturée par la régie immobilière sur ses honoraires de gérance devait aussi être prise en compte comme charge. La Cour de justice lui a donné raison, précisant toutefois que cette taxe serait prise en compte uniquement lorsqu'elle se rapportait à des honoraires de gérance eux-mêmes admis.
5.3.2. La bailleresse plaide que les autres frais, liés à l'entretien de l'immeuble et dont le détail se trouvait dans les pièces 7 à 9 soumises au Tribunal des baux, auraient dû être inclus dans les charges; si réellement ils nécessitaient des précisions, la Cour de justice aurait dû l'interpeller, conformément à la maxime inquisitoire sociale.
La bailleresse ne s'attache pas à démontrer, références précises à l'appui, que les pièces produites contenaient des renseignements suffisants pour comprendre le détail des postes. Qui plus est, elle s'est contentée en appel de critiquer le refus de prendre en compte la TVA facturée pour les frais de gérance, sans remettre en cause l'affirmation selon laquelle les postes contenaient sans distinction des frais de gérance non explicités, frais de contentieux et frais de publicité. Dans ce contexte, et eu égard à l'obligation de motiver incombant à la partie appelante (<ref-law>; <ref-ruling> consid. 4.3.1 p. 375; arrêt 4A_258/2015 du 21 octobre 2015 consid. 2.4.1), la Cour de justice était fondée à ne traiter que du grief relatif à la TVA.
5.4. Dans un troisième moyen, la bailleresse reproche aux juges genevois d'avoir contrevenu à la jurisprudence de la cour de céans en ne prenant pas en compte la totalité des dépenses engagées en 2009, 2010 et 2011 pour des travaux d'entretien extraordinaire. A supposer que ces dépenses doivent être amorties sur plusieurs années, il faudrait alors ajouter un intérêt pour le capital non amorti.
5.4.1. La jurisprudence prescrit de procéder à une moyenne des charges de l'immeuble sur trois à cinq ans. Les frais d'entretien sont en principe inclus dans les charges dès que les travaux ont été effectués et payés par le bailleur. Toutefois, les frais d'entretien extraordinaire doivent être répartis sur plusieurs exercices, en fonction de la durée de vie des installations concernées. La quote-part correspondante est intégrée chaque année dans les charges jusqu'à amortissement complet (<ref-ruling> consid. 6.5 et 6.6 et les références citées).
5.4.2. La bailleresse ne conteste pas que les travaux accomplis relèvent de l'entretien extraordinaire. Elle plaide toutefois qu'ils devraient être intégrés à 100% dans les charges du moment qu'ils ont été payés au cours des trois années prises en compte pour établir la moyenne des charges. Tel n'est pas le sens de la jurisprudence, qui tend précisément à éviter que les charges soient faussées par des dépenses extraordinaires engagées au cours des exercices comptables pris en compte (cf. <ref-ruling> consid. 6.5 p. 255); c'est bien pour ce motif qu'elle prescrit de répartir les frais d'entretien extraordinaire sur plusieurs exercices en fonction de la durée de vie des installations. Le grief est dès lors infondé. Pour le surplus, la bailleresse ne conteste ni le fait de retenir une durée de vie moyenne, ni la période d'amortissement retenue (10 ans). Ces éléments sont dès lors acquis.
5.4.3. Quant au grief portant sur l'omission d'appliquer un taux d'intérêt sur le capital investi non encore amorti, il paraît prima facie bien fondé au regard de la jurisprudence (cf. <ref-ruling> consid. 6.5 et 6.6 et <ref-ruling> consid. 3.5).
Quoi qu'il en soit, il faut avoir égard au fait que le calcul de rendement doit être effectué à fin novembre 2012 (supra consid. 3.6.2), avec un taux d'intérêt inférieur à celui retenu par la cour cantonale (2,25% au lieu de 2,5%) et une variation moindre de l'ISPC (+ 1,97% au lieu de + 2,17%). En tenant compte de ces nouveaux paramètres et du grief ci-dessus, le calcul serait modifié de la façon suivante:
La moyenne des charges se fonde sur les années 2009 à 2011. Selon les deux décisions cantonales, des travaux extraordinaires de 34'000 fr. (24'000 + 10'000) ont été réalisés en 2009. En 2010, de tels travaux ont été accomplis à concurrence de 24'358 fr. (12'076 + 12'282). En appliquant, conformément à la jurisprudence, la moitié du taux de rendement admissible pour les fonds propres (2,25% + 0,5%= 2,75% : 2 = 1,375%) sur le capital investi dans ces travaux extraordinaires, l'on obtient les suppléments suivants (cf. <ref-ruling> consid. 3.5) :
34'000 x 1,375% = 467.50 sur 3 ans = 1'402.50
24'358 x 1,375% = 335.00 sur 2 ans = 670.00
2'072.50
Ce montant augmente le total des charges 2009, 2010 et 2011, qui s'élevait selon l'arrêt attaqué à 137'251 fr. 85. L'on obtient finalement des charges moyennes annuelles de 46'441 fr. 40 ([137'251.85 + 2'072.50 = 139'324.35] : 3).
Par ailleurs, le rendement admissible des fonds propres (932'390 fr.), fondé sur une variation de l'ISPC de 1,97 % et un taux de rendement de 2,75%, est de 26'146 fr. (932'390 fr. + 1,97 % = 950'758 fr. x 2,75% = 26'146). Les autres postes demeurant inchangés (intérêts annuels de 89'991 fr. et impôt immobilier de 4'188 fr.), l'on aboutit à un état locatif admissible de 166'766 fr. 40 (26'146 + 89'991 + 4'188 + 46'441.40). En reprenant pour le surplus la clé de répartition appliquée par la cour cantonale, le loyer annuel admissible s'élève à 16'572 fr. (79,5 % de 166'766, divisé par 40, multiplié par 5), alors que la Cour de justice a retenu un loyer annuel de 16'740 fr. qui est plus favorable à la bailleresse recourante.
6.
En définitive, le recours de la bailleresse doit être très partiellement admis en ce sens que le loyer annuel est fixé à 16'740 fr. dès le 1er mars 2013, en lieu et place du 1er mars 2012.
L'arrêt attaqué sera donc réformé en ce sens. Aucuns frais ni dépens n'ont été mis à la charge des parties devant les instances cantonales, de sorte qu'il n'y a pas matière à renvoyer la cause à l'autorité précédente.
Devant le Tribunal fédéral, la recourante obtient très partiellement gain de cause sur la question du point de départ de la réduction de loyer. En conséquence, elle supportera 4/5èmes des frais judiciaires arrêtés à 4'500 fr., le solde étant mis à la charge des locataires intimés, solidairement entre eux (art. 66 al. 1 et 5 LTF).
Les intimés ont procédé sans avocat, de sorte qu'ils ne peuvent prétendre à des dépens (<ref-law> a contrario; <ref-ruling> consid. 4 p. 136). Quant à la recourante, elle a droit à des dépens réduits pour ses frais d'avocat (1/5ème de 5'500 fr., soit 1'100 fr.).

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est partiellement admis.
2.
L'arrêt attaqué est réformé en ce sens que le loyer annuel de H.Z._ et F.Z._ est fixé à 16'740 fr. dès le 1er mars 2013. L'arrêt est confirmé pour le surplus.
3.
Les frais judiciaires, arrêtés à 4'500 fr., sont mis à la charge de la recourante par 3'600 fr., le solde de 900 fr. étant supporté par les intimés, solidairement entre eux.
4.
Les intimés sont condamnés solidairement à verser à la recourante une indemnité de 1'100 fr. à titre de dépens réduits.
5.
Le présent arrêt est communiqué aux parties et à la Chambre des baux et loyers de la Cour de justice du canton de Genève.
Lausanne, le 22 août 2016
Au nom de la Ire Cour de droit civil
du Tribunal fédéral suisse
La Présidente: Kiss
La Greffière: Monti