Image 1 — Did you know Yerevan has the tallest tower in the Caucasus?
Image 2 — Did you know Yerevan has the tallest tower in the Caucasus?
Image 3 — Did you know Yerevan has the tallest tower in the Caucasus?
▲ 26 r/yerevan

Did you know Yerevan has the tallest tower in the Caucasus?

Visited the Yerevan TV Tower on Nork Marash.

fun fact: at 311.7 m, it's the tallest structure in the entire Caucasus . Its orange and white paint isn't just for looks , it's an air safety requirement, the same as Tokyo Tower.

u/DaoCacaoo — 7 days ago
▲ 5 r/mltraders+1 crossposts

I built a read-only market-data MCP server — research data, no brokerage or execution access

I've open-sourced lse-data-mcp — an unofficial MCP server for the London Strategic Edge market-data API. They publish a solid Python SDK, but I couldn't find an MCP server for their API anywhere, so I wrote one on top of it. it runs locally over stdio. If one already exist and I missed it, I'd genuinely like to know.

What I wanted was for my MCP clients to query market data without brokerage or trade-execution permissions and without writing a throwaway script for every question.

It needs your own API key from London Strategic Edge; they have a free tier . Iam not affiliated with them — just wanted their data available to my agent.

The current 15-tool surface spans about 22000 instruments:

  • OHLCV candles, company profiles, fundamentals, insider transactions, dividends, and splits
  • CFTC Commitments of Traders data, government bond yields, financial statements, the economic calendar, and a general accessor for any macro or bond-yield series
  • option chains, one-minute option candles, and recent options flow
  • instrument, dataset, timeframe, and API discovery

A few MCP-specific design choices: There is nothing to execute against. The upstream SDK surface this wraps has no write endpoints, so read-only is is a property of the API rather than a promise from me. Every tool also carries the readOnlyHint, destructiveHint: false, and idempotentHint annotations, but those are the label, not the guarantee.

Every result uses the same envelope, so a client can always tell whether it saw the whole answer:

{
  "rows": [
    { "timestamp": "2026-01-02T00:00:00Z", "open": 185.1, "high": 188.0, "close": 187.4 }
  ],
  "row_count": 1,
  "truncated": false
}

Large results respect a response-size budget instead of silently dropping rows. When the result does not fit, the server returns the rows it can and says so:

{
  "row_count": 1240,
  "truncated": true,
  "note": "Returned the first 1,240 of 5,000 rows to stay within the 131,072-byte
           response budget. Narrow the window with start and end, or lower limit,
           to see the rest."
}

Dates are validated locally before an API call is made ,so a typo costs no quota. And the server does not cache or persist market-data responses.

Quick start with uv. Get a key from https://londonstrategicedge.com/data/, then:

uvx lse-data-mcp login

Then configure an MCP client to run:

{
  "mcpServers": {
    "lse-data": {
      "command": "uvx",
      "args": ["lse-data-mcp"]
    }
  }
}

login prompts without echoing and stores the key in the operating system's credential store, so the key does not need to appear in the MCP client configuration.

The project is beta and while it is 0.x the tool surface may still change between releases. It provides research data only — no order placement, portfolio access, or trade execution.

One upstream quirk worth knowing up front: daily candles cover the extended session, so close is the last post-market print rather than the 16:00 ET closing auction, and it will differ from Yahoo or your broker by a few cents. Volume coverage also varies between sessions and should be treated as indicative. Both are documented in the README and in the get_candles tool description, and both are open questions I have with the provider.

One design question I would especially value feebdack on : I grouped five small discovery operations behind one get_reference tool, while keeping the actual data calls one-to-one with the SDK. Does that feel like the right MCP granularity or would separate discovery tools be easier for clients to use?

GitHub: https://github.com/OlegDyukel/lse-data-mcp

PyPI: https://pypi.org/project/lse-data-mcp/

u/DaoCacaoo — 2 months ago

A Form 4 last week reported an $846M insider purchase. The same filing's own footnote says it was about $252K.

I read Form 4 filings most days, and last week one of them stopped me cold.

On July 27 the CEO and chair of Navios Maritime Partners filed a routine Form 4 covering three days of buying. read the columns literally and it reports 3268 common units for about $846.3 million.

Navios is a roughly $2.3 billion partnership . That would be a third of the entire company bought in three days, by one person, disclosed with no fanfare. On July23 the units traded about 201000 shares total , call it $15 million for the whole session. The filing claims roughly 55 times the entire day's trading.

