ADVERTISEMENT

Speculative historical fiction reads to enjoy

Published Jul 3, 2025 12:45 pm
Here are three novels that take historical figures and events, or specific folk legends, and weave them into gripping tales of fiction. With some, we might even wish that these stories were what really happened.
'The Amalfi Curse' by Sarah Penner  
If Sarah Penner is a familiar name, it’s because she’s the author of The Lost Apothecary and The London Séance Society. It may come as a surprise to learn that she’s American-born and raised, as her first two novels were set in historical Europe. In her latest, she shifts to the fabled Amalfi Coast of Italy, opening the tale in the village of Positano in 1821. We are introduced to a coven of sea witches who practice the magic of stregheria, led by Mari DeLuca.
We’re then brought to present-day Positano, where Haven Ambrose, a nautical archaeologist from Florida, is leading a team of five divers exploring sunken shipwrecks for their Project Relic. Haven has her own private agenda: her late father had reportedly spotted a trove of gemstones during his final dive in the area. This dual timeline may echo the structure Penner used in The Lost Apothecary, but it doesn’t diminish our interest in immersing ourselves in the story.
As for Mari, she’s betrothed to Corso—a man she doesn’t love—a merchant from Rome who promises to rescue the dwindling DeLuca fortune. Meanwhile, there’s an American sailor, Holmes, whom she truly loves. But Holmes works for the Mazza Brothers, who wield considerable power in the region, using their legitimate shipping business as a front for shady dealings.
When maelstroms and misfortunes begin to unfold upon Haven’s arrival, it seems she has awakened a centuries-old tale of sorcery centered on stregheria—a magical ability to harness the ocean and its untamed power. Revelation after revelation hits hard and fast as the novel races toward its conclusion, leaving us happily ensnared and eager to discover what happens next.
Sarah Penner proved herself more than adept with her previous two novels, and I’d venture to say this one could very well be her best yet.
'The Director' by Daniel Kehlmann 
The author of Measuring the World and Tyll, Daniel Kehlmann is regarded as one of the finest German writers of his generation, and in possession of an uncanny ability to bring historical fiction to vivid life. In this latest work, he chronicles the life of Austrian film director G.W. Pabst. Celebrated in the 1920s and 1930s, Pabst is credited with discovering Greta Garbo and Louise Brooks. He moved with his family to Hollywood but was disillusioned by how he was treated there and made to direct films that he felt were beneath him. In order to visit his ailing mother, he brings the family back with him to Austria, now Ostmark, well aware of how Hitler and Nazi Germany are on the rise. War is declared, and Pabst is trapped, unable to leave Germany, and he’s branded a Jew lover and a Communist. But thanks to an acquaintance he made in Hollywood, a German national, an unholy arrangement materializes.
Goebbels is aware of Pabst’s stature in the film industry and sees it as a plus for the Reich to treat him as a returning hero—someone ready to continue directing films in the new Germany. All the while, Pabst’s wife, Trude, is acutely aware they are living a lie; that if not for unfortunate circumstances, they would be happier anywhere else in the world but Nazi Germany. The novel becomes a study of how illusions on the silver screen mirror the real-life illusions they cling to at home. Even their son, in a bid to gain acceptance at school, has thrown himself into being a member of the Hitler Youth.
Told through the points of view of Pabst, his wife, and others who entered his life, we are given a meditation on art and power, on beauty and barbarism—on how two diametrically opposed forces can lie side by side and coexist for a time. Ultimately, it is a reminder that history’s narrative belongs to the victor.*
'Murder Most Foul by Guy Jenkin '
A celebrated screenwriter, director, and producer with multiple BAFTAs and Emmys to his name, Guy Jenkin presents his debut novel and what a scintillating read it is. Mixing historical facts with conjecture and vividly drawn characters, Guy takes us back to Elizabethan England in 1593. Thcdx-marker>e story begins on the day that playwright and toast of London, Kit Marlowe, is murdered under mysterious circumstances.
Kit's good friend, Will Shakespeare, had been with him earlier that evening. At the time, with only six plays to his name, Will was savagely roasted by Kit for being an underachiever. As a rival playwright, suspicion quickly falls on Will. With the help of Kit’s sister, Ann—who once shared a brief romance with him—Will embarks on a mission to clear his name.
The sense of time and place is deftly rendered, capturing an England where Elizabeth I’s power was beginning to wane and plague loomed large. While some may question the historical accuracy of the events, Guy never claims this is the truth. Instead, he playfully suggests. Who’s to say it didn’t happen this way? After all, no one alive today was there to confirm or deny it.
What unfolds is a tale both dark and witty, populated by compelling characters, historical or otherwise. As Will and Ann navigate treachery, corruption, and deceit in their quest to uncover the truth about Kit's death, we’re immersed in a world where the powerful rule with no moral compass. And quietly, we root for Will and Ann to somehow emerge as victors.
ADVERTISEMENT
.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1561_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1562_widget.title }}

