2010-07-30 33 views
8

Cho một tập hợp dữ liệu của các cặp tiền tệ khác nhau, làm cách nào để tính toán tỷ lệ fx ngụ ý cho một cặp không được cung cấp trong tập dữ liệu?Thuật toán để xác định tỷ giá hối đoái

Ví dụ, nói cơ sở dữ liệu của tôi/table trông như thế này (dữ liệu này được fudged):

GBP x USD = 1.5 
USD x GBP = 0.64 
GBP x EUR = 1.19 
AUD x USD = 1.1 

Chú ý rằng (GBP, USD) = 1/(USD, GBP)!.

Tôi mong chờ những kết quả như sau:

print rate('GBP','USD') 
> 1.5 

print rate('USD','GBP') 
> 0.64 

print rate('GBP','EUR') 
> 1.19 

#now in the absence of an explicit pair, we imply one using the inverse 
print rate('EUR','GBP') 
> 0.84 

Đây là những trường hợp đơn giản, nó được thú vị hơn:

#this is the implied rate from (GBP,EUR) and (GBP,USD) 
print rate('EUR','USD') 
> 1.26 

Hoặc một ví dụ phức tạp hơn là tìm các dịch hiệu quả nhất bằng 3 hoặc nhiều cặp:

print rate('EUR','AUD') 
> 1.38 

Tôi nghĩ rằng chi tiết về lập trình lại khía cạnh của vấn đề này. Tôi tưởng tượng có một sự đệ quy hiệu quả hay thông minh có thể được thực hiện ở đây. Yêu cầu duy nhất là số lượng ít nhất các cặp được sử dụng để đến cặp yêu cầu (điều này là để giảm lỗi). Nếu không có đảo ngược rõ ràng được đưa ra, sau đó đảo ngược một cặp chi phí bạn không có gì.

Động lực
Trong thế giới tài chính lý tưởng, thị trường tiền tệ hiệu quả. Trong thực tế, đó là 99% sự thật. Thông thường, các cặp tiền lẻ không được trích dẫn hoặc chúng được trích dẫn không thường xuyên. Nếu một báo giá rõ ràng tồn tại, chúng ta phải sử dụng nó trong các phép tính tùy ý của chúng ta. Nếu không, chúng ta phải ngụ ý cặp chính xác nhất, đến nhiều vị trí thập phân nhất có thể. Hơn nữa, chúng không phải lúc nào cũng nhân với 1 (thực ra, chúng không bao giờ nhân với 1); điều này phản ánh sự chênh lệch giá mua/bán trên thị trường. Vì vậy, chúng tôi giữ nhiều cặp như chúng tôi có thể theo cả hai hướng, nhưng muốn có thể mã nói chung cho tất cả các loại tiền tệ.

Tôi nghĩ rằng tôi có một giải pháp phong nha, bạo lực được triển khai. Nó hoạt động, nhưng tôi nghĩ rằng vấn đề là thú vị và đã tự hỏi nếu có ai khác nghĩ rằng nó là thú vị/đầy thử thách. Cá nhân tôi làm việc bằng Python nhưng nó tập luyện nhiều hơn là thực hiện, vì vậy mã psuedo là "đủ tốt".

+1

Đây là một nhiệm vụ rất dễ dàng trong ProLog :). Cần có thêm suy nghĩ trong các thuật toán thủ tục. Dự đoán của tôi là bạn phải tạo một cây chuyển đổi, nút trên cùng là tiền tệ nguồn và lá - đơn vị tiền tệ có thể cuối cùng trong điều kiện cho mỗi mạch từ trên xuống dưới mỗi đơn vị tiền tệ chỉ xuất hiện một lần. Thuật toán sau đó sẽ chọn tỷ lệ thu được kết quả tối thiểu thu được. Phương pháp đệ quy. – AlexanderMP

Trả lời

12

Bạn đang tìm đường đi ngắn nhất trong đồ thị có hướng, nơi tiền tệ là các đỉnh và tỷ giá hối đoái đã cho là các cạnh. Nếu tỷ giá hối đoái chỉ được cung cấp cho một hướng, bạn có thể thêm một tỷ giá cho hướng ngược lại với chi phí cao hơn.

+0

oh, tôi quên tất cả về đồ thị. Chơi lô tô! Bạn đã cho anh ta câu trả lời :) – AlexanderMP

Các vấn đề liên quan