The filing contradicts itself, which is is the useful part. The three price lines read:

  • July 23: 1131 units at $748119
  • July 24: 1084 units at $79.019
  • July 27: 1053 units at $77.6356

Then footnote 2 says the July 23 executions ranged from $73.73 to $76.34. So the intended weighted average was $74.8119. Someone typed it without the decimal piont and that single line came out 10000 times too large. Corrected, the filing is 3268 units for about $252000, under a 10b5-1 plan adopted last December. Her second filing that week is clean and adds another $250501. Total real buying : roughly $502500, which is an ordinary scheduled acccumulation and not news at all.

As of today no amendment has been filed , so the erroneous figure is still the version sitting in EDGAR;

Now teh part I would rather not write. I parse Form 4s programmatically and my pipeline took the $846 million line at face value and passed it straight through; I did not catch it for days and I have since fixed the bad records. The filing is the source of the error, but reproducing it is my bug, not the SECs. What made it slip through is that the verification step I built checks a suspicious row against the primary filing and the primary filing agreed with itself. Garbage in, confirmed by the source, garbage out.

The check that would have caught it is embarrassingly simple and does not need the filing at all: compare the reported price to the market price on the transaction date. $748119 against a $76.82 close is a 10000x gap. Same idea as comparing the total against market cap or against the days volume. Any one of those three kills it in a second.

the general lesson I took away is that "verify against the primary source" is not sufficient on its own, because filers make mechanical errors too and the primary source will happily confirm them. A sanity check against something outside the document is a separate and necessary layer.

For anyone else parsing these at scale: what external plausibility checks do you run on Form 4 price and quantity fields? i am now convinced that market-price comparison should be mandatory rather than best- effort but I would like to know what else catches filer typos...

reddit.com
u/DaoCacaoo — 2 months ago

Not every "insider trade" is a Form 4: how the disclosure systems differ

I read Form 4 filings daily , so when a senator's reported palladium ETF purchase made the rounds this week as a "insider trade', the replies asking"where's the Form 4?" caught my eye. There isn't one and there was never going to be one...

The phrase "insider trade" mixes together several different legal systems. Public office alone does not make someone a corporate insider under Section 16 -the disclosure that applies depends on the person's relationship to the issuer or the government office. Here's the map:

Disclosure system Who files Reporting speed What the public gets Best interpreted as
SEC Form 4 directors, officers and beneficial owners of more than 10% of a covered issuer class generally by the end of the second business day security, transaction code and date, quantity, price where applicable, ownership type and resulting holdings a relatively timely issuer-insider ownership change
House/ Senate PTR members, officers, and certain covered congressional employees within 30 days after notice but never later than 45 days after the transaction asset, transaction type and date, owner, and a value range rather than an exact amount a lagged public-conflict and behavior disclosure
OGE Form 278-T senior executive-branch public filers, including the President, Vice President , senate-confirmed appointees and other covered senior officials within 30 days after notice but never later than 45 days after the transaction reportable asset, transaction type and date and value range; public access may be request-based executive-branch conflict transparency, not a Form 4 substitute
OGE Form 450 less-senior federal employees in positions with conflict-sensitive duties new entrant and annual reporting, rather than a public transaction feed financial interests for agency ethics review Internal conflict screening; the report is confidential
State/local disclosure governors, legislators, mayors, and other officials covered by the applicable jurisdiction varies; often annual, plus assuming- and leaving-office reports varies by jurisdiction; California Form 700, for example, publicly reports economic interests jurisdiction-specific conflict map, usually not a near-real-time trade feed

The same security can go into different systems . An officer of Section 16 buying shares of his own company make an obligation on Form 4. A senator who buys the same security has a congressional obligation. A cabinet official uses OGE Form 278-T. A maoyr's obligation depends on the law of the state and the city.

That is why Senator John Boozman bought PALL. He needs to tell the Senate about it . He cannot just buy it and forget about it. If he is is an officer, a director or has more than 10% of the company, he needs to fill out a different paper.

The practical difference when you actually use these datasets:

  • Form 4 is generally faster and more precise, which makes it more useful for monitoring issuer-insider behavior.
  • Congressional and executive disclosures are usually better suited to conflict screening, role overlap and longer-horizon research;
  • a newly published disclosure may describe a transaction from weeks earlier. Newly disclosed is not newly traded;
  • None of these filings, by itself, establishes motive, misuse of information or illlegal insider trading.

Would you combine these sources in one research feed? or keep corporate-insider signals separate from public-official conflict disclosures?

reddit.com
u/DaoCacaoo — 3 months ago