.most-popular .layout-ratio{ padding-bottom: 79.13%; } @media (min-width: 768px) and (max-width: 1024px) { .widget-title { font-size: 15px !important; } }

{{ articles_filter_1563_widget.title }}

{{ articles_filter_1564_widget.title }}

.mb-article-details { position: relative; } .mb-article-details .article-body-preview, .mb-article-details .article-body-summary{ font-size: 17px; line-height: 30px; font-family: "Libre Caslon Text", serif; color: #000; } .mb-article-details .article-body-preview iframe , .mb-article-details .article-body-summary iframe{ width: 100%; margin: auto; } .read-more-background { background: linear-gradient(180deg, color(display-p3 1.000 1.000 1.000 / 0) 13.75%, color(display-p3 1.000 1.000 1.000 / 0.8) 30.79%, color(display-p3 1.000 1.000 1.000) 72.5%); position: absolute; height: 200px; width: 100%; bottom: 0; display: flex; justify-content: center; align-items: center; padding: 0; } .read-more-background a{ color: #000; } .read-more-btn { padding: 17px 45px; font-family: Inter; font-weight: 700; font-size: 18px; line-height: 16px; text-align: center; vertical-align: middle; border: 1px solid black; background-color: white; } .hidden { display: none; }
function initializeAllSwipers() { // Get all hidden inputs with cms_article_id document.querySelectorAll('[id^="cms_article_id_"]').forEach(function (input) { const cmsArticleId = input.value; const articleSelector = '#article-' + cmsArticleId + ' .body_images'; const swiperElement = document.querySelector(articleSelector); if (swiperElement && !swiperElement.classList.contains('swiper-initialized')) { new Swiper(articleSelector, { loop: true, pagination: false, navigation: { nextEl: '#article-' + cmsArticleId + ' .swiper-button-next', prevEl: '#article-' + cmsArticleId + ' .swiper-button-prev', }, }); } }); } setTimeout(initializeAllSwipers, 3000); const intersectionObserver = new IntersectionObserver( (entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { const newUrl = entry.target.getAttribute("data-url"); if (newUrl) { history.pushState(null, null, newUrl); let article = entry.target; // Extract metadata const author = article.querySelector('.author-section').textContent.replace('By', '').trim(); const section = article.querySelector('.section-info ').textContent.replace(' ', ' '); const title = article.querySelector('.article-title h1').textContent; // Parse URL for Chartbeat path format const parsedUrl = new URL(newUrl, window.location.origin); const cleanUrl = parsedUrl.host + parsedUrl.pathname; // Update Chartbeat configuration if (typeof window._sf_async_config !== 'undefined') { window._sf_async_config.path = cleanUrl; window._sf_async_config.sections = section; window._sf_async_config.authors = author; } // Track virtual page view with Chartbeat if (typeof pSUPERFLY !== 'undefined' && typeof pSUPERFLY.virtualPage === 'function') { try { pSUPERFLY.virtualPage({ path: cleanUrl, title: title, sections: section, authors: author }); } catch (error) { console.error('ping error', error); } } // Optional: Update document title if (title && title !== document.title) { document.title = title; } } } }); }, { threshold: 0.1 } ); function showArticleBody(button) { const article = button.closest("article"); const summary = article.querySelector(".article-body-summary"); const body = article.querySelector(".article-body-preview"); const readMoreSection = article.querySelector(".read-more-background"); // Hide summary and read-more section summary.style.display = "none"; readMoreSection.style.display = "none"; // Show the full article body body.classList.remove("hidden"); } document.addEventListener("DOMContentLoaded", () => { let loadCount = 0; // Track how many times articles are loaded const offset = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; // Offset values const currentUrl = window.location.pathname.substring(1); let isLoading = false; // Prevent multiple calls if (!currentUrl) { console.log("Current URL is invalid."); return; } const sentinel = document.getElementById("load-more-sentinel"); if (!sentinel) { console.log("Sentinel element not found."); return; } function isSentinelVisible() { const rect = sentinel.getBoundingClientRect(); return ( rect.top < window.innerHeight && rect.bottom >= 0 ); } function onScroll() { if (isLoading) return; if (isSentinelVisible()) { if (loadCount >= offset.length) { console.log("Maximum load attempts reached."); window.removeEventListener("scroll", onScroll); return; } isLoading = true; const currentOffset = offset[loadCount]; window.loadMoreItems().then(() => { let article = document.querySelector('#widget_1690 > div:nth-last-of-type(2) article'); intersectionObserver.observe(article) loadCount++; }).catch(error => { console.error("Error loading more items:", error); }).finally(() => { isLoading = false; }); } } window.addEventListener("scroll", onScroll); });

Sign up by email to receive news.